쌓고 쌓다

[SQL] INSERT, UPDATE, DELETE 본문

프로그래밍/SQL

[SQL] INSERT, UPDATE, DELETE

승민아 2022. 6. 25. 22:51

INSERT

기본 문법

INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

-> 테이블 이름 다음에 나오는 열은 생략이 가능하다. 대신, 나오는 값들의 순서 및 개수는 테이블의 정의와 같아야 함.

 

예제(1)

USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
INSERT INTO hongong1 VALUES(1, '우디', 25);

 

예제(2)

아이디(toy_id)와 이름(toy_name)만 입력하고 나이(age)는 입력하고 싶지 않다면

테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다.

INSERT INTO hongong1 (toy_id, toy_name) VALUES (2, '버즈');

 

또는 NULL을 쓴다.

INSERT INTO hongong1 VALUES (4,'TEST', NULL);

 

 

예제(3)

열의 순서를 바꿔서 입력하고 싶다면 열 이름과 값을 원하는 순서로 써준다.

INSERT INTO hongong1 (toy_name, age, toy_id) VALUES ('제시', 20, 3);

 

 

AUTO_INCREMENT

: 열의 정의할 때 1부터 증가하는 값을 입력해준다. INSERT 할 때 해당 열이 없다고 생각하고 입력하면 된다.

-> 자동 증가하는 부분은 NULL 값으로 채워주면 된다.

 

단, 주의할 점은 AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해야 한다.

CREATE TABLE hongong2 (toy_id INT AUTO_INCREMENT PRIMARY KEY, toy_name CHAR(4), age INT);

 

예제(1)

INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
INSERT INTO hongong2 VALUES (NULL, '슬링키', 22);
INSERT INTO hongong2 VALUES (NULL, '렉스', 21);

 

예제(2) - 현재 어느 숫자까지 증가했는지 확인

SELECT LAST_INSERT_ID();

 

예제(3) - AUTO_INCREMENT로 입력되는 값을 지정(설정)

ALTER TABLE hongong2 AUTO_INCREMENT=100;
INSERT INTO hongong2 VALUES (NULL, '재남', 35);

 

예제(4) - AUTO_INCREMENT로 증가되는 값을 지정(설정)

SET @@auto_increment_increment=10;

보통 테이블을 만들 때 같이 설정해줌.

시스템 변수는 앞에 @@가 붙는 것이 특징.

 

+ 특정, 전체 시스템 변수 보기

전체 시스템 변수

SHOW GLOBAL VARIABLES;

 

전체 시스템 변수

특정 시스템 변수

SELECT @@auto_increment_increment ;

 

INSERT 여러 데이터 입력을 한 줄로 작성

INSERT INTO 테이블_이름 VALUES (값1, 값2, ...) (값3, 값4, ...), (값5, 값6, ...);

 

예제

INSERT INTO hongong2 VALUES (NULL, '테스트1', 10), (NULL, '테스트2', 20);

 

+ DESC로 테이블의 구조 확인

DESC world.city;

Describe의 약자 DESC로 CREATE TABLE을 어떻게 했는지 확인.

위의 예제는 world 데이터 베이스의 city 테이블을 보는 것임

 

INSERTO INTO ~ SELECT : 다른 테이블의 데이터를 한 번에 입력

 

먼저 world 데이터베이스의 city 테이블의 데이터를 5개만 보자.

SELECT * FROM world.city LIMIT 5;

여기서 도시이름(Name)과 인구(Population)을 가져와 볼 것이다.

 

테이블 city_popul을 만든다.

 

CREATE TABLE city_popul (city_name CHAR(35), population INT);

 

INSERT INTO ~ SELECT를 이용해 Name,과 Population만 가져온다.

( SELECT 문의 열 개수는 INSERT할 테이블의 열 개수와 같아야 한다. )

INSERT INTO city_popul SELECT Name, Population FROM world.city;

4079개를 레코드했다.

 

결과

잘 가져온 것을 확인할 수 있다.

 

UPDATE : 데이터 수정

UPDATE 테이블_이름 SET 열1=값, 열2=값2, ... WHERE 조건;

(MySQL에서 기본적으로 UPDATE를 허용하지 않기에 별도의 설정이 필요하다.)

city_name이 Seoul인 데이터가 있다. 이것을 한글인 서울로 바꿔볼 것이다.

 

Seoul을 서울로 변경.

UPDATE city_popul SET city_name='서울' WHERE city_name='Seoul';

 

한 번에 여러 개의 열을 변경도 가능하다.

-> 한글 이름 뉴욕으로, 인구를 -1로 변경하는 작업

UPDATE city_popul SET city_name='뉴욕', population=-1 WHERE city_name='New York';

 

주의! WHERE가 없는 UPDATE 문은 테이블의 모든 행이 SET 설정한 값으로 변경될 것이다.

 

DELETE : 데이터 삭제

행 단위로 삭제가 이루어진다.

DELETE FROM 테이블이름 WHERE 조건;

 

예제 : city_popul 테이블에서 'New'로 시작하는 도시를 삭제

DELETE FROM city_popul WHERE city_name LIKE 'NEW%';

11개 행이 삭제됨

 

예제2 : 'New'로 시작하는 도시 상위 5개를 삭제

DELETE FROM city_popul WHERE city_name LIKE 'NEW%' LIMIT 5;

 

DELETE문 또한 WHERE 절 없이 사용하면 모든 행 데이터가 삭제된다.

 

모든 내용은 '혼자 공부하는 SQL' 도서를 학습후 정리한 내용입니다. 

Comments