--컬럼레벨 기본키
CREATE TABLE TEST1 (
id NUMBER PRIMARY KEY,
name VARCHAR2(20),
tel VARCHAR2(25)
);
--제약조건 확인(폴린키를 지우기 위해서 알아야한다.)
DESC user_constraints;
SELECT constraint_name,table_name,
r_constraint_name,constraint_type
FROM user_constraints;
--제약 조건 이름 부여
CREATE TABLE test2(
id NUMBER CONSTRAINT pk_test2_id PRIMARY KEY,
name VARCHAR2(20),
tel VARCHAR2(25)
);
SELECT constraint_name,table_name,
r_constraint_name,constraint_type
FROM user_constraints;
--테이블 레벨 기본키
CREATE TABLE test3(
id NUMBER,
code VARCHAR2(4),
name VARCHAR2(20),
CONSTRAINT pk_test3_id PRIMARY KEY(id)--테이블 제약 조건 따로 뺴낸다.
);
CREATE TABLE test4(
id NUMBER(4),
code VARCHAR2(4),
name VARCHAR2(20),
CONSTRAINT pk_test4_id PRIMARY KEY(id,code)--테이블 기본키 2개 준다 (즉, 복합키)
);
SELECT constraint_name,table_name,
r_constraint_name,constraint_type
FROM user_constraints;
--자료 입력
INSERT INTO test4(id,code,name) VALUES (1,'1111','A');
INSERT INTO test4(id,code,name) VALUES (1,'2222','B');
INSERT INTO test4(id,code,name) VALUES (1,'2222','C');
//오류 : 제약 조건 위반
INSERT INTO test4(id,code,name) VALUES (1,NULL,'C');
//오류 : 기본키는 NULL이 될 수 없다.
COMMIT;
SELECT * FROM test4;
--기본키 삭제
ALTER TABLE test4 DROP PRIMARY KEY;
SELECT constraint_name,table_name,
r_constraint_name,constraint_type
FROM user_constraints WHERE table_name='TEST4'; --조건은 대문자자비교(데이블명)
// 이미 존재하는 테이블에 기촌키 추가
ALTER TABLE test4 ADD CONSTRAINT pk_test4_id PRIMARY KEY(id);
//오류 : test4 테이블의 id에 유일성에 위반하는 데이터가 있으므로 (값이 같기떄문에)
ALTER TABLE test4 ADD CONSTRAINT pk_test4_id PRIMARY KEY(id,code);
--UNIQUE
CREATE TABLE test5(
id NUMBER NOT NULL,
ssn VARCHAR2(14),
tel VARCHAR2(20),
CONSTRAINT pk_test5_id PRIMARY KEY (id), --기본키는 한개
CONSTRAINT uk_test5_ssn UNIQUE (ssn) -- 하지만 유니크는 제한이 없다.
);
INSERT INTO test5(id) VALUES(1);
// ssn이 NOT NULL 이 아니므로 NULL 허용
INSERT INTO test5(id) VALUES(2);
//UNIQUE에서 NULL은 중복 허용
INSERT INTO test5(id,ssn) VALUES(3,'1');
INSERT INTO test5(id,ssn) VALUES(4,'1');
//오류 : ssn이 중복적인 데이터이므로
'개발관련 > DB관련' 카테고리의 다른 글
오라클 클라이언트 없이 C/S 수행 (0) | 2010.07.23 |
---|---|
인덱스 생성/삭제/리빌드에 대한 통계정보 (0) | 2010.07.16 |
오라클 동적 쿼리 생성 (0) | 2010.05.25 |
오라클 함수 정리 (0) | 2010.05.20 |
오라클 데이터 형 변환 함수 (0) | 2009.11.13 |