테이블을 생성할 때 CREATE를 이용해서 만든다. 문법은 다음과 같다.
CREATE TABLE 테이블명 (컬럼이름 컬럼타입)
EX) CREATE TABLE DEPARTMENT
(DEPTNO NUMBER(2),
DNAME VARCHAR2(15),
LOC VARCHAR2(15));
위와 같이 입력하면 테이블 안에 컬럼들이 생성된다.
컬럼 안에 레코드를 넣기 위해서는 다음과 같이 입력한다.
EX) INSERT INTO DEPARTMENT (DEPTNO, DNAME, LOC)
VALUES(10, '인사', '서울'); --NULL 값은 입력불가.
서브쿼리를 이용해서 테이블를 생성할 수 있다. 아래와 같은 방법을 앞글자만 따서 CTAS(씨탁스)라고도 부른다.
CREATE TALBE 테이블명 [컬럼이름N] AS SUBQUERY
EX)
CREATE TABLE DEPTA (NO, NAME)
AS
SELECT DEPTNO, DNAME FROM DEPT;
SELECT * FROM DEPTA
DEFAULT
해당 테이블에 행을 입력할 때, 해당 컬럼에 값을 지정하지 않은 경우 자동으로 디폴트 값이 입력됨.
이는 NULL값이 입력되는 것을 방지하기 위한 것이다.
EX) CREATE TABLE DEF_TABLE
(NUM NUMBER(2), WRITEDAY DATE DEFAULT SYSDATE);
INSERT INTO DEF_TABLE VALUES (1, DEFAULT);
제한조건 (CONSTRAINTS)
부적절한 자료가 입력되는 것을 방지하기 위하여 CONSTRAINT을 사용한다.
제약 조건은 테이블 레벨 과 컬럼 레벨에서 규칙을 적용한다.
제약 조건은 종속성이 존재할 경우 테이블 삭제를 방지한다.
테이블에서 행이 삽입, 갱신 삭제 될 때마다 테이블에서 규칙을 적용한다.
일시적으로 DISABLE과 ENABLE 할 수 있다.
*컬럼 레벨 : 한 개의 컬럼에 한 개의 제약조건만 가능함
*테이블 레벨: 한 개 이상의 컬럼에 한 개의 제약 조건을 정의할 수 있다.
참고로, NOT NULL은 테이블 레벨이 불가능하다.
ㅁPRIAMRY KEY
- 중복불가,
- NULL 값 입력불가.
ㅁUNIQUE
-중복불가
-NULL 값 허용
ㅁCHECK
-조건에 맞는 데이터 값만 입력가능하도록 만들어줌.
EX)
CREATE TABLE DEPARTMENT8
(DEPTNO NUMBER(2),
DNAME VARCHAR2(15),
LOC VARCHAR2(15),
CONSTRAINT DEPARTMENT8_DNAME_CK CHECK(DNAME IN ('개발','인사')));
ㅁFOREIGN
참조키라고 부르며 해당 테이블에서 다른 테이블을 참조할 때 올바른 데이터값만 참조 가능하도록 제약하는 방법이다.
EX)
A. 컬럼 레벨
CREATE TABLE EMP03
(EMPNO NUMBER(4) CONSTRAINT EMP03_EMPNO_PK PRIMARY KEY,
ENAME VARCHAR2(15),
DEPTNO NUMBER(2) CONSTRAINT EMP03_DEPTNO_FK
REFERENCES DEPT02(DEPTNO));
B. 테이블 레벨
CREATE TABLE EMP03
(EMPNO NUMBER(4) CONSTRAINT EMP03_EMPNO_PK PRIMARY KEY,
ENAME VARCHAR2(15),
DEPTNO NUMBER(2) CONSTRAINT EMP03_DEPTNO_FK FOREIGN KEY(DEPTNO)
REFERENCES DEPT02(DEPTNO));
*테이블 레벨 사용 시 꼭 FOREIGN KEY 입력하기
'DataBase > DDL' 카테고리의 다른 글
#Java break 문 (0) | 2021.07.13 |
---|---|
7/5 SQL 테이블 제거 및 변경 (0) | 2021.07.06 |
7/2 테이블 생성 (0) | 2021.07.02 |
7/2 DDL (0) | 2021.07.02 |