Oracle Database(CONSTRAINTS 제약조건)
CONSTRAINTS (제약조건)
: 제약 조건은 컬럼에 어떠한 조건을 거는 것을 말한다.
해당 컬럼에 조건을 걸면 해당 컬럼 또는 테이블 이용시 제약 조건을 잘 지켜야 한다.
테이블 당 하나만 가질 수 있는 키로서 해당 키를 가진 칼럼의 데이터는 중복이 불가하다.
. 무결성 제약 조건(Data Integrity Constraint Rule)
: 테이블에 부적절한 자료가 입력 되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙을 말한다.
. 무결성
: 데이터베이스 내에 있는 데이터의 정확성 유지
. 제약 조건
: 바람직하지 않은 데이터가 저장 되는 것을 방지 하는 것
데이터 무결성 제약조건의 특징
- 테이블 생성시 무결성 제약조건을 정의하여 프로그래밍 과정을 줄여준다
- 데이터베이스 서버에 의해 무결성 제약조건이 관리되어 데이터 오류 발생 가능성을 줄여준다
- 테이블에 대해 정의되고 데이터 딕셔너리에 저장된다.
- 일시적으로 활성화 또는 비활성화 될 수 있다.
무결성 제약 조건 | 역할 |
NOT NULL | NULL을 허용하지 않는다. |
UNIQUE | 중복된 것을 허용하지 않는다. 항상 유일한 값을 갖도록 한다. |
PRIMARY KEY | NULL을 허용하지 않고, 중복된 값을 허용하지 않는다, NOT NULL 조건과 UNIQUE 조건을 결합한 상태이다. |
FOREIGN KEY | 참조되는 테이블의 칼럼의 값이 존재하면 허용한다. |
CHECK | 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다. |
. NOT NULL 제약조건
: 특정 컬럼은 반드시 값이 입력되도록 필수 입력 컬럼으로 지정하는것 NOT NULL은 INSERT 즉, 데이터 입력시에 누락이 되어서는 안되는 부분이다. NULL 값이 들어가게 되면 오류가 난다.
제약 조건 종류 |
C : Check, NOT NULL |
U : UNIQUE |
P : PRIMARY KEY |
R : FOREIGN KEY |
. UNIQUE 제약조건
: 특정 컬럼에 대해 자료가 중복되지 않게 하는 것(지정된 컬럼에는 유일한 값만이 저장되게 하는 것이다. UNIQUE는 해당 테이블에 있어서는 존재하는 값이 유일해야한다. 만일 INSERT 또는 UPDATE시, 제약이 걸려 있는 컬럼에 동일한 데이터가 존재 한다면 오류가 난다. 이때 NULL 값에 대해서는 UNIQUE 제약이 적용되지 않는다. 즉, NULL 값은 데이터로 인식하지 않았기 떄문에 해당 컬럼에 NULL 데이터행이 여러 개 존재 가능하다.
. 테이블 생성 UNIQUE 설정
: CREATE TABLE TEST_TABLE(COLUMN1 VARCHAR2(30) CONSTRAINT COLUMN1_UNQ UNIQUE(COLUMN1));
. 테이블 생성 후에 UNIQUE 설정
: ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 UNIQUE(컬럼명);
. PRIMARY KEY 제약조건
- UNIQUE 제약조건 + NOT NULL 제약조건
- 컬럼명과 자료형을 기술한 다음 PRIMARY KEY를 기술하면 된다
- PRIMARY KEY는 하나의 테이블에 있는 데이터들을 식별하기 위한 기준으로 인식되는 제약 조건이다.
- 한개의 테이블에 하나만 생성이 가능하며, PRIMARY KEY는 NOT NULL + UNIQUE의 속성을 가진다 즉, NULL 값이 있으면 안되고 해당 컬럼의 데이터는 중복되지 않고 유일해야 한다.
- UNIQUE에서와 같이 여러 컬럼들을 조합해서 지정 할 수 있다.
. 무결성
- 데이터베이스에 저장된 값들이 정확하고 일관성 있는 데이터임을 나타내는 의미
- 데이터베이스는 무결성이 보장되도록 여러 개체에 규정을 부여하여 운영한다.
- 즉, 필요없는 데이터는 걸러내고 필요한 데이터만 남아있는 상태를 말한다
- 무결성을 유지하는 것은 데이터베이스 관리시스템(DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다.
- 무결성의 종류로는 개체 무결성, 참조 무결성, 도메인 무결성이 있다.
도메인 무결성 | 객체 무결성 | 참조 무결성 |
CHECK, NOT NULL, DEFAULT | PRIMARY KEY, UNIQUE | FOREIGN KEY |
. 도메인 무결성
- 속성이 정의되어 있는 영역을 벗어나지 않도록 규정하는 것이다.
- 도메인 무결성에는 CHECK, DEFAULT, NOT NULL 제약이 있다.
. 참조 무결성
- 행을 입력, 수정, 삭제할 때 연관되는 다른 테이블과의 데이터가 정확하게 유지되도록 규정하는 것이다.
- 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 가져야한다.
- 참조 무결성에는 FOREIGN KEY가 있다.
. ON DELETE CASCADE
: 참조되는 부모 테이블의 행에 대한 DELETE를 허용한다. 즉, 참조되는 부모 테이블 값이 삭제되면 연쇄적으로 자식 테이블 값 역시 삭제된다.
. ON DELETE SET NULL
: 참조되는 부모 테이블의 행에 대한 DELETE를 허용한다. 이건 CASCADE와 다른데, 부모테이블의 값이 삭제되면 해당 참조하는 자식 테이블의 값들은 NULL값으로 설정됩니다.
. SEQUENCE (시퀀스)
: 시퀀스는 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체이다. 은행이나, 병원의 대기 순번표와 마찬가지로 번호를 사용해야 하는 사용자에게 계속 다음 번호를 만들어주는 역할을 합니다.
. SEQUENCE (시퀀스) 형식
CREATE SEQUENCE 시퀀스 이름
START WITH n => 시퀀스 번호의 시작값
INCREMENT BY n => 시퀀스 번호의 증가값
MAXVALUE n => 시퀀스가 가질수 있는 최대 값
MINVALUE n => 시퀀스가 가질 수 있는 최소 값
CYCLE | NOCYCLE = > 지정된 시퀀스값이 최대값에 도달 했을 때 다시 처음부터 시작 함
CACHE | NOCACHE = > 메모리상에 시퀀스값을 미리할당 기본(20) NOCACHE는 원칙적으로 메모리 상의 시퀀스를 관리 하지 않음.
. 시퀀스 값을 알아보는 CURRBVAL와 NEXTVAL
CURRBVAL
: 시퀀스의 현재 값을 알아내기 위해서 사용 CURRVAL에 새로운 값을 할당받기 위해서는 NEXTVAL로 새로운 값을 생성해야 한다.
즉, NEXTVAL로 새로운 값을 생성하여 새로운 값을 CURRVAL에 대체해야 한다.
NEXTVAL
: 시퀀스의 다음값을 알아내기 위해서 사용
NEXTVAL 형식
SELECT LAST_NUMBER
FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = ‘SEQ_TOTAL_SEQ’
9월 2일 실습내용
GitHub - kkmwkk/OracleDatabase_practice: OracleDatabase_practice
OracleDatabase_practice. Contribute to kkmwkk/OracleDatabase_practice development by creating an account on GitHub.
github.com