각 컬럼에 대해서 정의합니다.
NULL 값을 허용하지 않습니다.
중복된 값을 허용하지 않고, 항상 유일한 값을갖도록 합니다.
NULL 을 허용하지 않고, 중복된 값도 허용하지 않습니다.
다른 테이블의 기본키를 참조하여 테이블 간 관계를 성정합니다.
입력되는 값이 특정 조건을 만족하는지 확인합니다.
값이 명시되지 않았을때 사용할 기본값을 지정합니다.
DROP TABLE emp01;
CREATE TABLE emp01(
empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
deptno NUMBER(2)
);
DESC emp01;
INSERT INTO emp01 VALUES (NULL, NULL, 'SALESMAN', 30);
SELECT * FROM emp01;
DROP TABLE emp02;
CREATE TABLE emp02(
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2)
);
DESC emp02;
INSERT INTO emp02 VALUES (NULL, NULL, 'SALESMAN', 30); - Error
DROP TABLE emp03;
CREATE TABLE emp03(
empno NUMBER(4) UNIQUE,
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2)
);
DESC emp03;
INSERT INTO emp03 VALUES (1100, 'ORACLE', 'DB', 50);
SELECT * FROM emp03;
-- INSERT INTO emp03 VALUES (1100, 'MARIA', 'DB', 50);
INSERT INTO emp03 VALUES (NULL, 'MARIA', 'DB', 50);
SELECT * FROM emp03;
DROP TABLE emp04;
CREATE TABLE emp04(
empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2)
);
DESC emp04;
INSERT INTO emp04 VALUES (1100, 'ORACLE', 'DB', 50);
SELECT * FROM emp04;
INSERT INTO emp04 VALUES (1100, 'MARIA', 'DB', 50);
INSERT INTO emp04 VALUES (NULL, 'MARIA', 'DB', 50);
DROP TABLE emp05;
CREATE TABLE emp05(
empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2) REFERENCES dept(deptno)
);
DESC emp05;
INSERT INTO emp05 VALUES (1100, 'MARIA', 'DB', 40);
SELECT * FROM emp05;
INSERT INTO emp05 VALUES (1200, 'ORACLE', 'DB', 50);
DROP TABLE emp06;
CREATE TABLE emp06(
empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(10) NOT NULL,
sal NUMBER(7, 2) CHECK (sal BETWEEN 500 AND 10000),
gender VARCHAR2(1) CHECK (gender IN ('M', 'F'))
);
DESC emp06;
INSERT INTO emp06 VALUES (1100, 'JAVA', 300, 'F'); ERROR
INSERT INTO emp06 VALUES (1100, 'JAVA', 2000, 'F'); 행추가
SELECT * FROM emp06;
INSERT INTO emp06 VALUES (1200, 'SPRING', 5000, 'm'); ERROR
INSERT INTO emp06 VALUES (1200, 'SPRING', 5000, 'M'); 행추가
SELECT * FROM emp06;
DROP TABLE dept01 PURGE;
CREATE TABLE dept01(
deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(10) NOT NULL,
loc VARCHAR2(10) DEFAULT 'SEOUL'
);
DESC dept01;
INSERT INTO dept01 (deptno, dname) VALUES (50, 'DATABASE');
SELECT * FROM dept01;
DROP TABLE emp07;
CREATE TABLE emp07(
empno NUMBER(4) CONSTRAINT EMP07_PK_EMPNO PRIMARY KEY,
ename VARCHAR2(10) CONSTRAINT EMP07_NN_ENAME NOT NULL,
job VARCHAR2(9),
deptno NUMBER(2) CONSTRAINT EMP07_FK_DEPTNO REFERENCES dept(deptno)
);
DESC emp07;
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME IN ('EMP07');