DML(Data Manipulation Language)
- 데이터의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE)
- 저장(Commit) 또는 취소(Rollback) 반드시 필요
INSERT
- 한번에 한 행만 입력 가능(SQL Server는 여러 행 동시 삽입 가능)
- 컬럼 별 데이터 타입과 사이즈에 맞게 삽입
- 작성하지 않은 컬럼은 NULL이 입력됨
INSERT INTO 테이블 VALUES(value1, value2, ...)
INSERT INTO 테이블(컬럼1, 컬럼2, ...) VALUES (value1, value2, ...)
UPDATE
- 데이터 수정 시 사용
- 다중으로 컬럼 수정 가능
UPDATE 테이블명
SET 수정할 컬럼명 = 수정값
WHERE 조건;
DELETE
DELETE FROM 테이블명
WHERE 조건;
MERGE
- 데이터 병합
- INSERT, UPDATE, DELETE 작업을 동시에 수행 가능
MERGE INTO 테이블명
USING 참조테이블
ON (연결조건)
WHEN MATCHED THEN
UPDATE
SET 수정내용
DELETE (조건)
WHEN NOT MATCHED THEN
INSERT VALUES(value1, value2, ...);
TCL(Transaction Control Language)
- 대표적인 트랜잭션 제어어로는 Commit, Rollback이 있다
- DML에 의해 조작된 결과를 트랜잭션 별로 제어하는 명령어
- DML 수행 후 트랜잭션을 정상적으로 종료하지 않을 경우 LOCK이 발생 할 수 있다
- LOCK : 하나의 트랜잭션이 수행되는 동안 다른 트랜잭션이 동시에 접근하지 못하도록 제한 하는것
트랜잭션
- 트랜잭션은 데이터베이스의 논리적 연산 단위
- 원자성(ALL OR NOTHING 개념) -> 모두 Commit 하거나 Rollback 처리
COMMIT
- 입력, 수정, 삭제한 데이터를 저장하는 명령어
- 한 번 COMMIT을 수행하면 COMMIT 이전에 수행된 작업은 모두 저장되고 되돌릴 수 없다
ROLLBACK
- 입력, 수정, 삭제한 데이터에 대한 변경을 취소하는 명령어
- 데이터베이스에 저장되지 않고 최종 COMMIT 지점/변경 전/SAVE POINT 지점으로 되돌린다
- 최종 COMMIT 시점 이전까지 ROLLBACK 가능
DDL(Data Definition Language)
- 데이터 구조 정의(객체 생성, 삭제, 변경) 언어
- CREATE(객체 생성), ALERT(객체 변경), DROP(객체 삭제), TRUNCATE(데이터 삭제)
- AUTO COMMIT이라는 특징이 있다(명령어 수행 후 즉시 저장, 원복 불가)
CREATE TABLE 테이블명
컬럼1 데이터타입 [DEFAULT 값] [제약조건],
컬럼2 데이터타입 [DEFAULT 값] [제약조건],
);
ALERT
- 테이블 구조 변경(컬럼명, 데이터 타입, 사이즈 , default 값 ...)
- 여러 컬럼 동시 추가 가능(반드시 괄호 사용)
- 값이 없는 빈 컬럼일 경우 데이터 타입 변경 가능(CHAR, VARCHAR 타입은 데이터가 있어도 변경 가능)
- 동시에 여러 컬럼 이름 변경, 컬럼 삭제 불가능
DELETE/DROP/TRUNCATE 차이점
- DELETE : 데이터 일부 또는 전체 삭제(롤백 가능)
- TRUNCATE : 데이터 전체만 삭제 가능(롤백 불가)
- DROP : 데이터와 구조를 동시 삭제(롤백 불가)
VIEW(뷰)
- VIEW는 저장공간을 가지지는 않지만 테이블처럼 조회 및 수정할 수 있는 객체
CREATE VIEW 뷰이름
AS
조회쿼리;
VIEW 종류
- 단순뷰: 하나의 테이블 조회 뷰
- 복합뷰 : 둘 이상의 테이블 조인 뷰
VIEW 특징
- VIEW는 기본 테이블과 같은 형태를 가지고 있으며, 조작도 기본 테이블과 거의 같음
- VIEW는 가상 테이블이기에 물리적으로 구현되어 있지않고 저장공간을 차지하지 않음
- 데이터를 안전하게 보호가능
- 기본 테이블이 삭제되면 그 테이블을 참조하여 만든 VIEW 또한 삭제됨
VIEW의 장단점
- 장점
- 논리적 독립성 제공
- 데이터의 접근을 제어 함으로써 보안유지
- 사용자의 데이터 관리 단순화
- 데이터의 다양한 지원 가능
- 단점
- 뷰의 정의 변경 불가
- 삽입, 삭제, 갱신 연산에 제한
- 인덱스 구성 불가
DCL(Data Control Language)
- 객체에 대한 권한을 부여(GRANT) 하거나 회수(REVOKE)하는 기능
- 테이블 소유자는 타 계정에 테이블 조회 및 수정 권한 부여 및 회수 가능
권한
- 일반적으로 본인 소유가 아닌 테이블은 원칙적으로 조회 불가
- 업무적으로 필요 시 테이블 소유자가 아닌 다른 계정에 테이블 조회, 수정 권한 부여 가능
권한의 종류
- 오브젝트 권한
- 테이블에 대한 권한 제어
- ex) SELECT, INSERT, UPDATE, DELETE, MERGE 권한
- 테이블 소유자는 타 계정에 소유한 테이블에 대한 조회 및 수정 권한 부여 및 회수 가능
- 시스템 권한
- 시스템 작업을 제어
- ex) 테이블 생성, 인덱스 삭제 권한 등등
- 관리자 권한만 권한 부여 및 회수 가능
권한 부여 옵션
- WITH GRANT OPTION
- WITH GRANT OPTION으로 받은 오브젝트 권한을 다른 사용자에게 부여 가능
- 중간 관리자가 부여한 권한은 중간 관리자만 회수 가능
- 중간 관리자에게 부여한 권한 회수 시 제 3자에게 부여한 권한도 같이 회수 됨
- WITH ADMIN OPTION
- WITH ADMIN OPTION을 통해 부여 받은 시스템 권한/롤 권한을 다른 사용자에게 부여 가능
- 중간 관리자를 거치지 않고 직접 회수 가능
- 중간 관리자 권한 회수 시 제 3자에게 부여한 권한은 회수 되지 않음(남아있음)
GRANT
- 권한 부여 시 반드시 테이블 소유자나 관리자 계정으로 접속하여 권한을 부여해야함
- 동시에 여러 유저에 대한 권한 부여 가능
- 동시 여러 권한 부여 가능
REVOKE
- 동시 여러 권한 회수 가능
- 이미 회수된 권한 재회수 불가
- 동시 여러 유저로부터의 권한 회수 가능