본문 바로가기
데이터베이스(DB)/SQLD

[SQLD 2-3-1] 관리 구문 - DML

by 송기동 2024. 6. 18.
728x90

DML (Data Manipulation Language)

- 데이터의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE)

- 저장(Commit) 혹은 취소(Rollback) 반드시 필요

 

# INSERT

- 테이블에 행을 삽입할 때 사용

- 한 번에 한 행만 입력가능(SQL Server 여러 행 동시 삽입 가능)

- 하나의 컬럼에는 한 값만 삽입 가능

- 컬럼별 데이터타입과 사이즈에 맞게 삽입

- INTO 절에 컬럼명을 명시하여 일부 컬럼만 입력 가능. 작성하지 않은 컬럼은 NULL 이 입력됨

- 전체 컬럼에 대한 데이터 입력 시 테이블명 뒤의 컬럼명 생략 가능

# 문법
INSERT INTO 테이블 VALUES(값1, 값, ...);	-- 전체 컬럼의 값을 입력
INSERT INTO 테이블(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ...);	-- 선택한 컬럼만 데이터 입력

 

※ 서브쿼리를 사용하여 여러 행을 INSERT 가능하다.

 

# UPDATE

- 데이터 수정할 때 사용

- 컬럼 단위 수행

- 다중 컬럼 수정 가능

# 문법
-- 단일컬럼 수정
UPDATE 테이블명
SET 수정할컬럼명 = 수정값
WHERE 수정 대상 식별조건;

-- 다중컬럼 수정
UPDATE 테이블명
SET 수정할컬럼명1 = 수정값1,
SET 수정할컬럼명2 = 수정값2,
...
WHERE 수정 대상 식별조건;

-- WHERE 절을 사용하지 않으면 테이블 전체 데이터가 수정됨

 

※ 서브쿼리를 사용하여 다중컬럼 수정도 가능하다. (주의할 점 : 서브쿼리의 결과가 수정할 각 행의 값마다 하나씩 전달돼야 함)

# DELETE

- 데이터를 삭제할 때 사용

- 행 단위 실행

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

-- WHERE 절로 삭제할 행 선택 가능

 

# MERGE

- 데이터 병합

- 참조 테이블과 동일하게 맞추는 작업(참조 테이블의 데이터 입력, 참조테이블의 값으로 수정 등)

- INSERT, UPDATE, DELETE 작업을 동시에 수행

MERGE
 INTO 타겟 테이블명
USING 참조 테이블명
   ON (연결조건)
 WHEN MATCHED THEN
    UPDATE
       SET 수정할 칼럼명1 = 수정될 새로운 값1
       [ , 수정할 칼럼명2 = 수정될 새로운 값2, ... ]
 WHEN NOT MATCHED THEN
    INSERT [(칼럼1, 칼럼2, ...)]
    VALUES (값1, 값2, ...);

 

ON(연결조건) 이 일치하는 경우 WHEN MATCHED THEN 뒤의 UPDATE 절이 수행되고,

ON(연결조건) 이 일치하지 않는 경우 WHEN NOT MATCHED TEN 뒤의 INSERT 절이 수행된다.

728x90