컬럼 속성(제약 조건)
테이블에 부적합한 자료가 입력되는 것을 방지하기 위해서
테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러 가지 규칙을 정한 것.
1) not null
2) unique
3) primary key : not null + unique 제약 조건
4) foreign key
5) check
1) not null 제약 조건
- null 값이 입력되지 못하게 하는 제약 조건.
- 특정 열에 데이터의 중복 여부와는 상관없이 null 값을 허용하지 않는 제약 조건.
create table null_test(
col1 varchar2(10) not null,
col2 varchar2(10) not null,
col3 varchar2(10)
);
insert into null_test values('aa', 'aa1', 'aa2');
insert into null_test(col1, col2) values('bb', ''); -- error 발생
2) unique 제약 조건
- 열에 저장할 데이터의 중복을 허용하지 않고자 할 때 사용하는 조건.
- null 값은 허용됨.
create table unique_test(
col1 varchar2(10) unique,
col2 varchar2(10) unique,
col3 varchar2(10) not null,
col4 varchar2(10) not null
);
insert into unique_test values('aa', 'bb', 'cc', 'dd');
insert into unique_test values('aa1', 'bb1', 'cc1', 'dd1');
update unique_test set col2 = 'bb' where col1='aa1'; -- error 발생
3) primary key : not null + unique 제약 조건
- 테이블에 하나만 존재해야 함.
- 보통은 주민번호나 emp 테이블의 empno(사원번호) 등이 primary key의 조건이 됨.
4)foreign key 제약 조건
- 다른 테이블의 필드(컬럼)을 참조해서 무결성을 검사하는 제약 조건.
- 참조키 : 부모테이블의 컬럼을 이야기 함.
- 외래키 : 자식테이블의 컬럼을 이야기 함.
-- 자식 테이블의 컬럼의 값(데이터)이 부모테이블에 없는 경우에는 무결성의 규칙이 깨져 버림.
-- 외래키가 존재하기 위해서는 우선적으로 부모테이블이 먼저 만들어져야 함.
create table foreign_test(
empno number(4) primary key,
ename varchar2(20) not null,
job varchar2(50) not null,
deptno number(2) references dept(deptno)
);
insert into foreign_test values(1111, '홍길동', '영업부', 30);
insert into foreign_test values(2222, '유관순', '회계부', 10);
insert into foreign_test values(3333, '김유신', 'IT', 50); -- error 발생
5) check 제약 조건
- 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용함.
create table check_test(
gender varchar2(10)
constraint gender_ch check(gender in ('남자', '여자'))
);
insert into check_test values('여자');
insert into check_test values('남자');
insert into check_test values('여성'); -- error 발생
'Back-End > Database' 카테고리의 다른 글
[SQL] GROUP BY 절 / HAVING절 (0) | 2021.10.05 |
---|---|
[SQL] 서브 쿼리 (0) | 2021.10.05 |
[SQL] view (0) | 2021.10.05 |
[SQL] 숫자 관련 기본 함수 (0) | 2021.10.05 |
[SQL] dual 테이블/ 기본 함수_1(날짜 관련 / 문자 관련) (0) | 2021.10.05 |
댓글