[SQL] DDL(CREATE)
DDL(Data Definition Language)データ定義言語 には、Oracleが提供するオブジェクトの作成と削除(CREATE)、変更(ALTER)、および削除(DROP)が含まれます.は、実際のデータ値ではなくデータ構造自体を定義する言語で、主にデータベース管理者、設計者によって使用されます. *クラウド内のオブジェクト:テーブル、ビュー、シーケンス、インデックス、トリガ、ハンドラ、関数、ユーザーなど
CREATE
列レベルでUNIQUE制約を設定する
テーブルレベルでUNIQUE制約を設定する
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 : 부모 테이블의 데이터가 삭제 시 참조하고 있는 자식 테이블의 컬럼 값이 존재하는 행 전체가 삭제된다.



















Reference
この問題について([SQL] DDL(CREATE)), 我々は、より多くの情報をここで見つけました https://velog.io/@aljongjong/SQL-DDLCREATEテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol