테이블 생성하기
CREATE TABLE table_name (column_name datatype [DEFAULT expr] [column_constraint], [table_constraint ])
column_constraint - 컬럼수준에서 제약조건을 거는것 / 각 컬럼마다 적는다.
table_constraint - 컬럼을 다 만들고 마지막에 테이블 수준에서 제약조건을 건다.
table_name, column_name - 테이블 이름 지정, 컬럼 이름 지정
datatype - 컬럼의 데이터 타입, 크기 지정
DEFAULT expr - 해당 컬럼에 적용될 자동 기본값
테이블 생성 조건
테이블 및 컬럼 이름
문자로 시작 , 30자 이하
영문대/소문자, 숫자, 특수문자, 한글만 포함가능
중복되는 이름은 사용 할 수 없음
예약 키워드는 사용할 수 없음
예제
CREATE TABLE TEST(
ID NUMBER(5),
NAME CHAR(10),
ADDRESS VARCHAR2(50)
);
제약조건(CONSTRAINT)
테이블을 만들때는 제약조건을 넣을수 있다..
WQQ2
NOT NULL - 해당 컬럼에 NULL이 들어가선 안된다.
UNIQUE - 해당 컬럼 또는 컬럼 조합 값이 유일하도록 한다.
PRIMARY KEY - 각 행을 유일하게 식별할 수 있도록 한다.
REFERENCES TABLE - 외래키로서 부모키와 관계를 가진다. 이건 부모키에 의존하는 데이터이거나 NULL값만 허용 한다.
CHECK - 해당 컬럼에 특정 조건을 항상 만족시키도록 한다(전처리)
제약조건을 설정 할 수있고 나머지는 테이블과 컬럼레벨에서 다 가능하다.
제약 조건을 만들 때 컬럼부분에서 제약조건을 설정하는 방법과 컬럼부분이 끝난뒤 맨 마지막에 제약조건을 설정하는 테이블 수준의 제약조건 설정을 하는 방법 2가지가 있다.
제약 조건을 통해 데이터가 들어올때 전처리를 한다.
NOT NULL 제약조건
NOT NULL 조건에서 아래와 같이 NULL을 입력하면 오류가 뜬다.
여기 아래에서 오류가 난 이유는 위에서 말했듯이 NOT NULL 제약 조건은 테이블 레벨에서 할 수 없고 컬럼 레벨에서 해야 된다.
REFERENCES 제약조건
CHECK 제약조건 / PRIMARY KEY 제약 조건
입력되는 값을 체크하여 설정된 값이외의 값이 들어오면 오류와 함께 쿼리가 실행이 되지 않게 만든다.
# 변하는 값은 조건으로 사용할 수 없다.
교차 테이블 생성하는 방법
관계형 데이터 베이스는 다대다를 구현할 수 없다. 다대다를 교차 테이블을 하나만들어서 풀어준다.
테이블이 두개일때 테이블을 하나 더만들어서 이런 다대다 관계를 풀어 준다.
여기서 TB_CLASS_PROFESSOR 과 같다. 이런경우에 외래키 이면서 기본키이다.
이런경우에는 컴퍼짓 키는 테이블의 조건으로 하고 각각의 외래키는 컬럼수준으로 한다.
이런 테이블의 쿼리다. 컬럼수준에서는 외래키를 잡고 테이블 수준에서 복합키를 잡으면 된다.
서브쿼리를 활용해 테이블을 생성
CREATE TABLE table_name [|(column_name)] AS SUBQUERY
서브쿼리를 사용하기 때문 물리적인 메모리 공간을 차지하는 단점이 있긴하다.
EMPLOYEE 테이블에 데이터가 있었기 때문에 새로만든 서브쿼리 테이블에도 데이터가 들어간다.
'Base > Database' 카테고리의 다른 글
[Database] INSERT,UPDATE,DELETE 문 정리와 다양한 예제 (0) | 2020.07.20 |
---|---|
[Database] DDL(데이터 정의어), DML(데이터 조작어), DCL(데이터 제어어) 이란? (0) | 2020.07.19 |
[Database] Subquery(단일,다중) 사용법 (0) | 2020.07.17 |
[Database] SEP Operator(UNION,UNION ALL, INTERSECT,MINUS) & IN Operator사용법 (0) | 2020.07.17 |
[Database] Self JOIN 사용법 (ANSI 표준) (0) | 2020.07.17 |