DELETE
DELETE의 개념
- DELETE는 저장된 행을 삭제하는 DML 명령어
- WHERE 절로 삭제할 행을 지정, 생략 시 모든 행이 삭제
- 행만 삭제되고 테이블 구조는 유지
- 삭제 결과는 COMMIT 또는 ROLLBACK으로 확정
DELETE FROM 테이블명
WHERE 조건식;
MERGE
MERGE의 개념
- MERGE는 원본 데이터로 대상 테이블에 INSERT·UPDATE·DELETE를 한 번에 수행하는 DML
- 일치하면 UPDATE, 일치하지 않으면 INSERT를 수행
- 두 테이블을 동기화하거나 대량 반영할 때 활용
- UPDATE와 INSERT를 결합한 UPSERT 개념임
MERGE 기본 문법
- MERGE INTO : 대상 테이블을 지정
- USING : 원본 데이터를 지정
- ON : 비교 조건을 지정
- WHEN MATCHED THEN : 일치하는 행에 수행할 작업
- WHEN NOT MATCHED THEN : 일치하지 않는 행에 INSERT를 수행
MERGE INTO 대상테이블 T
USING 원본테이블 S
ON (T.키컬럼 = S.키컬럼)
WHEN MATCHED THEN
UPDATE SET
T.컬럼1 = S.컬럼1,
T.컬럼2 = S.컬럼2
WHEN NOT MATCHED THEN
INSERT (컬럼1, 컬럼2)
VALUES(S.컬럼1, S.컬럼2);
SELECT 심화
WHERE 절 심화
SQL 연산자(BETWEEN/IN/LIKE)
1) BETWEEN
- 값이 특정 범위에 있는지 확인하는 연산자
- 경계값을 포함(이상 ~ 이하)
컬럼 BETWEEN 하한값 AND 상한값
2) IN/NOT IN
① IN
- 값이 목록 중 하나와 일치하는지 확인하는 연산자
- OR 조건을 간결히 표현
컬럼 IN(값1, 값2, 값3,...)
② NOT IN
- 목록 어디에도 일치하지 않는 행을 반환하는 연산자
- IN의 부정형
컬럼 NOT IN(값1, 값2, 값3,...)
3) LIKE
컬럼 [NOT] LIKE '패턴'
① 와일드카드 종류
| 와일드카드 | 의미 |
|---|
| '%' | 0개 이상의 임의 문자 - 글자 수 제한 없음 |
| '_' | 정확히 1개의 임의 문자 - 반드시 한 글자여야 함 |
IS NULL/IS NOT NULL
- NULL은 비교 연산자(=, <>)로 비교할 수 없음
- NULL 여부는 IS NULL/IS NOT NULL로 확인
| 연산자 | 의미 |
|---|
| IS NULL | 값이 NULL인 행을 조회 |
| IS NOT NULL | 값이 NULL이 아닌 행을 조회 |
ORDER BY/DISTINCT
OREDER BY
- 결과를 특정 컬럼 기준으로 정렬하는 절
- SELECT 문에서 마지막에 실행
- 정렬 기준이 없으면 DBMS가 임의 순서로 반환
- 옵션 종류
| 옵션 | 의미 | 기본값 |
|---|
| ASC | 오름차순(작은 값 -> 큰 값) | 기본값(생략 가능) |
| DESC | 내림차순(큰 값 -> 작은 값 | 생략 불가(반드시 명시) |
SELECT 컬럼1, 컬럼2,...
FROM 테이블명
WHERE 조건식
ORDER BY 컬럼명 [ASC|DESC];
DISTINCT
- 중복 행을 제거하고 유일한 값만 반환하는 키워드
- SELECT 절 가장 앞에 작성
- 여러 컬럼이면 모든 컬럼 값이 같을 때만 중복으로 봄
- NULL도 하나의 값으로 취급되어 중복 NULL은 하나로 합쳐짐
SELECT DISTINCT 컬럼1, 컬럼2,...
FROM 테이블명;