*DDL :

 -Data Definition Language

 -데이터 정의 언어.

 -객체를 만들고 수정하고 삭제하는 구문 ( CREATE , ALTER, DROP)

 

1. CREATE : 객체(테이블 , 인덱스 , 뷰 등..) 를 생성하는 구문

 -CREATE TABLE `이름` (

  `컬럼명`  `자료형`  (DEFAULT ~ ) (` 제약조건~` )

   ...

  )

*서브쿼리를 이용한 테이블 복사(서브쿼리로 JOIN, 지정 가능 , WHERE 조건 가능)

 CREATE TABLE BCOPY AS ( SELECT * FROM B);

  -->제약조건 중 NOT NULL 제약조건만 복사되고 나머지는 사라진다.

*오라클의 데이터타입

1.CHAR : 고정길이 문자(빈칸이 있어도 고정)

2.VARCHAR2 : 가변길이 문자(빈칸 생기면 날림)

3.NUMBER : 숫자 (정수, 실수)

4.DATE : 날짜

5.CLOB : 대용량 문자

6.BLOB : 대용량 이진 데이터

7.TIMESTAMP : 밀리세컨드 단위 추가 DATE

 

*컬럼에 주석 넣기

 -COMMENT ON COLUMN `테이블명`.`컬럼명` IS `내용`

 

*제약조건 : 데이터 무결성( 저장된 데이터의 정확성과 일관성을 보증) 을 목적으로

                조건을 설정하는 강제 제약     

 1. NOT NULL        : 널을 허용하지 않는다

  컬럼 레벨에서만 가능하다

 `컬럼명` `자료형` (생략가능)[CONSTRAINT 제약조건명] NOT NULL 

 2. UNIQUE           :  중복값을 허용하지 않는다 (NULL은 가능하다)

   컬럼 레벨     --`컬럼명` `자료형` (생략가능)[CONSTRAINT 제약조건명] UNIQUE

   테이블 레벨  --(생략가능)[CONSTRAINT 제약조건명] UNIQUE (`컬럼명1` , `컬럼명2` )

    *테이블 레벨에서 묶어서 UNIQUE 복합키 설정이 가능하다 ( 두 컬럼이 모두 중복되는 경우만 걸러냄)

 3. PRIMARY KEY   :  널과 중복을 허용하지 않으며 테이블의 식별자로 사용한다

                              한 테이블당 한 개만 설정 가능하고 테이블 레벨에서 여러 컬럼을 묶어 설정할 수 있다.

컬럼 레벨     --`컬럼명` `자료형` (생략가능)[CONSTRAINT 제약조건명] PRIMARY KEY

테이블 레벨  --(생략가능)[CONSTRAINT 제약조건명] PRIMARY KEY (`컬럼명1` , `컬럼명2` )

 4. FOREIGN KEY    : 참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음

                             FOREIGN KEY 제약조건으로 테이블간에 관계가 형성됨

                             제공 되는 값 외 NULL도 사용 가능

                             참조될 수 있는 컬럼은 PRIMARY KEY / UNIQUE 만 가능하며

                             참조할 테이블의 참조 컬럼명이 생략되면

                             참조 테이블의 PRIMARY KEY를 자동 참조할 컬럼으로 설정함

컬럼 레벨     --`컬럼명` `자료형` (생략가능)[CONSTRAINT 제약조건명] REFERENCES `참조 테이블명` (`참조 컬럼명`)

테이블 레벨  --(생략가능)[CONSTRAINT 제약조건명] FOREIGN KEY (컬럼명) REFERENCES `참조 테이블명` (참조

                                                                                                                                             컬럼명)

 5. CHECK             : 저장 가능한 값 조건을 미리 설정

=> 모두 테이블레벨에서도 가능하지만 NOT NULL은 테이블 레벨에 불가능하다

컬럼 레벨     --`컬럼명` `자료형` (생략가능)[CONSTRAINT 제약조건명] CHECK (`컬럼명` 비교연산자 비교값)

테이블 레벨  --(생략가능)[CONSTRAINT 제약조건명] CHECK(`컬럼명` 비교연산자 비교값)

   *비교연산자 : > ,< ,IN, BETWEEN A AND B, ...

 

 

*FOREIGN KEY 삭제 옵션 ( FOREIGN KEY 제약조건 뒤에 추가)

 - 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터를 처리하는 방법

 - 입력 없어도 ON DELETE RESTRICTED 가 DEFAULT( 참조되는 컬럼이면 삭제 불가)

 - ON DELETE SET NULL : 부모키 삭제 시 자식키를 NULL로 변경하는 옵션

 - ON DELETE CASCADE : 부모키 삭제시 자식키도 함께 삭제됨

 

 

+ Recent posts