앞서 RDBMS 에서 말한 모델의 구조를 활용해서 실습을 해 보도록 한다.
먼저 실습 테이블을 만들어야 되는데 book 테이블의 구조는 아래와 2차원으로 표현해 볼 수 있다.
BOOK_ID (PK) |
BOOK_NAME | AUTHOR_ID (FK) |
DESCRIPTION |
1 | Oracle 실습 | A0001 | 오라클 실습을 정리한 책 |
2 | 대용량데이터베이스 | A0001 | RDBMS 대용량 관리를 정리한 책 |
3 | 친철한 SQL튜닝 | A0002 | DBA를 위한 튜닝과정 |
4 | 2023블록체인 | A0003 | 블록체인 보고서 |
DDL은 위와 같은 형태로 데이터를 저장하기 위한 골격을 정의하는 언어이다.
테이블명을 지정하고, 어떤 열이 들어가는지 그 열에 들어가는 데이터는 어떤 종류인지를 정의한다.
그리고 각 테이블이 가지는 제약조건 역시 지정하게 된다.
DDL을 이용하여 테이블을 생성하면 다음과 같다. DBMS마다 조금씩 문법이 다르기 때문에 벤더사의 특징에 맞게 테이블을 생성한다
-- Oracle 기준
# 골격(Schema) 을 정의
CREATE TABLE book (
book_id NUMBER(10) NOT NULL,
book_name VARCHAR2(100) NOT NULL,
author_id VARCHAR2(5) NOT NULL,
description VARCHAR2(500)
);
# 제약조건을 정의
ALTER TABLE book ADD CONSTRAINT PRIMARY KEY(book_id);
# 코멘트 작성
COMMENT ON TABLE book IS '도서정보를 관리한다';
COMMENT ON COLUMN book.book_name IS '도서명’;
COMMENT ON COLUMN book.author IS '작가ID’;
COMMENT ON COLUMN book.설명 IS '도서설명’;
-- MySQL, MariaDB 에는 아래와 같이 입력한다
DROP TABLE book;
-- 골격(Schema) 을 정의
CREATE TABLE book (
book_id INT(10) NOT NULL COMMENT '도서ID',
book_name VARCHAR(100) NOT NULL COMMENT '도서명',
author_id VARCHAR(5) NOT NULL COMMENT '작가ID',
description VARCHAR(500) COMMENT '도서설명'
)
COMMENT '도서정보를 관리한다';
# 제약조건을 정의
ALTER TABLE book ADD CONSTRAINT PRIMARY KEY(book_id);
book 테이블을 만들었다. 다음은 author 테이블을 만들어 본다.
author 테이블의 구조는 아래와 같다
AUTHOR_ID (PK) |
AUTHOR_NAME | DESCRIPTION |
A0001 | 홍길동 | 오라클실습의 작가로 유명한… |
A0002 | 마법 | |
A0003 | 거북이 | 2023년 해성처럼 등장한 작가 |
-- Oracle 기준
# 골격(Schema) 을 정의
CREATE TABLE author (
author_id VARCHAR2(5) NOT NULL,
author_name VARCHAR2(100) NOT NULL,
description VARCHAR2(500)
);
# 제약조건을 정의
ALTER TABLE author ADD CONSTRAINT PRIMARY KEY(author_id);
# 코멘트 작성
COMMENT ON TABLE authorIS '작가정보를 관리한다';
COMMENT ON COLUMN author.author_id IS '작가ID’;
COMMENT ON COLUMN author.author_name IS '작가명’;
COMMENT ON COLUMN author.description IS '작가설명’;
-- MySQL, MariaDB 에는 아래와 같이 입력한다
CREATE TABLE author (
author_id VARCHAR(5) NOT NULL COMMENT '작가ID',
author_name VARCHAR(100) NOT NULL COMMENT '작가명',
description VARCHAR(500) COMMENT '작가설명'
) COMMENT '작가정보를 관리한다';
# 제약조건을 정의
ALTER TABLE author ADD CONSTRAINT PRIMARY KEY(author_id);
이제 FK 제약조건을 추가 한다.
논리 모델을 보면 작가는 도서를 집필하는 관계가 표시되어 있다. 이를 표현하기 위해서 book 테이블에는 author_id 라는 author 테이블의 pk를 가지게 되면서 두개의 테이블의 관계가 맺어졌다. 우리는 FK (Foreign Key) 제약 조건을 만든다.
# 제약조건을 정의
ALTER TABLE book ADD CONSTRAINT book_fk_01 FOREIGN KEY (author_id) REFERENCES author(author_id);
BOOK_ID (PK) |
BOOK_NAME | AUTHOR_ID (FK) |
DESCRIPTION |
1 | Oracle 실습 | A0001 | 오라클 실습을 정리한 책 |
2 | 대용량데이터베이스 | A0001 | RDBMS 대용량 관리를 정리한 책 |
3 | 친철한 SQL튜닝 | A0002 | DBA를 위한 튜닝과정 |
4 | 2023블록체인 | A0003 | 블록체인 보고서 |
5 | SQL실습 | A0004 | 사내강의교재 |
** 제약 조건을 추가함으로써, 관계를 맺음과 동시에 5번째 레코드도 더 이상 입력 될수 없다.
A0004 는 author 테이블에 존재하지 않기 때문에 입력시 에러가 발생한다.
이제 실습 테이블을 다 만들었다.
이것이 DDL의 전부는 아니다.
테이블의 삭제, 컬럼 추가, 삭제, 변경, 테이터의 전체 삭제 등과 같은 다양한 종류의 DDL 이 있다.
DDL 에 대한 문법은 각 벤더사에서 제공하는 문서에 아래와 같이 상세히 제공이 되니 참고하면 좋다.
(테이블의 삭제 문법 설명 예)
'데이터베이스' 카테고리의 다른 글
DBMS 기본 - 4.SQL 개요 (0) | 2023.08.29 |
---|---|
DBMS기본 - 3. RDBMS (0) | 2023.08.28 |
DBMS 기본 - 2. 역사 (0) | 2023.08.28 |
DBMS 기본 - 1. DB와 DBMS정의 (0) | 2023.08.28 |