본문 바로가기

DB/SQLD

SQL 기본 - DDL

반응형

DDL (Data Definition Language)

데이터 정의 언어로 주로 테이블의 생성, 수정, 삭제를 할 수 있는 명령어다.

데이터 유형 (*오라클 기준)

character : 고정 길이 문자열 정보 , char 로 표현

varchar : 가변 길이 문자열 정보 , varchar2 로 표현

numberic : 정수, 실수 등 숫자 정보 , number 로 표현

date : 날짜와 시각정보


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
1. 테이블 생성
CREATE TABLE PLAYER(
    PLAYER_ID CHAR(7NOT NULL,
    PLAYER_NAME VARCHAR2(20NOT NULL,
    TEAM_ID CHAR(3NOT NULL,
    BACK_NO NUMBER(2),
    CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID),
    CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID)
);
// 선수 테이블을 생성
// 대소문자 구분 안함
// 문자 데이터는 반드시 가질 수 있는 최대 길이 표시
// 테이블 확인은 DESC 테이블명; 으로 조회 가능
CONSTRAINT 문으로 제약조건 명시 가능.
- 제약조건 종류
PRIMARY KEY : 기본키, 고유키면서 NOT NULL
UNIQUE KEY : 고유키지만 NULL값이 들어갈 수 있음
NOT NULL : NULL 값의 입력을 금지함, 해당 칼럼은 필수 입력
CHECK : 입력할 수 있는 값의 범위등을 제한
FOREIGN KEY : 외래키, 다른 테이블 칼럼 참조
 
CREATE TABLE TEAM_TEMP
AS SELECT * FROM TEAM;
// SELECT 문으로 테이블 생성 가능
 
2. 테이블 변경
ALTER TABLE PLAYER
ADD (ADDRESS VARCHAR2(80));
// ADD 로 칼럼 추가
 
ALTER TABLE PLAYER
DROP COLUMN ADDRESS;
// DROP 으로 칼럼 삭제
 
ALTER TABLE TEAM_TEMP
MODIFY (ORIG_YYYY VARCHAR2(8DEFAULT '20170606' NOT NULL);
// MODIFY 로 TEAM 테이블의 ORIG_YYYY칼럼의 데이터 유형을 VARCHAR2(8)로 변경하고 향후 입력되는 값을 DEFAULT 값으로 '20170606' 으로 변경
 
ALTER TABLE PLAYER
RENAME COLUMN PLAYER_ID TO TEMP_ID;
// RENAME 으로 컬럼 명 변경
 
ALTER TABLE PLAYER
DROP CONSTRAINT PLAYER_FK;
// DROP CONSTRAINT 로 제약조건 삭제
 
ALTER TABLE PLAYER
ADD CONSTRAINT PLAYER_FK
FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);
// ADD CONSTRAINT 로 제약조건 추가
 
3. 테이블명 변경
RENAME TEAM TO TEAM_BACKUP;
// 테이블명 변경
 
4. 테이블 삭제
DROP TABLE PLAYER;
// 테이블 삭제 명령 옵션으로 CASCADE CONSTRAINT 적용가능 쓰면 외래키를 참조하는 제약조건에 대해서도 삭제한다는 것
 
5. 테이블 내용 삭제
TRUNCATE TABLE PLAYER;
// 테이블의 레코드만 삭제하고 테이블은 유효
 


문제 Point

- null 의 의미 : "", 0 등과 다른 의미다. 아직 입력되지 않은 값을 뜻함.

- char 와 varchar2 의 차이 : 

고정 길이인 char는 문자열 뒤가 공백으로 채워진다. 비교할 때 주의해야 함

가변 길이인 varchar2는 최대 길이를 갖지만 가변 길이로 조정되기 떄문에 할당된 변수 값의 바이트만 적용.

- 작은 범위에서 큰 범위로 데이터 크기 변경 가능. 반대는 불가 (데이터 손실 우려)

 ex) varchar2(8)이던 문자열 컬럼을 varchar2(4) 이렇게 못줄임.

- default를 입력해 놓으면 데이터 입력시에 따로 입력 안했을때 default가 들어감.

default가 없으면 그냥 NULL이 들어감.


현실 개발에서는 테이블 변경은 최소화 해야한다.

기존 테이블에 데이터가 들어가 있고 이러면 변경이 힘들어질 뿐더러 부작용이 많아질 우려가 있기 때문.

반응형

'DB > SQLD' 카테고리의 다른 글

SQL 기본 - group by, having 절  (0) 2017.09.03
SQL 기본 - 함수  (0) 2017.09.02
SQL 기본 - where 절  (0) 2017.09.01
SQL 기본 - TCL  (0) 2017.08.31
SQL 기본 - DML  (0) 2017.08.28