[홍쌤의 데이터랩, SQLD n과목 완벽 정리] 영상를 개인이 정리하여 [원작자의 허가 이후] 올린 글이며,
[개인이 추가로 정리한 내용]이 포함되어 있습니다.
목차
DML (Data Manipulation Language)
1. INSERT
- 전체 컬럼 데이터 입력시 컬럼명 생략 가능
- INTO 절에 컬럼명을 명시하여 일부 컬럼만 입력 가능
=> 컬럼에 NULL을 넣는 행위와, 입력하지 않는 행위 구분
- 입력 값 타입이 컬럼과 다르면 자료형 호환될 시 자동 형변환, 당연히 권장 X
- 컬럼명 생략 시, 입력 값 개수와 컬럼 개수가 같지 않으면 에러
=> 왼쪽부터 n개 컬럼에만 INSERT 하는 동작 아님
e.g.
1) 기본형
INSERT INTO t1 VALUES(v1, v2, ...);
INSERT INTO t1(c1, c2, ...) VALUES(v1, v2, ...);
2) 서브쿼리 활용(Oracle)
INSERT INTO t1(v1, v2,v3)
SELECT v1, v2, v3
FROM t2
WHERE 조건;
2. UPDATE
- 컬럼 단위 update 동작 수행
e.g.
1) 기본형
UPDATE t1
SET c1 = v1
WHERE 조건;
2-1) 다중 컬럼 수정
UPDATE t1
SET c1 = v1, c2 = v2, ...
WHERE 조건;
2-2) 다중 컬럼 수정
UPDATE t1
SET (c1 ,c2, ...) = (SELECT v1, v2, ...)
WHERE 조건;
3. DELETE
- 행 단위 delete 동작 수행
- WHERE 조건이 없으면 모든 데이터 삭제 주의
e.g.
1) 기본형
DELETE [FROM] t1
[WHERE 조건]
4. MERGE
- 소스 테이블과 참조 테이블을 동일하게 맞추는 작업 수행 (참조 테이블의 데이터 입력, 참조 테이블의 값으로 수정 등)
- INSERT, UPDATE, DELETE 작업을 단일 쿼리로 수행하고자 할 때
e.g.
1) 기본형
MERGE INTO t1(원본테이블)
USING t2(참조테이블)
ON (연결조건) -- 괄호 필수
WHEN MATCHED THEN -- 매치될 때 동작 기술 => 참조가 아니므로, 서브쿼리라고 칭하지 않음
UPDATE -- t1(원본테이블)에 동작 수행 => 테이블명 기술 필요x
SET ...
DELETE (조건) -- 괄호 생략 가능
WHEN NOT MATCHED THEN
INSERT INTO VALUES (v1, v2, ...); -- t1( 원본테이블)에 동작 수행
2) 메뉴가 있다면(When Equal NO) 가격 갱신, 없다면 메뉴 추가
MERGE INTO OLD_TABLE OT
USING NEW_TABLE NT
ON (OT.NO = NT.NO)
WHEN MATHED THEN
UPDATE
SET OT.PRICE = NT.PRICE
WHEN NOT MATCHED THEN
INSERT VALUES (NT.NO, NT.NAME, NT, PRICE);
-- INSERT INTO OT(NO, NAME, PRICE) VALUES (NT.NO, NT.NAME, NT, PRICE); => 테이블명 생략
TCL (Transaction Control Language)
- DML에 의해 조작된 결과를 트랜젝션 별로 제어하는 명령어
- DML 수행 후 트랜잭션을 정상 종료하지 않는 경우 lock이 발생할 수 있음
잠금 (LOCK)
- 트랜잭션 수행 도중 특정 데이터에 대해서 다른 트랜잭션이 동시 접근하지 못하도록 제한
- 잠금이 걸린 데이터는 실행 주체인 트랜잭션만이 접근 및 해제 가능 (root 계정 제외)
1. COMMIT
- 입력, 수정, 삭제한 데이터에 이상이 없을 경우 데이터를 반영하는 명령어
- 수행 시 commit 이전의 DML은 영구적으로 반영
2. ROLLBACK
- 입력, 수정, 삭제한 데이터에 대한 변경사항을 무효화하는 명령어
- 최종 COMMIT/변경 전/SAVEPOINT 지점 중 하나로 원복
3. SAVEPOINT
- 트랜잭션 내에서 롤백을 부분적으로 수행하기 위한 복원지점
- 사용자가 원하는 위치와 이름으로 설정 가능
- commit 이전 지점으로 원복 불가
e.g.
SAVEPOINT savepont_name;
..
ROLLBACK TO savepont_name;
-- ROLLBACK;
'CS - 강의, 서적 > [SQLD] 홍쌤의 데이터랩' 카테고리의 다른 글
[SQLD] 2-19. SQL2 (DDL, CTAS, PURGE, 제약 조건) (0) | 2024.09.21 |
---|---|
[SQLD] 2-10. 집합 연산자 (UNION, UNION ALL, INTERSECT, MINUS) (1) | 2024.09.18 |
[SQLD] 2-9. 서브 쿼리 (스칼라 서브 쿼리, 인라인 뷰, WHERE절 서브 쿼리 다수) (0) | 2024.09.18 |
[SQLD] 2-7~8. 조인 (USING/ON, Oracle/ANSI 표준별 조인) (1) | 2024.09.16 |
[SQLD] 2-2~6. SQL (Alias, DUAL Table, SELECT, FROM, WHERE, GROUP/ORDER BY, HAVING) (0) | 2024.09.16 |