이번에는 데이터베이스에 값을 변경하기 위한 INSERT, UPDATE, DELETE를 알아본다.
데이터 입력 INSERT
CREATE TABLE hongong (toy_id INT, toy_name CHAR(4), age INT);
INSERT INTO hongong VALUES (1, '우디', 25);
1열에서는 테이블을 생성하였고, 해당 테이블에 대한 값을 2열에서 INSERT한 모습이다.
해당 SQL 문에서는 모든 열에 해당하는 값을 넣어주었기 때문에 생략된 부분이 존재한다. 아래를 보자.
INSERT INTO hongong (toy_id, toy_name) VALUES (2, '버즈');
이렇게 원하는 열에만 데이터를 넣을 수도 있다.
자동으로 증가하는 AUTO_INCREMENT
AUTO_INCREMENT로 열을 지정했다면 해당 열은 무조건 PK가 되어야한다. 그리고 값을 INSERT할 때는 NULL로 INSERT 해주어 자동으로 값이 채워지게 해야한다.
CREATE TABLE hongong2 (
toy_id INT AUTO_INCREMENT PRIMARY KEY,
toy_name CHAR(4),
age INT);
INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
이렇게 되면 자동으로 toy_id에는 1의 값이 부여될 것이다.
SELECT LAST_INSERT_ID();
해당 키워드를 통해서 어느 숫자까지 INCREMENT 되었는지 확인할 수 있다!!
이 외에도 INCREMENT를 1이 아닌 3씩 되게 하거나, 처음 시작을 1이 아닌 100으로 하는 등 여러가지 설정을 할 수 있지만, 딱히 쓸 경우가 보이지 않아 정리하지 않는다.
다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
다른 테이블의 데이터를 옮겨와야하는 경우라면 이 구문을 이용할 수 있다.
CREATE TABLE city_popul (city_name CHAR(35), population INT);
INSERT INTO city_popul
SELECT Name, Population FROM world.city;
word 데이터베이스의 city 테이블의 데이터에서 Name과 Population의 열만 뽑아와 city_popul에 넣는 SQL 문이다.
데이터 수정 UPDATE
UPDATE는 기존의 데이터를 수정한다.
UPDATE city_popul
SET city_name = '서울'
WHERE city_name = 'Seoul';
city_name이 Seoul인 데이터의 city_name을 서울로 바꾸는 것이다. 이는 해당 조건에 충족하는 모든 데이터가 변경되게 되므로 주의해야한다.
하나가 아닌 여러 열도 수정할 수 있다.
UPDATE city_popul
SET city_name = '뉴욕', population = 0
WHERE city_name = 'New York';
데이터 삭제 DELETE
DELETE FROM city_popul WHERE city_name LIKE 'New%';
WHERE 이하 절에 부합하는 데이터는 모두 삭제된다.
대용량 테이블의 삭제
대용량 테이블을 모조리 삭제하기 위해서는 총 3가지 방법이 존재한다.
- DELETE FROM [테이블 이름];
- DROP TABLE [테이블 이름];
- TRUNCATE TABLE [테이블 이름];
이 세가지에는 명확한 차이가 존재한다.
DELETE는 일부 삭제할 때 사용하자. 대용량 데이터를 삭제할 때는 시간이 다른 두 개보다 오래걸린다.
DROP은 테이블 자체를 버린다.
TRUNCATE는 테이블을 유지한다.
각 명령어를 필요에 맞게 사용하면 될 것 같다.
'CS > DB' 카테고리의 다른 글
[혼공SQL] MySQL의 데이터 형식 (0) | 2024.01.15 |
---|---|
[혼공SQL] 혼공단 11기 - 2주차 미션 인증 (1) | 2024.01.11 |
[혼공SQL] SQL 기본 문법 SELECT (0) | 2024.01.10 |
[혼공SQL] SQL 기본 문법과 SELECT (0) | 2024.01.10 |
[혼공SQL] 혼공단 11기 - 1주차 미션 인증 (3) | 2024.01.04 |