은은하게 코드 뿌시기

[DB] 제약조건 - 오라클/MYSQL 본문

Database -Mysql,Oracle

[DB] 제약조건 - 오라클/MYSQL

은은하게미친자 2022. 11. 8. 14:37
728x90

제약조건이란? 

테이블의 특정 열에 지정하여 

지정한 열에 제약 조건에 부합하지 않는 데이터를 제약하는 조건

제약의 방식은 데이터를 저장할 수 없거나, 데이터의 수정이나 삭제 가능여부도 영향을 받게 할수 있다.

 

제약조건의 종류

종류 ORACLE/MYSQL 설명
NOTNULL 공통 NULL 허용안됨, NULL을 제외한 데이터의 중복은 허용됨
UNIQUE 공통 중복 허용안됨, 단 NULL은 값의 중복에서 제외됨
PRIMARY KEY 공통  유일한 값이면서 NULL을 허용하지 않음, 테이블당 하나만 지정 가능,
자동으로 인덱스가 만들어집니다.
FOREIGN KEY 공통 다른 테이블의 열을 참조하여 존재하는 값만 입력 가능
CHECK 오라클 설정한 조건식을 만족하는 데이터만 입력가능
DEFAULT MYSQL 해당필드의 기본값을 설정할 수 있게 해줍니다. 만약에 레코드를 입력할 때 해당 필드값을 전달하지 않으면, 자동으로 설정된 기본값을 저장합니다.

 

1
2
3
4
5
6
7
8
9
10
CREATE TABLE SCOTT.NEWTABLE_2 (
    COLUMN1 VARCHAR2(100DEFAULT 12334 NOT NULL,
    COLUMN2 VARCHAR2(100),
    COLUMN3 VARCHAR2(100),
    COLUMN4 VARCHAR2(100),
    CONSTRAINT NEWTABLE_2_UN UNIQUE (COLUMN2),
    CONSTRAINT NEWTABLE_2_CHECK CHECK (null),
    CONSTRAINT FK_NEWTABLE FOREIGN KEY (COLUMN1) REFERENCES SCOTT.NEWTABLE(COLUMN1)
);
 
cs

 

 

더보기


+ 데이터 무결성 ?

데이터의 정확성과 일관성을 보장한다, 

이를 항상 위해서 데이터의 삽입,수정,삭제 등 모든 과정에서 꼭 지켜야하는 기본규칙들을 가지고있고, 제약조건은 이러한 데이터 무결성을 지키기위한 안전장치로서 중요한 역활을 함.

 

무결성의 종류 

종류 설명
영역 무결성
(domain integrity)
열에 저장되는 값의 적정여부를 확인. (자료형, 적절한 형식의 데이터, NULL 여부 확인 등)
개체 무결성
(entity integrity)
기본키(primary key)는 반드시 값을 가지고 있어야 하며 NULL이 도리수 없고 중복도 될수  없음
참조 무결성
(referential integrity)
참조 테이블의 외래키 값은 참조 테이블의 기본키로서 존재해야 하며 NULL이 가능

 

오라클에서 제약조건 확인하기

SELECT owner, constraint_name, constraint_type, table_name
FROM user_constraints;

제약조건 확인 명령어 종류

열이름 설명
OWNER 제약조건 소유 계정
CONSTRAINT_NAME 제약 조건 이름 (직접 지정하지 않으ㅏㄹ 경우 오라클이 자동으로지정함)
CONSTRAINT_TYPE 제약조건종류
C: 0CHECK, NOT NULL
U: UNIQUE
P: PRIMARY KEY
R: FOREIGN KEY
TABLE_NAME 제약조건을 지정한 테이블의 이름

제약조건 수정 하기

제약 조건 이름 지정 ALTER TABLE SCOTT.NEWTABLE
ADD CONSTRAINT NEWTABLE_PK PRIMARY KEY (COLUMN1)
ENABLE;
제약 조건 이름 변경 ALTER TABLE SCOTT.NEWTABLE1
RENAME CONSTRAINTS SYS_C007422 TO NETABLE_PK_CONSTRINTS;
생성한 테이블에 제약조건 추가하기 ALTER TABLE SCOTT.NEWTABLE MODIFY COLUMN2 VARCHAR2(100) NOT NULL;
제약조건 삭제 ALTER TABLE SCOTT.NEWTABLE1
DROP CONSTRAINTS NETABLE_PK_CONSTRINTS;

 

728x90
Comments