SQLD/SQL
[DDL]CREATE
김귤🐵
2023. 8. 28. 21:25
DDL(Data Definition Language)
- 데이터 정의어는 데이터를 담을 테이블을 만들거나 수정하는 언어이다.
- 종류는 CREATE,ALTER,DROP,TRUNCATE,RENAME이 있다.
1.CREATE
-- CREATE의 기본 구조
CREATE TABLE 테이블명(
컬럼명1 데이터 타입 [DEFAULT 형식] [NOT NULL] [PRIMARY KEY]
)
- 테이블,인덱스,뷰 등을 생성하는 명령어
- 컬럼 추가 시 데이터 타입을 명시하고 제약조건을 추가할 수 있다.
1)데이터 타입
데이터 타입 (Oracle / SQL Server) |
설명 |
NUMBER / INTEGER | 숫자형 |
DATE / DATETIME | 날짜형 |
VARCHAR2 / VARCHAR | 가변길이 문자열 '문자열' != '문자열 ' |
CHAR | 고정길이 문자열 - 할당된 길이만큼 공백을 채움 '문자열' = '문자열 ' |
2)제약 조건
- 제약조건이란 데이터 무결성을 유지하기 위해 특정 컬럼에 설정하는 제약을 말한다.
①제약 조건의 종류
제약 조건 | 설명 |
PRIMARY KEY | 테이블의 고유성을 보장한다. 한 테이블당 최대 하나 정의가능 PK로 지정된 값은 기본으로 NOT NULL,UNIQUE [CONSTARINT] PK이름 PRIMARY KEY(컬럼명) |
FOREIGN KEY | A테이블에서 B테이블의 컬럼을 참조하고자 할 때 FK를 정의한다. [CONSTRAINT] FK이름 FOREIGN KEY(컬럼명) REFERENCES 테이블명(컬럼명); ❗️관련 옵션 1.CASCADE : 부모 데이터 삭제시 자식 데이터도 동시에 삭제된다. 2.SET NULL : 부모 데이터 삭제시 해당 자식 데이터의 컬럼은 NULL로 처리한다. 3.SET DEFAULT : 부모 데이터 삭제시 자식 데이터의 컬럼은 기본 값으로 업데이트된다. 4.RESTRICT : 자식 테이블에 데이터가 남아 있는 경우 부모 테이블 삭제 불가 5.NO ACTION : 참조 무결성 제약이 걸려있는 경우 삭제 및 수정 불가 |
NOT NULL | NULL값이 입력되는 것을 허용하지 않는다. |
CHECK | 컬럼에 저장될 수 있는 값의 범위를 제한한다. [CONSTRAINT] 제약조건명 CHECK 컬럼명 IN(’허용할 값’) |
UNIQUE | PK와 유사하게 고유성을 보장하기 위한 제약조건이다. PK와 차이점은 UNIQUE는 NULL값이 허용된다. |
DEFAULT | 입력값이 없을 때 기본값을 설정 |
②제약 조건의 추가
- 제약 조건은 테이블 생성시 기술하거나 테이블 생성 후 ALTER문을 통해서 추가할 수 있다.
1️⃣테이블 생성시 제약조건 추가
-- 컬럼 레벨 정의
CREATE TABLE USER(
PLAYER_ID VARCHAR2(100) PRIMARY KEY,
PW VARCHAR2(100) NOT NULL,
KR_NAME VARCHAR2(100),
EN_NAME VARCHAR2(100) DEFAULT 'NONE'
);
-- 테이블 레벨 정의
CREATE TABLE USER(
PLAYER_ID VARCHAR2(100),
PW VARCHAR2(100) NOT NULL,
KR_NAME VARCHAR2(100),
EN_NAME VARCHAR2(100) DEFAULT 'NONE',
GENDER VARCHAR2(3)
[CONSTRAINT] PLAYER_PK PRIMARY KEY(PLAYER_ID),
[CONSTRAINT] PLAYER_FK FOREIGN KEY(TEAM_ID) REFERENCES TEAM(TEAM_ID)
[CONSTRAINT] GENDER_MW CHECK GENDER IN(’남’,’여’)
)
- 테이블 생성시 제약조건을 기술할 때는 컬럼 레벨 정의 방식과 테이블 레벨 정의 방식이 있다.
- 테이블 레벨 정의에서 CONSTRAINT는 생략 가능하다.
- 컬럼 레벨에서 정의한 PK는 원하는 이름을 부여할 수 없다. 임의의 PK명이 부여된다.
- 테이블 레벨에서 정의한 PK는 원하는 이름으로 PK명을 부여할 수 있다.
2️⃣테이블 생성 후 추가하기
--UNIQUE,PK,FK 추가하는 기본 형태
ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건 (컬럼명);
ALTER TABLE TEAM ADD [CONSTRAINT PK_TEAMID]PRIMAR KEY(TEAM_ID)
ALTER TABLE TEAM ADD FOREIGN KEY(TEAM_TYPE) REFERENCES TYPE(TYPE_ID);
ALTER TABLE TEAM ADD UNIQUE(TEAM_NAME)
--NOT NULL,DEFAULT 추가하는 기본 형태
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터유형 [DEFAULT 값] [NOT NULL]
ALTER TABLE TEAM MODIFY KR_NAME VARCHAR2(100) NOT NULL;
ALTER TABLE TEAM MODIFY EN_NAME DEFAULT 'none'
- 오라클 기준으로 작성
- 테이블 생성 후 제약조건을 추가하기 위해서는 ALTER-ADD명령어를 사용한다.
- NOT NULL조건과 DEFAULT 값은 ALTER-MODIFY를 사용해야 한다.