굉장히 중요하다고 한다. 별 다섯개~!!!
10. CONSTRAINT ( 제약 조건 ***** )
(1) 설명
테이블의 해당컬럼에 원치않는 데이터를 입력/수정/삭제
되는 것을 방지하기위해 테이블 생성(create)시 또는
변경(alter)시 설정하는 조건
(2) 종류
1) PRIMARY KEY (식별키)
하나의 ROW데이터를 구별하게하는 제약조건으로
하나의 테이블에 오직 하나만 존재하며 자동으로 INDEX가
부여된다.
2) FOREIGN KEY ( 참조키 / 외래키 )
부모 테이블의 PK를 참조하는 컬럼에 부여되는 제약조건
3) UNIQUE KEY ( 유일키 )
PK가 아니더라도 컬럼의 모든 값이 유일해야 하는 경우
에 사용되는 제약조건이다.
즉, 중복데이터를 허용하지 않는 컬럼에 부여되는 제약조건
cf) PK와 차이점
첫째, NULL을 입력할 수 있다.
둘째, 하나의 테이블에 여러개의 유일키 생성 가능
4) CHECK
'조건'에 맞는 데이터만 입력되도록 조건을 부여한 제약조건
cf) 위에서의 '조건'이란 ?
- 데이터의 값의 범위
- 특정 패턴 숫자
- 문자값 설정
....
5) NOT NULL
해당컬럼에 NULL을 입력되지 않게하는 제약조건
'COLUMN-LEVEL'으로만 부여할 수 있는 제약조건
cf1) PK는 NOT NULL 조건을 가지고 있음
cf2) default 는 제약조건이 아님
cf3) NOT NULL 조건도 constraint_type 에 'C'로 표현
(3) LEVEL 기준 제약조건 부여 방법
1) COLUMN-LEVEL
-> 하나의 컬럼에 제약조건을 부여할 때 사용하며
5가지 제약조건 모두 부여할 수 있다.
제약조건확인1> CON_DEPT 테이블(제약조건:2개, default:1개)
error> insert into CON_DEPT values(20, 'aa', '1');//PK위배
error> insert into CON_DEPT values(50, 'aa', '3');//Check위배
SQL> insert into CON_DEPT(deptno, loc) values(50, '2');
//null 대신 default 값이 입력 확인
제약조건확인2> CON_EMP 테이블(제약조건:5개)
SQL> insert into CON_EMP values(
1000, '이현록', '서울', '1234567890123', 20);//성공
error> insert into CON_EMP values(
2000, NULL , '서울', '1234567890555', 20); //nn위배
error> insert into CON_EMP values(
2000, '정애란' , '부산', '1234567890123', 20);//unique위배
error> insert into CON_EMP values(
2000, '정애란' , '부산', '1234567890222', 80);//fk위배
example)
const1.sql -> 이름을 지정하지 않는 것
const2.sql -> 이름을 지정하는 것 (관리용이)
2) TABLE-LEVEL
-> 하나의 컬럼에 여러개의 제약조건을 부여할 때 or
여러개의 컬럼에 제약조건을 부여할 때 사용한다.
example)
const3.sql -> 이름을 지정하지 않는 것
const4.sql -> 이름을 지정하는 것(관리용이)
const5.sql -> table생성 후에 제약조건 추가, 이름을 지정
SOO Android 교육중에 배운 내용들 입니다. 알았던 사실도 있고 몰랐던 사실, 정리되지 않은것들이 머릿속에 쏙쏙 들어오는것 같네요. 잘 봅시다
10. CONSTRAINT ( 제약 조건 ***** )
(1) 설명
테이블의 해당컬럼에 원치않는 데이터를 입력/수정/삭제
되는 것을 방지하기위해 테이블 생성(create)시 또는
변경(alter)시 설정하는 조건
(2) 종류
1) PRIMARY KEY (식별키)
하나의 ROW데이터를 구별하게하는 제약조건으로
하나의 테이블에 오직 하나만 존재하며 자동으로 INDEX가
부여된다.
2) FOREIGN KEY ( 참조키 / 외래키 )
부모 테이블의 PK를 참조하는 컬럼에 부여되는 제약조건
3) UNIQUE KEY ( 유일키 )
PK가 아니더라도 컬럼의 모든 값이 유일해야 하는 경우
에 사용되는 제약조건이다.
즉, 중복데이터를 허용하지 않는 컬럼에 부여되는 제약조건
cf) PK와 차이점
첫째, NULL을 입력할 수 있다.
둘째, 하나의 테이블에 여러개의 유일키 생성 가능
4) CHECK
'조건'에 맞는 데이터만 입력되도록 조건을 부여한 제약조건
cf) 위에서의 '조건'이란 ?
- 데이터의 값의 범위
- 특정 패턴 숫자
- 문자값 설정
....
5) NOT NULL
해당컬럼에 NULL을 입력되지 않게하는 제약조건
'COLUMN-LEVEL'으로만 부여할 수 있는 제약조건
cf1) PK는 NOT NULL 조건을 가지고 있음
cf2) default 는 제약조건이 아님
cf3) NOT NULL 조건도 constraint_type 에 'C'로 표현
(3) LEVEL 기준 제약조건 부여 방법
1) COLUMN-LEVEL
-> 하나의 컬럼에 제약조건을 부여할 때 사용하며
5가지 제약조건 모두 부여할 수 있다.
제약조건확인1> CON_DEPT 테이블(제약조건:2개, default:1개)
error> insert into CON_DEPT values(20, 'aa', '1');//PK위배
error> insert into CON_DEPT values(50, 'aa', '3');//Check위배
SQL> insert into CON_DEPT(deptno, loc) values(50, '2');
//null 대신 default 값이 입력 확인
제약조건확인2> CON_EMP 테이블(제약조건:5개)
SQL> insert into CON_EMP values(
1000, '이현록', '서울', '1234567890123', 20);//성공
error> insert into CON_EMP values(
2000, NULL , '서울', '1234567890555', 20); //nn위배
error> insert into CON_EMP values(
2000, '정애란' , '부산', '1234567890123', 20);//unique위배
error> insert into CON_EMP values(
2000, '정애란' , '부산', '1234567890222', 80);//fk위배
example)
const1.sql -> 이름을 지정하지 않는 것
const2.sql -> 이름을 지정하는 것 (관리용이)
2) TABLE-LEVEL
-> 하나의 컬럼에 여러개의 제약조건을 부여할 때 or
여러개의 컬럼에 제약조건을 부여할 때 사용한다.
example)
const3.sql -> 이름을 지정하지 않는 것
const4.sql -> 이름을 지정하는 것(관리용이)
const5.sql -> table생성 후에 제약조건 추가, 이름을 지정
SOO Android 교육중에 배운 내용들 입니다. 알았던 사실도 있고 몰랐던 사실, 정리되지 않은것들이 머릿속에 쏙쏙 들어오는것 같네요. 잘 봅시다
'데이터베이스 > 오라클' 카테고리의 다른 글
alter문 정리 (0) | 2011.03.31 |
---|---|
Soo Android 수업에서 배운 오라클 과정입니다. (0) | 2011.03.31 |
sqlplus 명령어 (0) | 2010.06.02 |
테이블 생성시 TIP? (0) | 2010.06.02 |
오라클 사용자에 대해서 다뤄보자. (0) | 2010.06.02 |