[SQL] DDL(CREATE)


DDL(Data Definition Language)
  • データ定義言語
  • には、Oracleが提供するオブジェクトの作成と削除(CREATE)、変更(ALTER)、および削除(DROP)が含まれます.
  • は、実際のデータ値ではなくデータ構造自体を定義する言語で、主にデータベース管理者、設計者によって使用されます.
  • *クラウド内のオブジェクト:テーブル、ビュー、シーケンス、インデックス、トリガ、ハンドラ、関数、ユーザーなど
    CREATE
    데이터베이스의 객체를 생성하는 구문이다.
        
    <TABLE(테이블)>
        테이블은 행과 열로 구성되는 가장 기본적인 데이터베이스 객체로 데이터베이스 내에서 모든 데이터는 테이블에 저장된다.
        
    <테이블 생성>
        [표현법]
            CREATE TABLE 테이블명 (
                컬럼명 자료형(크기) [DEFAULT 기본값] [제약조건],
                컬럼명 자료형(크기) [DEFAULT 기본값] [제약조건],
                ...
            );
            

    <컬럼에 주석 달기>
    	[표현법]
    	COMMENT ON COLUMN 테이블명.컬럼명 IS ‘주석내용’;
        


    데이터 딕셔너리(메타 데이터)
        자원을 효율적으로 관리하기 위해서 다양한 객체들의 정보를 저장하는 시스템 테이블이다.
        사용자가 객체를 생성하거나 변경하는 등의 작업을 할 때 데이터베이스에 의해서 자동으로 갱신되는 테이블이다.
        데이터에 관한 데이터가 저장되어 있다고 해서 메타 데이터라고도 한다.
        
    USER_TABLES         : 사용자가 가지고 있는 테이블들의 전반적인 구조를 확인하는 뷰 테이블이다.
    USER_TAB_COLUMNS    : 테이블, 뷰의 컬럼과 관련된 정보를 조회하는 뷰 테이블이다.


    <제약 조건(CONSTRAINT)>
    	사용자가 원하는 조건의 데이터만 유지하기 위해서 테이블 작성 시 각 컬럼에 대해 저장될 값에 대한 제약조건을 설정할 수 있다.
    	제약 조건은 데이터 무결성 보장을 목적으로 한다. (데이터의 정확성과 일관성을 유지시키는 것)
    
    	* 종류: NOT NULL, UNIQUE, CHECK, PRIMARY KEY, FOREIGN KEY
    
    	[표현법]
    	1) 컬럼 레벨
    	CREATE TABLE 테이블명 (
               컬럼명 자료형(크기) [CONSTRAINT 제약조건명] 제약조건,
               ...
            );
                
            2) 테이블 레벨
    	CREATE TABLE 테이블명 (
               컬럼명 자료형(크기),
               ...
            [CONSTRAINT 제약조건명] 제약조건(컬럼명)
            );
    
    <NOT NULL 제약조건>
    	해당 컬럼에 반드시 값이 있어야만 하는 경우 사용한다.
    	삽입/수정 시 NULL 값을 허용하지 않도록 제한한다.
        





    <UNIQUE 제약조건>
    	컬럼의 입력 값에 중복 값을 제한하는 제약조건이다.
    	데이터를 삽입/수정 시 기존에 있는 데이터 값 중에 중복되는 값이 있을 경우 삽입/수정되지 않는다.
    	제약조건 지정방식으로 컬럼 레벨, 테이블 레벨 방식 모두 사용 가능하다.


    列レベルでUNIQUE制約を設定する

    テーブルレベルでUNIQUE制約を設定する


    <CHECK 제약조건>
    	컬럼에 기록되는 값에 조건을 설정하고 조건을 만족하는 값만 기록할 수 있다. 
    	비교 값은 리터럴만 사용 가능하다. (변하는 값이나 함수 사용하지 못한다.)
    
    	[표현법]
    	CHECK(비교연산자)
    	CHECK(컬럼 [NOT] IN(값, 값, …))
    	CHECK(컬럼 = 값)
    	CHECK(컬럼 BETWEEN 값 AND 값)
    	CHECK(컬럼 LIKE ‘문자’ OR 컬럼 LIKE ‘문자’)
        





    <PRIMARY KEY(기본키) 제약조건>
    	테이블에서 한 행의 정보를 식별하기 위해 사용할 컬럼에 부여하는 제약조건이다.
    	각 행들을 구분할 수 있는 식별자 역할(사번, 부서 코드, 직급 코드, …)
    	기본 키 제약조건을 설정하게 되면 자동으로 해당 컬럼에 NOT NULL + UNIQUE 제약조건이 설정된다.
    	한 테이블에 한 개만 설정할 수 있다. (단, 한 개 이상의 컬럼을 묶어서 PRIMARY KEY로 제약조건을 설정할 수 있다.)
    	컬럼 레벨, 테이블 레벨 방식 모두 설정 가능하다.
        







    <FOREIGN KEY(외래 키) 제약조건>
    	다른 테이블에 존재하는 값만을 가져야 하는 컬럼에 부여하는 제약조건이다. (단, NULL 값도 가질 수 있다.)
    	즉, 참조된 다른 테이블이 제공하는 값만 기록할 수 있다.(FOREIGN KEY 제약조건에 의해서 테이블 간에 관계가 형성된다.)
    
    	[표현법]
    	1) 컬럼 레벨
    		컬럼명 자료형(크기) [CONSTRAINT 제약조건명] REFERENCES 참조할테이블명 [(기본키)] [삭제룰]
    
    	2) 테이블 레벨
    		[CONSTRAINT 제약조건명] FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명 [(기본키)] [삭제룰]
                
        [삭제룰]
    		부모 테이블의 데이터가 삭제됐을 때의 옵션을 지정해 놓을 수 있다.
    		1) ON DELETE RESTRICT : 자식 테이블의 참조 키가 부모 테이블의 키 값을 참조하는 경우 부모 테이블의 행을 삭제할 수 없다. (기본적으로 적용되는 옵션)
    		2) ON DELETE SET NULL : 부모 테이블의 데이터가 삭제 시 참조하고 있는 자식 테이블의 컬럼 값이 NULL로 변경된다.
    		3) ON DELETE CASCADE : 부모 테이블의 데이터가 삭제 시 참조하고 있는 자식 테이블의 컬럼 값이 존재하는 행 전체가 삭제된다.