DDL(Data Define Language)
- DB 구조, 데이터 형식, 접근 방식 등 DB을 구축하거나 수정할 목적으로 사용하는 언어
- DDL에는 CREATE SCHEMA, CREATE DOMAIN, CREATE TABLE, CREATE VIEW, CREATE INDEX, ALTER TABLE, DROP 등이 있음
명령어 | 기능 |
CREATE | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의 |
ALTER | TABLE에 대한 정의를 변경하는데 사용 |
DROP | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제 |
CREATE SCHEMA
- 스키마를 정의하는 명령문
- 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의
CREATE DOMAIN
- 도메인을 정의하는 명령문
- 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 정의할 수 있음
- 정의된 도메인명은 일반적인 데이터 타입처럼 사용
CREATE TABLE
- 테이블을 정의하는 명령문
- 기본 테이블에 포함될 모든 속덩에 대하여 속성명과 그 속성의 데이터 타입, 기본 값, NOT NULL 여부를 지정
- UNIQUE : 대체키로 사용할 속성 또는 속성의 집합을 지정하는 것으로 UNIQUE로 지정한 속성은 중복된 값을 가질 수 없음
- FOREIGN KEY ~ REFERENCES ~
- 참조할 다른 테이블과 그 테이블을 참조할 때 사용할 외래키 속성을 지정
- 외래키가 지정되면 참조 무결성의 CASCADE법칙이 적용
- ON DELETE 옵션 : 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야 할 사항을 지정, 옵션에는 NO ACTION, CASCADE, SET NULL, SET DEFAULT가 있음
- ON UPDATE 옵션 : 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야 할 사항을 지정, 옵션에는 NO ACTION, CASCADE, SET NULL, SET DEFAULT가 있음
※ NO ACTION : 참조 테이블에 변화가 있어도 기본 테이블에는 아무런 조취를 취하지 않음
※ CASCADE : 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되고 속성이 변경되면 관련 튜플의 속성 값도 모두 변경
※ SET NULL : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 NULL로 변경
※ SET DEFAULT : 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경
- CONSTRAINT : 제약 조건의 이름을 지정
- CHECK : 속성 값에 대한 제약 조건을 정의
CREATE VIEW
- 뷰를 정의하는 명령문
CREATE INDEX
- 인덱스를 정의하는 명령문
- UNIQUE
- 사용된 경우 : 중복 값이 없는 속성으로 인덱스를 생성
- 생략된 경우 : 중복 값을 허용하는 속성으로 인덱스를 생성
- 정렬 여부 지정
- ASC : 오름차순
- DESC : 내림차순
- 생략된 경우 : 오름차순으로 정렬
- CLUSTER : 사용하면 인덱스가 클러스터드 인덱스로 설정
ALTER TABLE
- 테이블에 대한 정의를 변경하는 명령문
- ADD : 새로운 속성(열)을 추가할 때 사용
- ALTER : 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN : 특정 속성을 삭제할 때 사용
DROP
- 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거, 즉 주 테이블의 데이터 제거 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건을 설정하기 위해 사용
- RESTRICTED : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소
DCL(Data Control Languate)
- 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어
- DCL은 데이터베이스 관리자(DBA)가 데이터 관리를 목적으로 사용
- DCL에는 GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT 등이 있음
명령어 | 기능 |
COMMIT | 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌 |
ROLLBACK | 데이터베이스 조작 작업이 비정상적으로 종료되었을때 원래의 상태로 복구 |
GRANT | 데이터베이스 사용자에게 사용 권한을 부여 |
REVOKE | 데이터베이스 사용자의 사용 권한을 취소 |
GRANT / REVOKE
- 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여하거나 취소하기 위한 명령어
- GRANT : 권한 부여를 위한 명령어
- REVOKE : 권한 취소를 위한 명령어
- 사용자등급 지정 및 해제
- GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소
- CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소
COMMIT
- 트랜잭션이 성공적으로 끝나면 데이터베이스가 새로운 일관성 상태를 가지기 위해 변경된 모든 내용을 데이터베이스에 반영하여야 하는데 이때 사용하는 명령이 COMMIT
- COMMIT 명령을 실행하지 않아도 DML문이 성공적으로 완료되면 자동으로 COMMIT되고 DML이 실패하면 자동으로 ROLLBACK이 되도록 Auto Commit기능을 설정할 수 있음
ROLLBACK
- 아직 COMMIT되지 않은 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어
- 트랜잭션 전체가 성공적으로 끝나지 못하면 일부 변경된 내용만 데이터베이스에 반영되는 비일관성인 상태를 가질 수 있기 때문에 일부분만 완료된 트랜잭션은 롤백되어야 함
SAVEPOINT
- 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어
- 저장점을 지정할 때는 이름을 부여하고, ROLLBACK 시 지정된 저장점까지의 트랜잭션 처리 내용이 취소됨
DML(Data Manipulation Language)
- 데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공
명령문 | 기능 |
SELECT | 테이블에서 튜플을 검색 |
INSERT | 테이블에 새로운 튜플을 삽입 |
DELETE | 테이플에서 튜플을 삭제 |
UPDATE | 테이블에서 튜플의 내용을 갱신 |
삽입문(INSERT INTO~)
- 기본 테이블에 새로운 튜플을 삽입할 때 사용
- 대응하는 속성과 데이터는 개수와 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음
삭제문(DELETE FROM~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용
- 모든 레코드를 삭제할 때는 WHERE절을 생략
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름
갱신문(UPDATE~SET~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할때 사용
SELECT절
- PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술
- ALL : 모든 튜플을 검색할때 지정하는 것으로 주로 생략
- DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색
- DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌 튜플 전체를 대상으로 함
- 속성명 : 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정
- 기본 테이블을 구성하는 모든 속성을 지정할때는 *를 기술
- 두 개 이상의 테이블을 대상으로 검색할 때는 테이블명.속성명으로 표현
- 그룹함수 : GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수를 기술
- WINDOW 함수 : GROUP BY절을 이용하지 않고 속성의 값을 집계할 함수를 기술
- PARTITION BY : WINDOW 함수가 적용될 범위로 사용할 속성을 지정
- ORDER BY : PARTITION 안에서 정렬 기준으로 사용할 속성을 지정
- GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할때 사용
- HAVING절 : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정
병행제어
- 다중 프로그램의 이점을 활요하여 동시에 여러개의 트랜잭션을 병행수행할때 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것
병행제어의 목적
- 데이터베이스의 공유를 최대화
- 시스템의 활용도를 최대화
- 데이터베이스의 일관성을 유지
- 사용자에 대한 응답시간을 최소화
병행수행의 문제점
- 갱신 분실 : 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할때 갱신 결과의 일부가 없어지는 현상
- 비완료 의존성(임시 갱신) : 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
- 모순성(불일치 분석) : 두 개의 트랜잭션이 병행수행될때 원치 않는 자료를 이용함으로써 발생하는 문제
- 연쇄 복귀 : 병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상
로킹
- 병행제어 기법 중 하나로 주요 데이터의 액세스를 상호 배타적으로 하는 것
로킹 단위
- 로킹 단위는 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미
- 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고 데이터베이스 공유도가 저하
(로킹 단위가 크다 -> 로크의 수가 적어진다 -> 제어 기법이 간단해 진다 -> 병행성이 감소한다)
- 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아지고 데이터베이스 공유도가 증가
(로킹 단위가 작다 -> 로크의 수가 많아진다 -> 제어 하기 까다롭다 -> 병행성이 증가한다)
'1. 자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 4과목 프로그래밍 언어 활용 - 2 (0) | 2020.08.10 |
---|---|
[정보처리기사 필기] 4과목 프로그래밍 언어 활용 - 1 (0) | 2020.08.08 |
[정보처리기사 필기] 3과목 데이터베이스 구축 - 2 (0) | 2020.08.06 |
[정보처리기사 필기] 3과목 데이터베이스 구축 - 1 (0) | 2020.08.05 |
[정보처리기사 필기] 2과목 소프트웨어 개발 - 5 (0) | 2020.08.04 |