티스토리 뷰

휴지통/오라클

SQL

LeReve 2013. 5. 13. 17:50

<제약조건>constraint(insert,update에 적용)--update:데이터 재입력
1. not null - 반드시 데이터를 입력받겠음.
2. unique - 중복되는 데이터를 입력받지 않겠음.
   입력(insert,update)되는 데이터를 기존데이터와 비교!
3. primary key
 - note null과 unique를 동시에 만족하는 제약조건.
 - 주로 서로 다른 레코드(행)를 구분할 목적으로 사용.
4. foreign key
 - 기존 입력된 데이터를 참조해야 할 경우 사용.
 - 다른 테이블에 있는 관련있는 컬럼을 참조해야 될 경우
5. check
 - 특정 범위내의 데이터를 표현.

<제약조건 설정방법>
1. 컬럼레벨 설정
 create table 테이블명
 (
  col1 자료형 CONSTRAINT 제약명 CONSTRAINT_TYPE
 );
 
2. 테이블레벨 설정
 create table 테이블명
 (
     col1 자료형
     col2 자료형
     CONSTRAINT 제약명 CONSTRAINT_TYPE (컬럼명col1)
 );

3. 테이블변경
 - 테이블 생성을 끝마치고 난 후 제약설정.
 
 alter table 테이블명
 ADD CONSTRAINT 제약명 CONSTRAINT_TYPE(적용컬럼명);


 
<null문제점>: 중복을 체크하지 못함.
<unique문제점>: null중복은 방지하지 못함

 

--->제약관련 데이터 딕셔너리: user_constraints(시스템테이블)

select table_name, constraint_name, constraint_type
from user_constraints;

TABLE_NAME                     CONSTRAINT_NAME                C
------------------------------ ------------------------------ -
DEPT                           PK_DEPT                        P
EMP                            PK_EMP                         P
EMP                            FK_DEPTNO                      R
EMP02                          SYS_C0011061                   C
EMP02                          EMP02_EMPNO_PK                 P

 
<제약 삭제하기>
형식)
 ALTER TABLE 테이블명
 DROP constraint 제약명;


   
 형식)
  alter table 테이블명
  MODIFY 컬럼명 constraint 제약명 NOT NULL;
  
※만약 다른 테이블에서 참조하는 기본키라면 삭제안됨!
 (참조하는 자식 foreign key를 먼저 삭제해야 함.)
 
1. 자식테이블 제약삭제
 alter table emp02
 drop constraint emp02_fk;
 
2. 부모테이블 제약삭제
 alter table dept02
 drop primary key;

※자식테이블까지 한번에 삭제

 alter table dept02
 drop primary key CASCADE;
  테이블이 변경되었습니다.
 ---> 참조하는 모든 자식테이블의 제약을 찾아서 삭제후
     부모테이블 제약을 삭제

 

 

<CHECK제약조건>
 형식) check (조건식)
 
create table emp02(
 empno number(4) primary key,
 ename varchar2(15) default '무명',
 sal number(7,2) check(sal>2000),
 gender char(2) check(gender in('남','여'))
);

 

 

<복합키 설정>
alter table dept02
add constraint dept02_pk primary key (deptno,dname);

'휴지통 > 오라클' 카테고리의 다른 글

PL/SQL  (0) 2013.05.13
SQL  (0) 2013.05.13
SQL  (0) 2013.05.02
SQL  (0) 2013.05.01
SQL  (0) 2013.05.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함