열정 실천

003. SQL - DDL 데이터 정의어 CREATE, ALTER, DROP 본문

CS/DATABASE

003. SQL - DDL 데이터 정의어 CREATE, ALTER, DROP

구운오니 2024. 9. 24. 14:06
728x90

DDL (Data Define Language)

DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정하는데 사용하는 언어 

DML (Data Manipulation Language)

저장된 데이터를 실직적으로 관리하는데 사용하는 언어

DCL (Data Control Language)

데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어

 

CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의
ALTER TABLE에 대한 정의 변경
DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제

 

 

 

 

 

 

CREATE 문

 

 

Syntax

CREATE TABLE 테이블명
 ( 속성 명  데이터 타입  |  제약조건 
   속성 명  데이터 타입  |  제약조건 
   ....
   [PRIMARY KEY (기본키인 속성명)]
   [FOREIGN KRY (외래키인 속성명) REFERENCE 테이블명(속성명)
) ;

 

▶ 데이터 타입

문자형 CHAR, VARCHAR, TEXT, MEDIUMTEXT, LONGTEXT, JASON
숫자형 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DECIMAL, DOUBLE
날짜형 DATE, TIME, DATETIME, TIMESTAMP, YEAR
이진 데이터형 BINARY, VARBINARY, TINYBLOB, BLOB

 

 

제약조건

NOT NULL NULL값을 허용하지 않고, 반드시 데이터를 입력. 제약조건이 NULL이면 해당 컬
럼은 NULL값을 허용.
UNIQUE 해당 칼럼이 중복되는 데이터가 존재할 수 없는 유일성을 보장하는 제약조건
PRIMARY KEY NOT NULL, UNIQUE 제약 조건의 결합과 같다. 테이블 또는 뷰는 단 한 개의
PRIMARY KEY 제약조건을 가짐
FORIEGN KEY 같은 테이블 또는 서로 다른 두 개 테이블의 키 컬럼 사이의 관계

 

 

 

CREATE TABLE EMPLOYEE
( Fname VARCHAR(10) NOT NULL,
Minit CHAR,
Lname VARCHAR(20) NOT NULL,
Ssn CHAR(9) NOT NULL,
Bdate DATE,
Address VARCHAR(30),
Sex CHAR(1),
Salary DECIMAL(5),
Super_ssn CHAR(9),
Dno INT NOT NULL,
PRIMARY KEY (Ssn),
FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE (ssn));

 

테이블 생성 후 DESCRIBE 명령어로 확인 가능 DESC EMPLOYEE; 

 

 

 

 

▶ CREATE INDEX 인덱스 생성하기

CREATE [UNIQUE] INDEX 인덱스명 
ON 테이블명
 ( 속성 명  [ASC | DESC]  [,속성명 [ASC | DESC]])
[CLUSTER];

 

- UNIQUE : 중복 값이 없는 속성으로 인덱스 생성 

- CLUSTER : 사용하면 인덱스가 클러스터드 인덱스로 설정

 

 

 

 

 

 

 

ALTER 문

 

 

Syntax

속성 추가
ALTER TABLE 테이블명
ADD(추가할컬럼명, 데이터타입);

 

속성 수정
ALTER TABLE 테이블명 
MODIFY (컬럼명  데이터 타입 
                 컬럼명  데이터 타입
                  ... );

 

속성 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명

 

 

 

ALTER TABLE EMPLOYEE
MODIFY Fname varchar(20);

 

EMPLOYEE테이블의 Fname 속성의 데이터 타입이 VARCHAR(10)으로 변경

 

 

 

DROP 문

 

 

Syntax

DROP SCHEMA 스키마명 [CASCADE | RESTRICT] 

 

DROP TABLE 테이블명 [CASCADE | RESTRICT] 

 

DROP VIEW 뷰명 [CASCADE | RESTRICT] 

 

DROP INDEX 인덱스명 [CASCADE | RESTRICT] 

 

DROP DOMAIN 도메인명 [CASCADE | RESTRICT] 

 

DROP CONSTRAINT 제약조건명 [CASCADE | RESTRICT] 

 

- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거

- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소

 

 

 

VIEW 만들어보기

 

VIEW : 원하는 데이터만 볼 수 있게 만든 데이터 조합

 

장점 

- 접근 제어로 보안 제공

- 데이터 관리 용이 

 

단점 

- 삽입, 삭제, 갱신, 연산에 제약

 

 

부서번호가 5인 사원의 SSN, 이름이 포함된 뷰를 생성

CREATE VIEW EMP5
AS SELECT Ssn, Fname, Lname
FROM EMPLOYEE
WHERE Dno = 5;

 

 

 

 

 

 

 

 

 

 

 

현재 생성된 database나 table 목록을 보려면?!

 

SHOW DATABASES;
SHOW TABLES;

 

table의 속성값들을 보려면?! 
DESC 테이블명;

 

 

 

 

 

 

 

728x90