본문 바로가기

Data/MariaDB

DB] DML 1 - INSERT / UPDATE / DELETE / UPSERT

 

DML (Data Manipulation Language) 데이터 조작어

: 데이터베이스의 테이블에 들어있는 데이터를 삽입 / 수정 / 삭제 / 조회 하는 명령어

 

INSERT : 데이터 삽입

UPDATE : 데이터 수정

DELETE : 데이터 삭제

UPSERT : 입력되는 KEY가 중복일 경우 UPDATE, 아닐 경우 INSERT

SELECT : 데이터 조회

 

1. 데이터 삽입 (INSERT)
INSERT INTO [테이블명] ([컬럼명]) VALUES ([컬럼에 해당하는 값]);

보기 쉬우라고 줄바꾸기를 해놨지만 붙여써도 된다.

각 컬럼에 해당하는 값들을 컬럼 순서대로 써준다.

테이블의 모든 컬럼에 데이터를 넣어줄 땐 컬럼 자리에 * 을 써주면 된다.
하지만 DB는 혼자 보는 것이 아니기 때문에 컬럼명을 모두 써주는 것이 좋고,
* 을 사용하면 values를 컬럼이 테이블에 들어가있는 순서대로 써주어야 하기 때문에 오류가 날 수 있다.

특정 컬럼만 적어주면 그 값들만 넣을 수 있다. ( 값을 넣지 않은 컬럼은 null 이 들어간다.)

8개의 컬럼 중 4개의 컬럼에만 값을 넣어주었다.
commission(값을 넣지 않은 컬럼)에 null

 

2. 데이터 수정
UPDATE [테이블명] SET [컬럼명] = [변경할 값] where [조건];

부서번호(depart_no)가 null 인 곳들의 depart_no 를 'dev002'로 수정해라.

UPDATE [테이블] : [테이블]을 수정해라
SET [컬럼명] = [변경할 값] : 이 값으로 세팅
WHERE [조건] : 이 조건인 곳을

- 테이블의 데이터를 조작할 때 where 절을 통해서 조건을 줄 수 있다.

 

3. 데이터 삭제
DELETE FROM [테이블명];

테이블 employees 에서 first_name(컬럼) 이 null 인 곳들을 삭제해라.

테이블 전체를 삭제할 때는 조건을 주지 않는다.

 

4. UPSERT
upsert : 값이 없으면 넣고(insert), 값이 있으면 수정(update) 한다.

INSERT INTO [테이블명(컬럼) VALUES (컬럼 값) ON DUPLICATE KEY UPDATE (변경할 값);

그냥 insert 문에 on duplicate key update 를 붙인 것.

우선 emp_no 가 중복을 허용하지 않는 제약조건이 걸려있다는 전제하에

emp_no 에 112가 없다면 insert 문에 있는 값들을 넣는다.

하지만 emp_no 에 112가 이미 있다면 on duplicate key 뒤에 있는 update 구문을 실행한다.

나는 이미 테이블에 emp_no = 112를 넣어놨으므로 왕만두가 왕감자로 수정된다.

 

> DML 2 에서 SELECT 문을 자세히 다룬다.

https://bamdal.tistory.com/entry/DB-DML-2-select