CS/DB

[혼공SQL] 데이터 변경 SQL

F12:) 2024. 1. 11. 12:38

이번에는 데이터베이스에 값을 변경하기 위한 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는 테이블을 유지한다.

 

 

각 명령어를 필요에 맞게 사용하면 될 것 같다.