목차
◎ DDL(Data Definition Language)
+ 자료형
+ 컬럼에 주석 작성
+ 제약 조건 - 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. 참고할 내용
* 데이터 딕셔너리
- 자원을 효율적으로 관리하기 위해 다양한 정보를 저장하는 시스템 테이블
- 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때
데이터베이스 서버에 의해 자동으로 갱신되는 테이블
*
*
'Study > 수업 내용 정리' 카테고리의 다른 글
VIEW / SEQUENCE / INDEX + PL/SQL < 2021-09-28 > (0) | 2021.09.29 |
---|---|
TCL / DDL ( ALTER , DROP ) / DCL < 2021-09-27 > (0) | 2021.09.27 |
서브쿼리(SUBQUERY) & DDL(Data Manipulation Language) 2021-09-23 (0) | 2021.09.23 |
210907 ~ 210916 수업내용 정리 메모장 (0) | 2021.09.23 |
210824 ~ 210906 수업내용 정리 메모장 (0) | 2021.09.23 |