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를 사용해야 한다.