반응형
혼자공부하는 SQL 책 3장까지 완료
데이터 변경을 위한 SQL문은 INSERT, UPDATE, DELETE가 있음
공부한내용을 다시 적으며 복습이 되기를 기대함
INSERT 데이터 삽입
AUTO_INCREMENT를 이용한 증가값 설정
INSERT는 데이터 입력을 위한 쿼리문인데, data_id등 저절로 증가하는 값을 만들때 AUTO_INCREMENT를 이용한다.
AUTO_INCREMENT로 지정한 열은 반드시 PRIMARY KEY로 지정해줘야한다.
@@를 이용하여 시스템변수를 핸들링할 수 있는데, 다음과 같이 증가값을 변경할 수 있다.
...(생략)..
ALTER TABLE table1 AUTO_INCREMENT = 1000; -- 시작값을 1000으로 지정
SET @@auto_increment_increment=3; -- 증가값을 3으로 지정(원래는 기본값 1임)
다른 테이블의 데이터를 한번에 입력하는 INSERT INTO ~ SELECT
mysql설치시 생성되는 world 데이터베이스를 이용하여 실습 할 수 있다.
world db가 없다면 이 페이지 보고 다운받으면 됨
-- INSERT INTO 테이블 (열1, 열2,...) SELECT ;
INSERT INTO city_popul SELECT Name, Population FROM world.city
UPDATE 데이터 수정
Seoul을 서울 로 수정해보자.
-- UPDATE 테이블 SET 열1=값1,열2=값2 WHERE 조건 ;
UPDATE city_popul SET city_name = '서울' WHERE city_name = 'Seoul';
Error Code: 1175 가 발생하면 아래 명령어 타이핑
SET SQL_SAFE_UPDATES = 0;
WHERE가 없는 UPDATE문
모든 행의 값이 변경된다. 일반적으로 이럴 일은 없으니, WHERE문을 생략하는 실수는 없어야 할 것
아래와 같이 입력하면 해당 테이블의 도시이름이 싹~~다 '서울' 로 변경된다.
UPDATE city_popul SET city_name = '서울'
DELETE 데이터 삭제
앞에 'New'가 들어가는 도시들을 삭제하기위해 다음과 같이 입력할 수 있다.
뉴욕, 뉴캐슬, 뉴올리언스 정도가 있겠네
DELETE FROM city_popul WHERE city_name LIKE 'NEW%';
DELETE FROM city_popul WHERE city_name LIKE 'NEW%' LIMIT 5; --상위 5건만 삭제
대용량 테이블삭제 DROP, DELETE, TRUNCATE
몇억건의 데이터가 있는 대용량 테이블이 필요가 없어졌을때
책 저자는 444,611개의 데이터가 있는 테이블을 DELETE로 삭제하는데 3.5초 걸렸다고 함.
DELETE FROM table1; -- 삭제시간이 데이터 양에 비례함, 빈 테이블만 남음
DROP TABLE table2; -- 순식간에 삭제됨. 테이블 자체를 없애버림
TRUNCATE TABLE table3; -- DELETE와 동일한 효과, 빈 테이블만 남는다. 속도는 빠름
반응형
'개발 > Database' 카테고리의 다른 글
MySQL 변수사용 (0) | 2022.02.25 |
---|---|
MySQL 데이터 형식 (0) | 2022.02.25 |
SELECT ~~ GROUP BY (0) | 2022.02.10 |
ORDER BY (0) | 2022.02.09 |
기본적인 WHERE 절 (0) | 2022.02.09 |