[오라클] 제약조건 조회

심심이·2024년 3월 1일

oracle

목록 보기
16/40

drop table tbl_gogek purge;

create table tbl_gogek
    (gogekId     varchar2(30) 
    ,email       varchar2(50)
    ,gogekName   varchar2(30) not null
    ,gogekPhone  varchar2(30)
    ,constraint  PK_tbl_gogek_gogekId primary key(gogekId) -- row level(행 레벨) 제약 조건 | gogekId 컬럼에 primary key ( == 기본 키) 제약을 준 것이다.
    );

desc tbl_gogek;

create table tbl_jumun
( gogekid    varchar2(20) 
, jepumCode  varchar2(30) 
, jumunDay   date default sysdate
, jumunSu    number(10)
, constraint PK_tbl_jumun primary key(gogekid, jepumCode, jumunDay) -- gogekid가 첫번째 jepumCode가 두번째  jumunDay가 세번째, 위치 엄청 중요함
);



insert into tbl_jumun(gogekId, jepumCode, jumunDay, jumunSu)
values('leess', '새우깡', default, 20);


insert into tbl_jumun(gogekId, jepumCode, jumunDay, jumunSu)
values('eomjh', '새우깡', default, 20);


insert into tbl_jumun(gogekId, jepumCode, jumunDay, jumunSu)
values('leess', '감자깡', default, 15);


insert into tbl_jumun(gogekId, jepumCode, jumunDay, jumunSu)
values('leess', '새우깡', default, 20);
-- 삽입하는 이유 : jumunDay가 다르니까(몇분 후 주문)



commit;

select gogekid
       , jepumcode
       , to_char(jumunday, 'yyyy-mm-dd hh24:mi:ss') AS jumunday  
       , jumunsu
from tbl_jumun;


select *
from user_constraints
where table_name in('TBL_GOGEK','TBL_JUMUN');

alter table TBL_GOGEK
rename constraint SYS_C008386 to TBL_GOGEK_GOGEKID; -- 이름바꿈

select *
from user_cons_columns
where table_name in('TBL_GOGEK','TBL_JUMUN');
-- ★★★★★★★★★ 꼭 테이블 이름은 대문자로 ★★★★★



/*
HR	PK_TBL_GOGEK_GOGEKID	TBL_GOGEK	GOGEKID	1
HR	TBL_GOGEK_GOGEKID	TBL_GOGEK	GOGEKNAME	
HR	PK_TBL_JUMUN	TBL_JUMUN	GOGEKID	1
HR	PK_TBL_JUMUN	TBL_JUMUN	JEPUMCODE	2
HR	PK_TBL_JUMUN	TBL_JUMUN	JUMUNDAY	3

position은 제약 조건 순서 
:  constraint PK_tbl_jumun primary key(gogekid, jepumCode, jumunDay) -- gogekid가 첫번째 jepumCode가 두번째  jumunDay가 세번째
*/

-- user_constraints user_cons_columns 필요한 것만 뽑아서 조회 
select A.table_name, A.constraint_name, A.constraint_type, A.search_condition
       , B.column_name, B.position 
from user_constraints A join  user_cons_columns B
ON A.constraint_name = B.constraint_name
where a.table_name in('TBL_GOGEK','TBL_JUMUN');





---- **** tbl_gogek 테이블과 tbl_jumun 테이블에 생성되어진 primary key 제약조건을 조회해봅니다. **** ----


select A.table_name, A.constraint_name, A.constraint_type, A.search_condition
       , B.column_name, B.position 
from user_constraints A JOIN user_cons_columns B
ON A.constraint_name = B.constraint_name
where A.table_name in('TBL_GOGEK','TBL_JUMUN')
      and A.constraint_type = 'P';


---- **** tbl_gogek 테이블에 생성되어진 primary key 제약조건을 조회해봅니다. **** ----

select A.table_name, A.constraint_name, A.constraint_type, A.search_condition
       , B.column_name, B.position 
from user_constraints A JOIN user_cons_columns B
ON A.constraint_name = B.constraint_name
where A.table_name  = 'TBL_GOGEK'
      and A.constraint_type = 'P';
-- PK_TBL_GOGEK_GOGEKID

제약조건은 항상 고유한 이름을 갖고 있으며 중복 불가
profile
개발하는 심심이

0개의 댓글