[9] SQL 데이터정의

hyunsooo·2023년 6월 15일
0
post-thumbnail

1. SQL 소개

SQL(Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어입니다. 1974년에 IBM 연구소에서 시스템 R을 질의하기 위해 만들어진 구조화된 언어를 시작으로 ANSI와 ISO에서 지속적인 표준화를 진행하여 현재 많은 기능을 가지고 있는 SQL이 되었습니다.

1.1. SQL의 분류

  • 데이터 정의어(Data Definition Language) : 테이블 생성, 변경, 제거 기능 제공

  • 데이터 조작어(Data Manipulation Language) : 테이블에 새 데이터 삽입, 기존 데이터 수정, 삭제, 검색 기능 제공

  • 데이터 제어어(Data Control Language) : 보안을 위한 데이터 접근 및 권한 기능 제공

2. SQL을 이용한 데이터 정의

2.1. CREATE

TABLE

테이블 생성 정의어

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 값으로 변경

VIEW

CREATE VIEW : 뷰를 생성

DOMAIN

CREATE DOMAIN : 도메인을 생성

도메인을 지정하여 생성할 수 있다. 하지만 CREATE TABLE에서 바로 지정하여 사용하는게 일반적이다.

INDEX

CREATE INDEX :인덱스를 생성

인덱스는 말그대로 색인 기능입니다. 책의 뒷부분에 인덱스(단어-페이지)처럼 SQL에서는 조건으로 자주 사용하는 속성을 인덱스로 지정하여 쿼리 프로세싱 속도를 증가시킬 수 있다.

2.2. ALTER

TABLE

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 : 관련된 제약조건이나 참조하는 다른 속성이 있다면 삭제 거부

2.3. DROP

TABLE

DROP TABLE : 테이블 제거

DROP TABLE 테이블_이름 CASCADE | RESTRICT;

VIEW

DROP VIEW : 뷰 제거

DOMAIN

DROP DOMAIN : 도메인 제거

INDEX

DROP DOMAIN : 인덱스 제거

profile
CS | ML | DL

0개의 댓글