SQL(Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어입니다. 1974년에 IBM 연구소에서 시스템 R을 질의하기 위해 만들어진 구조화된 언어를 시작으로 ANSI와 ISO에서 지속적인 표준화를 진행하여 현재 많은 기능을 가지고 있는 SQL이 되었습니다.
데이터 정의어(Data Definition Language) : 테이블 생성, 변경, 제거 기능 제공
데이터 조작어(Data Manipulation Language) : 테이블에 새 데이터 삽입, 기존 데이터 수정, 삭제, 검색 기능 제공
데이터 제어어(Data Control Language) : 보안을 위한 데이터 접근 및 권한 기능 제공
테이블 생성 정의어
CREATE TABLE 문
CREATE TABLE EMPLOYEE(
# 1.속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
EMPNO INTEGER NOT NULL,
EMPNAME CHAR(10) UNIQUE,
TITLE CHAR(10) DEFAULT '사원',
MANAGER INTEGER,
SALARY INTEGER CHECK (SALARY < 6000000),
DNO INTEGER CHECK (DNO IN (1,2,3,4)) DEFAULT 1,
# 2.[PRIMARY KEY (속성 리스트)]
PRIMARY KEY(EMPNO)
# 3.[FOREIGN KEY (속성 리스트) REFERENCES 테이블_이름(속성 리스트)]
# [ON DELETE 옵션] [ON UPDATE 옵션]
FOREIGN KEY(MANAGER) REFERENCES EMPLOYEE(EMPNO),
FOREIGN KEY(DNO) REFERENCES DEPARTMENT(DEPTNO)
ON DELETE SET DEFAULT ON UPDATE CASCADE;
# 4.[CHECK(조건)] : 따로 사용 가능
# 5.[CONSTRAINT 이름] [CHECK(조건)] : 제약조건의 이름을 부여할 수 있음
);
[ ]안의 내용은 생략이 가능
SQL 질의문은 세미콜론(;)으로 끝을 표시
NOT NULL
: NULL 허용 안함
UNIQUE
: 대체키로 지정(NULL 허용)
DEFAULT
: 기본값으로 사원을 지정
CHECK
: 조건으로 값을 제약
ON UPDATE
: 참조되는 테이블의 속성이 업데이트 된다면 참조하는 테이블의 속성도 같이 업데이트(CASCADE)
ON DELETE
: 참조되는 테이블의 속성이 삭제된다면 참조하는 테이블의 속성은 DEFAULT값으로 유지
위와 같은 조건으로 무결성 제약 조건을 보장할 수 있다.
참조 무결성 제약조건
NO ACTION : 아무 행동도 안함
CASCADE : 같이 변경됨
SET NULL : NULL로 변경
SET DEFAULT : DEFAULT 값으로 변경
CREATE VIEW
: 뷰를 생성
CREATE DOMAIN
: 도메인을 생성
도메인을 지정하여 생성할 수 있다. 하지만 CREATE TABLE에서 바로 지정하여 사용하는게 일반적이다.
CREATE INDEX
:인덱스를 생성
인덱스는 말그대로 색인 기능입니다. 책의 뒷부분에 인덱스(단어-페이지)처럼 SQL에서는 조건으로 자주 사용하는 속성을 인덱스로 지정하여 쿼리 프로세싱 속도를 증가시킬 수 있다.
ALTER TABLE
: 테이블 구조 변경
ALTER TABLE 테이블_이름
ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값];
ALTER TABLE 테이블_이름
DROP 속성_이름 CASCADE | RESTRICT;
ALTER TABLE 테이블_이름
ADD CONSTRAINT 제약_이름
PRIMARY KEY (속성);
ALTER TABLE 테이블_이름
DROP CONSTRAINT 제약_이름;
CASCADE : 관련된 제약조건이나 참조하는 다른 속성을 같이 삭제
RESTRICT : 관련된 제약조건이나 참조하는 다른 속성이 있다면 삭제 거부
DROP TABLE
: 테이블 제거
DROP TABLE 테이블_이름 CASCADE | RESTRICT;
DROP VIEW
: 뷰 제거
DROP DOMAIN
: 도메인 제거
DROP DOMAIN
: 인덱스 제거