ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DDL]CREATE
    SQLD/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
Designed by Tistory.