Self Study/SQLD

[SQLD] DDL( 데이터 정의어 : Data Definition Language)

Lynnet 2022. 10. 28. 17:42
728x90

DDL( 데이터 정의어 : Data Definition Language) 이란? 

- 물리적 DB 객체의 구조를 정의하는데 사용

- 가장 대표적으로 테이블을 생성하는 일 

 

제약조건(Constraint)이란?

- 테이블에 입력되는 데이터가 사용자가 원하는 조건에 만족하는 데이터만 입력 될 수 있도록 하는 것

- 칼럼마다 설정한다. 

 

제약조건 설명
기본키
(Primary Key)
- 테이블의 고유한 식별자
- 하나의 테이블에 하나의 기본키만 정의할 수 있다. 
- 인덱스로 사용
- NULL 사용 불가능
- UNIQUE 와 NOT NULL 제약 조건을 만족해야한다.
고유키 - 고유한 식별자
- 기본키와 달리 NULL 사용 가능
- UNIQUE 제약 조건을 만족해야하지만 NOT NULL 은 해당되지 않는다. 
NOT NULL - 해당 칼럼에는 NULL 입력 금지, 어떠한 값이라고 입력해야한다. 
CHECK - 입력할수 있는 값의 종류 혹은 범위를 제한한다. 
외래키
(Foreign Key)
- 다른 테이블의 기본키를 외래키로 지정해서 생성
- 참조 무결성 제약조건 이라고도 한다. 
기본값
(DEFAULT)
- 해당 칼럼에 아무런 값도 입력하지 않다고 지정해둔 기본값으로 데이터가 입력된다. 

 


CREATE TABLE : 신규 테이블을 생성하는 SQL 문

 

<예시>

CREATE TABLE STUDY(  - 테이블의 이름을 명시

ID INT NOT NULL,   - 칼럼명데이터 속성

NAME VARCHAR(45)

);

 

<주의사항>

- 테이블명은 다른 테이블과 중복되어서는 안된다. 

- 한 테이블에 같은 컬럼명이 존재하면 안된다. 

- 데이터의 속성(데이터형)은 꼭 지정해주어야 한다. 

- 모든 이름(칼럼, 테이블)은 반드시 분자로 시작

- 테이블명에 사용하는 문자는 영문(대소문), 숫자, _(언더바), $(달러), #(샾) 문자만 해당된다. 

 

ALTER TABLE : 칼럼 및 제약조건을 추가/수정/제거

 

<예시>

칼럼 추가 : ALTER TABLE STUDY ADD (CLASS VARCHAR(45));

(해당 테이블에 칼럼을 추가한다.)

 

칼럼 제거 : ALTER TABLE STUDY DROP COLUMN CLASS;

(해당 테이블에서 원하는 컬럼을 제거한다.)

 

칼럼 변경 : ALTER TABLE STUDY MODIFY (CLASS VARCHAR(30)
                                                                         DEFAULT 0 NOT NULL

                                                                         NOVALIDATE );

SUBJECT 칼럼의 속성을 변경하며 제약조건을 추가,

기본값(DEFAULT)으로 0 을 주었고 NULL이 허용되지 않는다. (NOT NULL)

NOVALIDATE 는 이미 해당 칼럼에 NULL로 데이타가 있어도 무시하고 이 다음부터 새로 추가되는 데이터만

NULL 을 불허한다. 

 

칼럼명 변경 : ALTER TABLE STUDY RENAME CLASS TO SUBJECT;

 

외래키 생성 : 

(다른 테이블은 STUDENT로 가정하고 기본키는 STUDENT_NUMBER로 가정)

ALTER TABLE STUDY ADD CONSTRAINT FK_SUBJECT - STUDY 테이블에 제약조건(Constraint)를 추가

FOREIGN KEY (ID) -STUDY 테이블의 기본키인 ID 를 외래키로 지정

REFERENCES STUDENT (STUDENT_NUMBER) -STUDENT 테이블의 STUDENT_NUMBER  칼럼을 참조

 

외래키 제거 :

ALTER TABLE STUDY DROP CONSTRAINT FK_SUBJECT;

 

DROP TABLE : 테이블 제거

DROP TABLE SCHOOL;

DROP TABLE STUDENT;

 

RENAME : 테이블명 변경

RENAME STUDY TO SCHOOL;

TRUNCATE : 테이블 내의 데이타 삭제 

TRUNCATE TABLE SCHOOL;

 

728x90
반응형