쌓고 쌓다
[SQL] INSERT, UPDATE, DELETE 본문
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%';
예제2 : 'New'로 시작하는 도시 상위 5개를 삭제
DELETE FROM city_popul WHERE city_name LIKE 'NEW%' LIMIT 5;
DELETE문 또한 WHERE 절 없이 사용하면 모든 행 데이터가 삭제된다.
모든 내용은 '혼자 공부하는 SQL' 도서를 학습후 정리한 내용입니다.
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 변수 사용 + LIMIT (0) | 2022.06.26 |
---|---|
[SQL] 데이터 형식 (0) | 2022.06.26 |
[SQL] MySQL UPDATE, DELETE 사용 설정 방법 (Error Code : 1175) (0) | 2022.06.25 |
[혼공S] CH.3-2 요약 (0) | 2022.06.25 |
[SQL] ORDER BY, LIMIT, DISTINCT, GROUP BY, HAVING, 집계함수 (0) | 2022.06.24 |