⚒️DML(Data Manipulation Language)
- 데이터 조작 언어로 테이블에 값을 삽입 (INSERT), 수정 (UPDATE), 삭제 (DELETE)하는 구문을 말함
INSERT
- 테이블에 새로운 행을 추가하여 행 개수를 증가시키는 구문
- INSERT시 VALUES 대신 서브쿼리 이용 가능
1) INSERT INTO 테이블명 VALUES(데이터, 데이터, 데이터, ...)
- 테이블에 있는 모든 컬럼에 대한 값을 INSERT할 때 사용
- INSERT 하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능.
- 단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 함.
2) INSERT INTO 테이블명 (컬럼명, 컬럼명, 컬럼명...) VALUES (데이터, 데이터, 데이터,...);
- 테이블에 내가 선택한 컬럼에 대한 값만 INSERT 할 때 사용
- 선택 안된 컬럼은 값이 NULL이 들어감 (DEFAULT 존재 시 DEFAULT값으로 삽입됨)
INSERT ALL
- INSERT시 서브쿼리가 사용하는 테이블이 같은 경우
두 개 이상의 테이블에 INSERT ALL을 이용하여 한 번에 삽입 가능
- 단, 각 서브쿼리의 조건절이 같아야 함
UPDATE
-
테이블에 기록된 컬럼의 값을 수정하는 구문으로 테이블의 전체 행 개수에는 변화가 없음
-
UPDATE 테이블명 SET 컬럼명 = 바꿀값 [WHERE 컬럼명 비교연산자 비교값];
-
UPDATE 테이블명 SET 컬럼명 = (서브쿼리)
MERGE
- 구조가 같은 두 개의 테이블을 하나의 테이블로 합치는 기능 제공
- 두 테이블에서 지정하는 조건의 값이 존재하면 UPDATE되고 조건의 값이 없으면 INSERT함
DELETE
- 테이블의 행을 삭제하는 구문으로 테이블의 행 개수가 줄어듦
- 삭제 시 FOREIGN KEY 제약조건으로 컬럼 삭제가 불가능한 경우 제약조건을 비활성화 할 수 있음
- DELETE FROM 테이블명 WHERE 조건설정
TRUNCATE
- 🚨DDL
- 테이블 전체 행 삭제 시 사용하는 DDL로
DELETE보다 수행 속도가 빠르고 ROLLBACK을 통해 복구 불가능
- 또한 DELETE와 마찬가지로 FOREIGN KEY 제약조건일 때는 적용 불가능하기 때문에
제약 조건을 비활성화 해야 삭제할 수 있음