1. 개념

  • DDL(Data Definition Language), 영문 그대로 데이터를 정의하는 언어
  • 직관적인 설명으로는 데이터를 담을 그릇을 생성하는 언어
  • 이렇게 생성된 그릇을 DBMS(Database Management System)에서는 오브젝트(Object)라고 한다.

[DDL 대상]

DDL 대상 설명
스키마
(Schema)
 - DBMS의 특징과 구축 환경에 기반한 데이터 구조
 - 하나의 데이터베이스(이하 DB)라고 이해할 수 있음
도메인
(Domain)
 - 속성의 데이터 타입과 제약 조건 등을 설정한 정보
 - 속성이 가지는 값의 범위로 이해 가능
테이블
(Table)
 - 데이터 저장 공간
 - 이해하기 쉬운 개념으로는 '표'가 있음

(View)
 - 1개 이상의 물리 테이블을 통해서 만드는 가상의 논리 테이블
인덱스
(Index)
 - 빠른 검색을 위한 데이터 구조
 - 책이나 논문의 차례 또는 개요라고 볼 수 있음

 

2. 유형(생성, 변경, 삭제/제거)

구분 명령어 내용
생성 CREATE 생성
변경 ALTER 변경
삭제 DROP 삭제
TRUNCATE 내용 삭제

 

DDL 명령어로 분류되지는 않지만 DDL과 같이 사용되는 명령어가 있는데

M에서는 생성된 오브젝트의 목록을 조회하기 위해 SHOW 명령문을 사용하고 내용을 조회하기 위해서는 SELECT를 사용한다.

O에서는 SELECT로 목록과 내용을 조회한다.

 

3. 작성 (스키마, 도메인, 뷰, 인덱스 추가할 것)

[테이블 생성, CREATE문]

CREATE TABLE 테이블명 (
#아래부분은 참고
    칼럼명 데이터타입 [DEFAULT값][NOT NULL]
    {, 칼럼명 데이터타입 [DEFAULT값][NOT NULL]}*
    [PRIMARY KEY (칼럼 리스트),]
    {[FOREIGN KEY (칼럼 리스트) REFERENCES 테이블명 [(칼럼명)]
    	[ ON DELETE 옵션 ]
        [ ON UPDATE 옵션 ] ], }*
    [CHECK (조건식) | UNIQUE(칼럼명) ] );
    
-- 테이블 복제
CREATE TABLE 테이블명 AS SELECT문;

 

[제약조건]

제약 조건 설명
PRIMARY KEY (PK)  - 테이블의 기본키
 - 기본적으로 NOT NULL, UNIQUE 제약 사항이 결정된다.
FOREIGN KEY (FK)  - 테이블에 외래키 정의
 - 참조 대상을 테이블명(칼럼명) 형식으로 작성해야 한다.
 - 참조 무결성이 위배되는 상황 발생 시 다음 옵션으로 처리가 가능하다
   (CASCADE, NO ACTION, SET NULL, SET DEFAULT)
UNIQUE  - 테이블에서 해당하는 값은 유일해야 함을 의미한다.
 - 테이블에서 모든 값이 다르게 적재되어야 하는 열에 설정한다.
NOT NULL  - 테이블에서 해당하는 열의 값은 NULL이 불가능하다
 - 필수적으로 입력해야 한다는 뜻이다.
CHECK  - 사용자가 직접 정의하는 제약 조건이다.
 - 발생 가능한 상황에 따라 여러 가지 조건을 설정할 수 있다.

사실 맨 윗줄 외엔 딱히 실전에서 써보지 않은 거라 뭐라 말은 못하겠지만 

짐작하는 바로는 (*)이 붙은 것은 있을 수도 있고 없을 수도 있다는 것으로 보인다.  

 

[테이블 변경, ALTER문]

--열 추가
ALTER TABLE 테이블명 ADD 칼럼명 데이터타입 [DEFAULT값]

--열 데이터 타입 변경
ALTER TABLE 테이블명
    MODIFY 칼럼명 데이터타입 [DEFAULT값]
    
--열 삭제
ALTER TABLE 테이블명 DROP 칼럼명

--테이블명 변경(1)
RENAME TABLE 이전테이블명 TO 새로운테이블명

--테이블명 변경(2)
ALTER TABLE 이전테이블명 RENAME 새로운테이블명

 

[테이블 삭제, DROP / TRUNCATE문]

--테이블삭제
DROP TABLE 테이블명

--테이블내용삭제
TRUNCATE TABLE 테이블명

'SQL' 카테고리의 다른 글

DCL  (0) 2022.03.10
DML  (0) 2022.03.07
SQL 문법 정리  (0) 2022.02.09

+ Recent posts