본문 바로가기
SQL

SQL DML(데이터 조작어)

by Queen2 2022. 9. 13.
728x90
반응형
SQL Type 명령문
Data Manipulation Language

데이터 조작어
INSERT
UPDATE
DELETE
MERGE
Transaction Control Language

트랜젝션 제어어
COMMIT
ROLLBACK
SAVEPOINT

 

1) INSERT  

컬럼명을 지정 하는 경우))

INSERT INTO 테이블명(컬럼명,컬럼명2)      #컬럼과 값의 개수, 데이터 타입이 동일해야함
VALUES (값,값2)
  • 지정되지 않은 컬럼의 값은 NULL처리됨 (NOT NULL조건이 없는 전제아래)

예시) INSERT INTO TABLE(A,B) VALUES(1,2)이면 TABLE의 C컬럼은 NULL처리가 되는 것

 

컬럼명을 지정 하지 않는 경우))

INSERT INTO 테이블명      #테이블에 컬럼 값이 2개 일때
VALUES (값,값2)

단, 컬럼 개수에 맞춰서 VALUE값을 순서대로 지정해야 함

 

더보기

**SELECT문의 결과는 테이블 형식으로 나오지만, DML의 결과는 N개의 행이 추가/삭제/수정되었습니다로 출력됨

 


1.1) 단일 테이블에 복수 행을 저장할 때  >  Subquery이용

  • CTAS 기존에 존재하는 테이블을 이용해 새 테이블을 만드는 방법
CREATE TABLE 테이블명 [(컬럼명,컬럼명2)]   #CTAS(Create table as subquery)
AS
Subquery;

 

  1. 껍데기(컬럼 구조만 가져오는 방법)

-  거짓 조건을 WHERE구문에 제시함 (WHERE 1=2처럼 명백히 거짓인 구문 제시)

CREATE TABLE dpt
AS
SELECT * FROM dpt
WHERE 1=2;

 위와 같이 비어있는 dpt테이블을 먼저 만든 이후, 값을 추가함

INSERT INTO dpt
SELECT dno,dname,lc
FROM dept;

 

2. 데이터와 구조를 함께 가져오는 방법

CRERATE TABLE MY_DEP
AS
SELECT * FROM DEPT;

** CTAS에서 NOT NULL을 제외한 제약조건은 복사가 안됨

 

 

1.2) 다중 테이블에 복수 행을 저장할 때 - INSERT ALL

INSERT ALL
 [WHEN 조건식 THEN]
 INTO 테이블1 VALUES ( 컬럼명,컬럼명2,...,컬럼명n)
 [WHEN 조건식2 THEN]
 INTO 테이블2 VALUES ( 컬럼명,컬럼명2,...,컬럼명n)
Subquery;
  • WHEN 조건은 선택적으로 사용 가능
  • CTAS로 비어있는 테이블을 각각 만들고 이후에 INSERT ALL구문으로 복수 행을 각각 추가 가능함
  • 이때, INSERT FIRST를 사용하면 선행되는 조건을 만족하면 선행 테이블에만 저장됨

 

2) UPDATE

: 컬럼을 수정하는 기능에 해당함

UPDATE 테이블명
SET 컬럼명=변경할값
[WHERE 조건식];
  • 여기서 변경할 값에 Subquery 활용 가능
UPDATE mydept
SET dname= ( SELECT name FROM dept WHERE dept = 20)
 ,loc= ( SELECT loc FROM dept WHERE dept=90)
WHERE dept = 100;

 

3) DELETE   

DELETE FROM 테이블명
[WHERE 조건식];

 

4) MERGE  

: 구조가 동일한 2개 테이블을 비교해 하나의 테이블로 merge 하기위해 사용

 

MERGE INTO 테이블1 별칭
USING (테이블명2|뷰|서브쿼리) 별칭
ON (조인조건)

#결과가 저장되는 테이블1을 on 조인조건에 따라 테이블 2와 합쳐라

WHEN MATCHED THEN        #조건이 일치하면 udate문을 실행하라
 UPDATE SET
 컬럼명=값,
 컬럼명1=값1
 [WHERE 조건식]
 [DELETE WHERE 조건식]
 
WHEN NOT MATCHED THEN	#조건이 일치하지 않으면 insert문을 실행하라
 INSERT ( 컬럼 목록)
 VALUES ( 값 목록 )
 [WHERE 조건식]
728x90
반응형

댓글