SQL - 복습 및 추가(DDL)
해당 Post는 DDL에 대해 정리한 파일입니다.
DDL (Data Define Language)
DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어
-
번역한 결과가 데이터 사전이라는 특별한 파일에 여러개의 테이블로 저장됨
-
크게 CREATE(생성), ALTER(수정), DROP(삭제)로 구분
CREATE SCHEMA
스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것, (개체, 속성, 관계등) 스키마를 정의하는 명령문입니다.
- 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의합니다.
CREATE SCHEMA 스키마명 AUTHORIZTAION 사용자ID;
FOR EXAMPLE : 소유권자의 사용자 ID가 ‘홍길동’인 스키마 ‘대학교’를 정의하는 문장
CREATE SCHEMA 대학교 AUTHORIZTAION 홍길동;
CREATE DOMAIN
도메인 : 하나의 속성이 취할 수 있는 동일한 유형의 원자값들의 집합 도메인을 정의하는 명령문입니다.
- 임의의 속성에서 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터의 값이 아니고 일부분일 때, 사용자는 그 값의 범위를 도메인으로 지정
CREATE DOMAIN 도메인 명[AS] 데이터타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건 명 CHECK (범위)];
FOR EXAMPLE : ‘성별’을 남, 녀 와 같이 정해진 1개의 문자로 표현되는 도메인 VALID-SEX를 정의하는 SQL문을 정의하는 문장
CREATE DOMAIN SEX CHAR(1)
DEFAULT '남'
CONSTRAINT VALID-SEX CHECK(VALUE IN('남','여');
CREATE TABLE
테이블 : 데이터베이스의 설계 단계에서는 주로 릴레이션이라 부르고, 조작이나 검색 시에는 테이블이라 부름 테이블을 정의하는 명령문입니다.
CREATE TABLE 테이블 명
(속성명 데이터타입[DEFAULT 기본값] [NOT NULL], ...
[,PRIMARY KEY(기본키,...)]
[,UNIQUE(대체키,...)]
[,FOREIGN KEY(외래키,...)]
REFERENCES 참조테이블(기본키,...)]
[CONSTRAINT 제약조건 명][CHECK (범위)];
FOR EXAMPLE : 이름, 학번, 전공, 성별, 생년월일 로 구성된 학생테이블을 SQL문을 작성
- 이름은 NULL이 올수없고, 학번은 기본키
- 전공은 학과테이블의 학과코드를 참조하는 외래키로 사용
- 학과테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만든다
- 학과 테이블에서 학과코드가 변경되면 전공 값도 같은 값으로 변경
- 생년월일은 1980-01-01이후 데이터만 저장
- 제약 조건의 이름은 ‘생년월일제약’으로
- 각 속성의 데이터 타입은 적당하게 지정한다. 단 성별은 도메인 SEX를 사용한다
CREATE TABLE 학생 (이름 VARCHAR(15) NOT NULL, //이름은 최대 15글자,NULL값을 가지지 않는다. 학번 CHAR(8), 전공 CHAR(5), 성별 SEX, 생년월일 DATE, PRIMARY KEY (학번), FOREIGN KEY(전공)REFERENCES 학과(학과코드) ON DELETE SET NULL// 학과테이블에서 튜플이 삭제되면 관련 모든 튜플의 전공 속성 값을 NULL로 ON UPDATE CASCADE,//학과테이블에서 학과코드가 변경되면 관련된 모든 튜플의 전공 속성의 값도 같은 값으로 변경 CONSDTRAINT 생년월일제약 CHECK(생년월일>='1980-01-01'));
CREATE VIEW
뷰 : 물리적으로 구현되지 않습니다. 뷰를 정의하는 명령문입니다.
- SELECT 문을 서브 쿼리로 사용하여 SELECT문의 결과로서 뷰를 생성
- 서브쿼리인 SELECT문에는 UNION이나 ORDER BY 절을 사용할 수 없다.
CREATE VIEW 뷰명[(속성명)] AS SELECT문;
FOR EXAMPLE : 고객 테이블에서 주소가 안산시인 고객들의 성명과 전화번호를 안산 고객이라는 뷰로 정의
CREATE VIEW 안산고객(성명, 전화번호) AS SELECT 성명, 전화번호 FROM 고객 WHERE 주소 = '안산시';
ALTER TABLE
테이블에 대한 정의를 변경하는 명령문입니다.
- ADD : 새로운 속성을 추가할 때 사용
- ALTER : 특정 속성의 DEFAULT 값을 변경할 때 사용
- DROP COLUMN : 특정 속성을 삭제할 때 사용
FOR EXAMPLE : 학생 테이블에 최대 3문자로 구성되는 학년 속성을 추가하시오
ALTER TABLE 학생 ADD 학년 CARCHAR(3);
FOR EXAMPLE : 학생 테이블의 학번 필드의 데이터 타입과 크기를 VARCHAR(10)으로 하고 NULL 값이 입력되지 않도록 변경
ALTER TABLE 학생 ALTER 학번 VARCHAR(10) NOT NULL;
DROP
스키마, 도메인 등등을 제거하는 명령문
FOR EXAMPLE : 학생 테이블을 제거하되, 학생 테이블을 참조하는 모든 데이터를 함께 제거하시오
DROP TABLE 학생 CASCADE;