검색

검색어를 입력하세요

관리 구문

2026-05-30

DML

DML 명령어

  • INSERT
  • UPDATE
  • DELETE
  • MERGE

INSERT

-- 컬럼 리스트를 지정하는 방법
INSERT INTO 테이블명 (컬럼 리스트)
VALUES (값 리스트);

-- 전체 컬럼에 순서대로 입력하는 방법
INSERT INTO 테이블명
VALUES (전체 컬럼 값 리스트);

UPDATE

UPDATE 테이블명
SET 컬럼명 = 새로운 값;

MERGE : 데이터가 존재하는지에 따라 UPDATE, INSERT, 경우에 따라 DELETE까지 나누어 실행하는 SQL.

MERGE INTO 대상테이블 T
USING 비교할데이터 S
ON (T.ID = S.ID)

WHEN MATCHED THEN
  UPDATE SET T.NAME = S.NAME
  WHERE S.NAME IS NOT NULL

WHEN NOT MATCHED THEN
  INSERT (ID, NAME)
  VALUES (S.ID, S.NAME)
  WHERE S.NAME IS NOT NULL;
  • MERGE INTO : 데이터를 반영할 대상 테이블.
  • USING : 비교하거나 가져올 원본 데이터.
  • ON : 기존 데이터와 원본 데이터의 일치 조건.
  • WHEN MATCHED : 일치하는 행이 있을 때 실행할 작업.
  • WHEN NOT MATCHED : 일치하는 행이 없을 때 실행할 작업.
  • WHERE : 조건을 만족하는 행에만 UPDATE 또는 INSERT를 실행하도록 제한하는 조건.

TCL

트랜잭션(Transaction) : 데이터베이스의 논리적 연산 단위.

트랜잭션의 특성 (ACID)

  • 원자성(Atomicity) : 트랜잭션 내의 모든 작업은 모두 수행되거나 모두 수행되지 않아야 한다.
  • 일관성(Consistency) : 트랜잭션 수행 전과 후에 데이터는 항상 일관된 상태를 유지해야 한다.
  • 고립성(Isolation) : 트랜잭션이 수행 중일 때 다른 트랜잭션의 영향을 받아 잘못된 결과를 도출하는 것을 방지하기 위한 특성. 트랜잭션 수행과 커밋 사이의 텀에 다른 트랜잭션이 수행 및 커밋되어 예상과 다른 결과가 나타나는 것이 고립성 문제의 예이다.
  • 지속성(Durability) : 트랜잭션이 커밋된 후에는 그 결과가 영구적으로 반영되어야 한다.

트랜잭션 시작과 종료 (SQL Server) : BEGIN TRANSACTION으로 트랜잭션을 시작하고, COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION으로 종료한다. TRANSACTION은 생략할 수 있다.

COMMIT : 트랜잭션에서 수행한 변경을 확정하고 영구적으로 반영한다.

Oracle vs SQL Server DDL 트랜잭션 처리

  • Oracle : DDL 문장 수행 후 자동으로 COMMIT된다. DDL 수행은 내부적으로 트랜잭션을 종료한다.
  • SQL Server : DDL도 트랜잭션 범주에 포함되며 자동 COMMIT되지 않는다.

ROLLBACK : COMMIT되지 않은 상위의 모든 트랜잭션을 취소한다. 최초의 BEGIN TRANSACTION까지의 모든 변경이 롤백된다.

SAVEPOINT : 트랜잭션 내에서 저장점을 지정하면 전체 롤백 대신 해당 저장점까지만 부분 롤백할 수 있다.

  • Oracle
SAVEPOINT 세이브포인트명;
...
ROLLBACK TO 세이브포인트명;
  • SQL Server
SAVE TRANSACTION 세이브포인트명;
...
ROLLBACK TRANSACTION 세이브포인트명;

DDL

DDL 명령어

  • CREATE
  • ALTER
  • DROP
  • TRUNCATE

DROP vs TRUNCATE vs DELETE

DROPTRUNCATEDELETE
분류DDLDDLDML
ROLLBACK불가불가COMMIT 이전 가능
Auto CommitO (Oracle)O (Oracle)직접 COMMIT 필요
Storage전체 Release최초 할당분만 남기고 ReleaseRelease 안 함
결과테이블 정의 자체 삭제테이블을 최초 생성 시 상태로 초기화데이터만 삭제

테이블 생성 주의사항

  • 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용하며, 가능하면 단수형을 사용한다.
  • 테이블명은 다른 테이블의 이름과 중복되면 안 된다.
  • 한 테이블 내에서는 칼럼명이 중복되면 안 된다.
  • 각 칼럼들은 괄호로 묶어 콤마로 구분하고, 생성문의 끝은 세미콜론으로 끝낸다.
  • 칼럼 뒤에 데이터 유형을 반드시 지정해야 한다.
  • 테이블명과 칼럼명은 반드시 문자로 시작해야 하며, 벤더에서 사전에 정의한 예약어는 사용할 수 없다.
  • 허용 문자 : A-Z, a-z, 0-9, _, $, #

제약조건의 종류

  • PRIMARY KEY (기본키)
  • UNIQUE KEY (고유키)
  • NOT NULL
  • CHECK
  • FOREIGN KEY (외래키)

외래키(FOREIGN KEY) 특성

  • 테이블 생성 시 설정할 수 있다.
  • NULL 값을 가질 수 있다.
  • 한 테이블에 하나 이상 생성할 수 있다.
  • 외래키 값은 참조 무결성 제약을 받을 수 있다.

PK 제약조건 지정

  • ALTER TABLE 방식 : 기존 테이블에 추가할 때 사용한다.
ALTER TABLE 테이블명
  ADD CONSTRAINT 제약조건명 PRIMARY KEY (칼럼명);
  • CREATE TABLE 인라인 방식 : 테이블 생성 시 괄호 안에 직접 지정한다.
CONSTRAINT 제약조건명 PRIMARY KEY (칼럼명)

외래키 제약조건 추가 : 기존 테이블에 외래키 제약조건을 추가할 때는 ALTER TABLE을 사용한다.

ALTER TABLE 테이블명
  ADD CONSTRAINT 제약조건명 FOREIGN KEY(컬럼) REFERENCES 참조할테이블(컬럼);

칼럼 삭제

ALTER TABLE 테이블명
DROP COLUMN 삭제할 칼럼명;

칼럼 정의 변경

  • Oracle : MODIFY 사용. 여러 칼럼을 괄호로 묶어 한 번에 변경할 수 있다.
ALTER TABLE 테이블명
MODIFY (칼럼명1 데이터유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터유형, ...)
  • SQL Server : ALTER COLUMN 사용. 칼럼 하나씩 지정한다.
ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 데이터유형 [DEFAULT 식] [NOT NULL]

참조 동작(Referential Action)

Delete/Modify Action : Master 행 삭제 또는 수정 시 Child 행을 어떻게 처리할지 지정한다.

  • Cascade : Master 삭제 시 Child 함께 삭제.
  • Set Null : Master 삭제 시 Child의 해당 외래키 칼럼을 NULL로 변경.
  • Set Default : Master 삭제 시 Child의 해당 외래키 칼럼을 기본값으로 변경.
  • Restrict : Child 테이블에 해당 PK 값을 참조하는 행이 없는 경우에만 Master 삭제 허용.
  • No Action : 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음.

Insert Action : Child 행 삽입 시 Master에 해당 PK가 없을 때 처리 방식을 지정한다.

  • Automatic : Master에 PK가 없으면 Master PK를 먼저 생성한 뒤 Child 입력.
  • Set Null : Master에 PK가 없으면 Child 외래키를 NULL로 처리.
  • Set Default : Master에 PK가 없으면 Child 외래키를 기본값으로 입력.
  • Dependent : Master에 PK가 존재할 때만 Child 입력 허용.
  • No Action : 참조 무결성을 위반하는 입력 액션을 취하지 않음.

DCL

GRANT : 사용자에게 권한을 부여한다.

WITH GRANT OPTION : GRANT와 함께 사용하면 권한을 부여받은 사용자가 동일한 권한을 다른 사용자에게 부여할 수 있다.

REVOKE : 사용자에게 부여했던 권한을 회수한다.

REVOKE 권한
ON 객체
FROM 사용자;