-
[DDL]CREATESQLD/SQL 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를 사용해야 한다.
'SQLD > SQL' 카테고리의 다른 글
[DML]SELECT-서브쿼리 (0) 2023.09.07 [DML]SELECT-연산자 (0) 2023.08.30 [DML]SELECT구문 (0) 2023.08.29 [DML]INSERT,UPDATE,DELETE (0) 2023.08.29 [DDL]ALTER,DROP,TRUNCATE,RENAME (0) 2023.08.29