본문 바로가기

데이터베이스

SQL 기초 - 1. DDL

앞서 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 에 대한 문법은 각 벤더사에서 제공하는 문서에 아래와 같이 상세히 제공이 되니 참고하면 좋다.  

(테이블의 삭제 문법 설명 예)

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/DROP-TABLE.html#GUID-39D89EDC-155D-4A24-837E-D45DDA757B45

 

'데이터베이스' 카테고리의 다른 글

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