DDL(CREATE)
DDL(Date Definition Language) : 데이터 정의 언어
객체(Object)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP) 하는 등의 데이터의 전체적인 구조를
정의하는 언어로 주로 DB관리자, 설계자가 사용하는 언어
*오라클에서 객체(Object) 종류
테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE),
인덱스(INDEX), 패키지(PACKAGE), 트리거(TRIGGER),
프로시져(PROCEDURE), 함수(FUNCTION),
동의어(SYNONYM), 사용자(USER)
<CREATE>
- 테이블이나 인덱스, 뷰 등 다양한 DB객체를 생성하는 구문
1. 테이블 만들기
- ★테이블이란?
행(ROW)과 열(COLUMN) 으로 구성되는 가장 기본적인 데이터베이스 객체
데이터베이스 내에서 모든 데이터는 테이블을 통해 저장됨
[표현식]
CREATE TABLE 테이블명(
컬럼명 자료형(크기) [제약조건][기본값],
컬럼명 자료형(크기) [제약조건][기본값],
.....
[제약조건]
);
데이터 딕셔너리
- 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블
- 데이터 딕셔너리는 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을
진행할 때 데이터베이스 서버에 자동으로 갱신되는 테이블
USER_TABLE
- 사용자가 작성한 테이블을 확인할수 있는 딕셔너리 뷰
USER_TAB_COLUMNS
- 사용자가 작성한 테이블의 컬럼과 관련된 정보확인용 뷰
-EX) SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'MEMBER';
USER_CONSTRAINTS
- 사용자가 작성한 제약조건을 확인하는 뷰
USER_CONS_COLUMNS
- 제약조건이 걸려있는 컬럼 확인 뷰
-------------------------------------------------------------------
DESC MEMBER
- DESC(DESCRIBE, 묘사) : 테이블 구조를 간단히 표시
@ 값넣기
INSERT INTO 테이블명 VALUES(값,값,값.........);
INSERT INTO 테이블명(컬럼명,컬럼명..)VALUE(값,값..);
@제약조건(CONSTRAINTS)
- 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
- 테이블 작성 시 컬럼에 대해 값 기록에 대한 제약조건 설정 가능
- 데이터의 무결성을 보장하기 위해서 사용
- 입력 데이터에 문제가 없는지 자동으로 검사할 목적으로 사용
- 데이터의 수정/삭제 가능 여부 검사 목적으로 사용
@ 테이블 생성 시 제약조건 설정방법
1) 컬럼 레벨 방식 : 컬럼 기입 시 컬럼 뒤쪽에 제약조건 추가
2) 테이블 레벨 방식 : 테이블 생성구문 마지막에 별도로 제약조건 추가
@ 테이블 레벨 제약조건 설정 구문
- [CONSTRAINT 제약조건명] 제약조건(컬럼명)
@ 복합키
- 두개 이상의 컬럼을 묶어서 제약조건 설정
- UNIQUE, PRIMARY KEY 가능
- ★ 반드시 테이블 레벨로만 설정
- 묶음으로 같은 값을 확인하기 때문에 둘중 하나라도 값이 다르면 다른걸로 인식하여 값이들어감
@ 제약조건의 종류
PRIMARY KEY, UNIQUE, NOT NULL, CHECK, FOREIGN KEY
@ NUT NULL
- 해당 컬럼에 반드시 값이 기록되어야 하는 경우에 사용
- 데이터 삽입, 수정 시 NULL값을 허용하지 않도록 ★★컬럼레벨★★에서 제한
@ ★UNIQUE
- 컬럼 입력 값에 대해서 중복을 제한하는 제약조건
- 기존에 컬럼에 존재하는 값과 데이터 중 중복이 있으면 안됨
- 컬럼레벨, 테이블레벨 모두 설정 가능
@ CHECK
- 컬럼에 기록되는 값을 제한할 수 있는 제약 조건
- CHECK(컬럼명 비교연산자 비교값)
- 비교값으로는 리터럴만 사용가능 (변할수 있는 값이나, 함수는 사용불가능!!)
- 컬럼레벨, 테이블레벨 모두 설정 가능
@ PRIMARY KEY (기본키)
- 테이블에서 한 행의 정보를 식별할 수 있게 하기 위하여
- 사용할 컬럼에 추가하는 제약조건
-> 각 행들을 구별할 수 있는 식별자 역할을 지정할 경우 사용
- EX) 회원번호, 부서코드, 직급코드, 수강생번호, 주민등록번호
- PRIMARY KEY는 NOT NULL 제약조건 + UNIQUE 제약조건
- 한 테이블당 한개만 설정 가능
- 컬럼, 테이블 레벨 모두 설정가능
- 복합키 설정시 테이블 레벨만 가능
@ ★★★ FOREIGN KEY(외래키)
- 해당 컬럼에 참조된 다른 테이블이 제공하는 값만 사용 할 수 있도록 하느 ㄴ제약조건
- 관계형 데이터베이스(RDBMS)는 테이블 마다 관계가 맺어져 있는데 이 관계를 맺기 위해
사용하는 제약조건이 FOREIGN KEY -> 테이블간의 연결고리 역할
- 이 때, 부모 테이블(참조 당하는 테이블)의 PRIMARY KEY는 자식 테이블(참조를 하는 컬럼을 보유한테이블)의
FOREIGN KEY로 지정을 하게됨
- REFERENCES 참조할테이블명(참조할 컬럼명)
- 컬럼레벨, 테이블레벨 둘다 가능
-EX) FOREIGN KEY(GRADE_CODE) REFERENCE MEN_GRADE[(GRADE_CODE)]
참조 무결성
- 참조하는 테이블의 컬럼 값에 없는 데이터를 삽입할 수 없게 하는 것
- FOREIGN KEY는 연결고리 역할을 하기 때문에 테이블을 연결하여 조회하는 JOIN 구문에 사용할
컬럼으로 적합
@FOREIGN KEY 삭제 옵션
- 부모 테이블 데이터 삭제 시 자식 테이블의 기록된 데이터를 삭제 또는 NULL로 변환하는 옵션
1) ON DELETE SET NULL
부모 테이블 데이터 삭제시 자식 데이터 NULL로 변경
2) ON DELETE CASCADE
부모 테이블 데이터 삭제 시 해당 데이터를 참조하고 있던 자식 테이블의 행을 삭제시키는 옵션
@@ SUBQUERY를 이용한 테이블 생성
- 테이블 복사, 특정 조회 형태를 저장한 테이블 생성
- 컬럼명, 데이터 타입, 컬럼 값이 모두 복사되고 제약조건은 NOT NULL만 복사가 됨
@테이블 복사
EX) CREATE TABLE EMPLOYEE_COPY AS SELECT * FROM EMPLOYEE;
* 여기에서 서브쿼리는 ()를 사용하지 않음
@데이터의 컬럼, 데이터 타입만 복사하기
EX) CREATE TABLE EMPLOYEE_COPY3
AS SELECT * FROM EMPLOYEE WHERE 1=0;
'study > Oracle' 카테고리의 다른 글
7_oracle_DDL (ALTER, DROP) (0) | 2019.11.23 |
---|---|
6_oracle_DML, DCL, TCL (0) | 2019.11.22 |
5_oracle_서브쿼리 (0) | 2019.11.20 |
4_oracle_JOIN (0) | 2019.11.19 |
3_oracle_함수2 (0) | 2019.11.16 |