Study/수업 내용 정리

DDL(Data Definition Language) 2021-09-24

뱅코더 2021. 9. 26. 23:49

목차

◎ DDL(Data Definition Language)

더보기
※ CREATE

+ 자료형
+ 컬럼에 주석 작성
+ 제약 조건 - 1) NOT NULL
                      - 2) UNIQUE                      
                      - 3) PRIMARY KEY
                      - 4) FOREIGN KEY
                      - 5) CHECK


 

 

 


 

◎ DDL(Data Definition Language)

- 데이터베이스를 정의하는 언어 / 객체를 만들거나(CREATE) 수정(ALTER) , 삭제(DROP)하는 구문

- 테이블에서 컬럼의 추가 / 삭제

- 컬럼값의 자료형 변경

- 테이블 생성 / 삭제

- (참고)오라클 객체의 종류 : 테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저    (PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER) 등

 

1) CREATE 

- 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문

- 테이블로 생성된 객체는 DROP 구문을 통해 제거 가능

 

*** 테이블이란?

- 행과 열로 구성되는 가장 기본적인 DB 객체

- DB내에서 모든 데이터는 테이블을 통해 저장된다.

 

- [표현식]

-- [표현식]
CREATE TABLE 테이블명 (
        		컬럼명 자료형(크기), 
        		컬럼명 자료형(크기),
        		...
                       );

 

2) 자료형

 

- CHARACTER 자료형

 

CHAR ( SIZE [ ( byte | char ) ] ) - 고정 크기 문자형 ( 2000 BYTE )

* SIZE : 포함될 문자(열)의 크기

* 지정한 크기보다 적은 문자가 들어오면 남는 공간에는 공백으로 채워진다.

* 지정한 크기가 넘어가면 오류 발생

* 고정된 크기의 문자열 저장 시 좋음. ( 주민등록번호 / 전화번호 )

 

VARCHAR2 ( SIZE [ ( byte | char ) ] ) - 가변 크기 문자형 ( 4000 BYTE )

* SIZE : 포함될 문자(열)의 크기

* 크기가 0인 값은 NULL로 인식한다.

* 만일 VARCHAR(10) 컬럼에 'ABCD' 4BYTE 저장하면 나머지 6BYTE 반환

* 고정되지 않은 문자열 저장 시 좋음.

* 빈 공간을 다시 반납하는 과정을 거치므로 고정 길이 문자 자료형과 속도차이 있음

* NVARCHAR2 : 가변 길이 문자열 (문자열 길이)

 

- NUMBER 

NUMBER [ ( P [ , S ] ) ]

* P : 표현할 수 있는 전체 숫자 자리 ( 1~38 )

* S : 소수점 이하 자리수 ( -84 ~ 127)

ex)

숫자 값 : 12345.678 

NUMBER 

NUMBER ( 7 , 1 ) : 12345.7 (7자리 수 중 소수점 1자리, 정수 6자리 ( ' . ' 포함 )

NUMBER ( 7 , 3 ) : 오류 발생 ( 소수점 3자리 , 정수 ( ' . ' 포함 ) 6자리 공간이 없기 때문 )

 

- DATE 

* 날짜 타입 자료형

* TIMESTAMP : DATE + 밀리세컨드

 

- BLOB

* 대용량 이진 데이터 (4GB) : 파일 저장용 (이미지, 동영상, 음악)

 

- CLOB

* 대용량 문자 데이터 (4GB) : 문자 저장용

 

2) 컬럼에 주석 달기

- [ 표현식 ]

COMMENT ON COLUMN 테이블명 . 컬럼명 IS '주석 내용' ;

* 컬럼명에 대한 부가 설명 작성

ex) COMMENT ON COLUMN MEMBER.MEMBER_ID IS '회원 아이디' ;

==> MEMBER 테이블의 MEMBER_ID 컬럼은 '회원 아이디'를 저장하는 컬럼이다

 

3) 제약 조건

* 사용자가 원하는 조건의 데이터만 유지하기 위하여 특정 컬럼에 설정하는 제약

* 데이터 무결성 보장을 목적으로 한다.

* 데이터 무결성 : 저장된 데이터의 정확성과 일관성 보증 (중복 X , NULL X)

*  데이터의 수정/ 삭제 가능여부 검사 등을 목적 ==> 제약조건을 위배하는 DML 구문은 수행 불가

* 제약조건 종류
   PRIMARY KEY , NOT NULL , UNIQUE , CHECK , FOREIGN KEY  - 무조건 암기

 

- NUT NULL

* 해당 컬럼에 반드시 값이 들어가야 하는 경우

* 삽입 / 수정 시 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한한다.

* 컬럼명 자료형 [ CONSTRAINT 제약조건명 ] NOT NULL

* NUT NULL 조건 오류 

ORA-01400: cannot insert NULL into ( )

 

- UNIQUE

* 컬럼에 입력 값에 대해 중복을 제한

* 컬럼 레벨 / 테이블 레벨에서 설정 가능

* UNIQUE 조건이 설정된 컬럼에 NULL 값은 중복 삽입 가능함

* 컬럼명 자료형 [ CONSTRAINT 제약조건명UNIQUE ==> 컬럼 레벨

* CREATE 구문 맨 밑에 [ CONSTRAINT 제약조건명 ] UNIQUE ( 컬럼명 ) ==> 테이블 레벨

* UNIQUE 조건 오류

ORA-00001: unique constraint (  ) violated

 

* UNIQUE 복합키 

* 두 개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약 조건 설정

* 테이블 레벨에서만 설정 가능!!

* UNIQUE ( 컬럼명 , 컬럼명 )

 

- PRIMARY KEY (기본키)

* 테이블에서 한 행의 정보를 찾기위해 사용하는 컬럼

* 식별자(IDENTIFIER) 역할

* NOT NULL + UNIQUE 의 기능

* 한 테이블당 하나만 설정 가능

* 컬럼 레벨 / 테이블 레벨 설정 가능

* 복합키 설정 가능

* 컬럼명 자료형 [ CONSTRAINT 제약조건명PRIMARY KEY ==> 컬럼 레벨

* CREATE 구문 맨 밑에 [ CONSTRAINT 제약조건명 ] PRIMARY KEY ( 컬럼명 ) ==> 테이블 레벨

* 오류 구문

기본키 중복으로 오류, ORA-00001: unique constraint ( ) violated

기본키가 NULL 이므로 오류, ORA-01400: cannot insert NULL into ( )

 

- FOREIGN KEY (외래키) 

* 참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용 가능* 외래키 제약 조건에 의해 테이블간의 관계 형성 => JOIN의 기준* 제공되는 값 외에는 NULL 사용 가능하다.

* 표현식

- 컬럼레벨일 경우
 컬럼명 자료형(크기) [CONSTRAINT 이름] REFERENCES 참조할 테이블명 [(참조할컬럼)] [삭제룰]

- 테이블레벨일 경우
 [CONSTRAINT 이름] FOREIGN KEY (적용할컬럼명) REFERENCES 참조할테이블명 [(참조할컬럼)] [삭제룰]

* 참조할 테이블의 컬럼명이 생략되면 자동으로 PRIMARY KEY로 설정된 컬럼이 참조

* 참조 될 수 있는 컬럼은 PRIMARY KEY 컬럼과 UNIQUE 설정된 컬럼

* FOREIGN KEY 삭제 옵션

- 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터를 어떻게 처리 할 지 정의하는 옵션

1) ON DELETE RESTRICTED (삭제 제한)

* 기본 지정 값

* FOREIGN KEY로 지정된 컬럼에서 사용되고 있는 값일 경우 제공하는 컬럼의 값은 삭제 불가

2) ON DELETE STE NULL 

* 부모키 삭제 시 자식키를 NULL로 변경

3) ON DELETE CASCADE 

* 부모키 삭제 시 자식키도 함께 삭제

 

- CHECK 제약조건

* RDBMS의 데이터 무결성과는 관련 없는 제약 조건

* 컬럼에 기록되는 값에 대한 조건 설정

* CHECK ( 컬럼명 비교 연산자 비교 값 )

* (주의) 비교 값은 리터럴만 사용 가능 / 변하는 값이나 함수는 사용 불가능

 


2. 참고할 내용

* 데이터 딕셔너리

- 자원을 효율적으로 관리하기 위해 다양한 정보를 저장하는 시스템 테이블

- 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때

  데이터베이스 서버에 의해 자동으로 갱신되는 테이블

* 

*