본문 바로가기
개발/Database

데이터 변경을 위한 SQL 쿼리문 : INSERT, UPDATE, DELETE

by 안뇽! 2022. 2. 13.
반응형

 

혼자공부하는 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