by 구루비 제약조건 CHECK UNIQUE FOREIGN KEY NOT NULL DEFAULT USER_CONS_COLUMNS USER_CONSTRAINTS [2002.01.20]
제약조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용해 놓는거라 생각하면 된다. 간단하게 테이블안에서 테이터의 성격을 정의하는 것이 바로 제약조건 이다.
컬럼을 필수 필드화 시킬 때 사용 한다.
-- NOT NULL제약조건을 설정하면 ename 컬럼에는 꼭 데이터를 입력해야 한다. -- emp_nn_ename을 제약조건 명으로 설정 하였다. SQL> CREATE TABLE emp3( ename VARCHAR2(20) CONSTRAINT emp_nn_ename NOT NULL ); -- 제약조건은 USER_CONSTRAINTS 뷰를 통해서 확인 할 수 있다. SQL> SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME ='EMP3' ; CONSTRAINT_NAME ----------------------- emp_nn_ename
데이터의 유일성을 보장(중복되는 데이터가 존재할수 없다) 되고, 자동으로 인덱스가 생성 된다.
-- deptno 컬럼에 UNIQUE 제약조건 생성 SQL> ALTER TABLE emp2 ADD CONSTRAINT emp2_uk_deptno UNIQUE (deptno); -- 제약 조건의 삭제 SQL> ALTER TABLE emp2 DROP CONSTRAINT emp2_uk_deptno;
컬럼의 값을 어떤 특정 범위로 제한할 수 있다.
-- comm 컬럼에 1에서 100까지의 값만을 가질수 있는 체크조건 생성 SQL> ALTER TABLE emp2 ADD CONSTRAINT emp2_ck_comm CHECK (comm >= 1 AND comm <= 100); -- 제약 조건의 삭제 SQL> ALTER TABLE emp2 DROP CONSTRAINT emp2_ck_comm; -- 10000,20000,30000,40000,50000의 값만을 가질수 있는 체크조건 생성 SQL> ALTER TABLE emp2 ADD CONSTRAINT emp2_ck_comm CHECK comm IN (10000,20000,30000,40000,50000);
데이터를 입력 하지 않아도 지정된 값이 기본으로 입력 된다.
-- hiredate 컬럼에 값을 입력하지 않아도 오늘 날짜가 입력된다. SQL> CREATE TABLE emp4( ... (컬럼생략) ..., hiredate DATE DEFAULT SYSDATE );
-- PRIMARY KEY 생성 예제 SQL> CREATE TABLE emp5( empno NUMBER CONSTRAINT emp5_pk_empno PRIMARY KEY );
-- ALTER TABLE 명령어로 PRIMARY KEY 생성 예제 ALTER TABLE emp2 ADD CONSTRAINT emp2_pk_empno PRIMARY KEY (empno) ;
-- emp 테이블의 deptno 컬럼이 dept 테이블에 deptno 컬럼을 참조하는 외래키 생성 SQL> ALTER TABLE emp2 ADD CONSTRAINT emp2_fk_deptno FOREIGN KEY (deptno) REFERENCES dept(deptno);
SQL> SELECT SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME, DECODE(B.CONSTRAINT_TYPE, 'P','PRIMARY KEY', 'U','UNIQUE KEY', 'C','CHECK OR NOT NULL', 'R','FOREIGN KEY') CONSTRAINT_TYPE, A.CONSTRAINT_NAME FROM USER_CONS_COLUMNS A, USER_CONSTRAINTS B WHERE A.TABLE_NAME = UPPER('&table_name') AND A.TABLE_NAME = B.TABLE_NAME AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ORDER BY 1; -- 테이블 명을 입력 하면 됩니다. table_name의 값을 입력하십시오: emp2 COLUMN_NAME CONSTRAINT_TYPE CONSTRAINT_NAME ------------------- ----------------- -------------- DEPTNO CHECK OR NOT NULL SYS_C001362 FOREIGN KEY EMP2_FK_DEPTNO EMPNO PRIMARY KEY EMP2_PK_EMPNO ENAME CHECK OR NOT NULL EMP2_NN_ENAME MGR UNIQUE KEY EMP2_UP_MGR
- 강좌 URL : http://www.gurubee.net/lecture/1013
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
데이터의 유일성을 보장(중복되는 데이터가 존재할수 없다) 되고, 자동으로 인덱스가 생성 된다.
제가 초짜라 인덱스가 무엇인지 잘이해가 안가서 그러는데 설명좀 부탁드려요 누구든지 ㅠㅠ
- PRIMARY KEY 생성 예제 SQL> CREATE TABLE emp5( empno NUMBER CONSTRAINT emp5_pk_empno PRIMARY KEY );
-- ALTER TABLE 명령어로 PRIMARY KEY 생성 예제 ALTER TABLE emp2 ADD CONSTRAINT emp2_pk_empno PRIMARY KEY (empno) ;
이것부터 막힙니다.
기본키가 2번은 지정되지 않는다는 오류가 떠서
emp2 테이블을 보려고 하니 (select * from emp2)
지정된 레코드가 없다고 뜹니다.
이유를 설명해주세요 ㅠㅠ