일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 생성자
- 깃허브
- 배열
- dart
- 자바스크립트
- Pug
- js
- 다형성
- DB
- qqOperater
- 추상클래스
- push함수
- mybatis
- React
- java
- int와 integer
- 코딩테스트
- Middleware
- 자바
- 삼항연산자
- 리액트
- git
- 콘솔게임
- Sort()
- 네임드생성자
- 오류
- app.use
- Node.js
- Oracle
- Spring
- Today
- Total
평행코드
제약조건(CONSTRAINTS) 본문
테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약 조건을 설정할 수 있는데
이는 데이터 무결성 보장을 주 목적으로 함 입력 데이터에 문제가 없는지에 대한 검사와
데이터 수정/삭제 가능 여부 검사 등을 위해 사용한다.
NOT NULL
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
특정 컬럼에 값을 저장/수정할 때는 NULL값을 허용하지 않도록
컬럼 레벨에서 제한
CREATE TABLE USER_NOTNULL(
USER_NO NUMBER NOT NULL,
USER_ID VARCHAR2(20) NOT NULL,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10)
);
UNIQUE
컬럼 입력 값에 대해 중복을 제한하는 제약조건으로
컬럼 레벨과 테이블 레벨에 설정 가능
* 중복 값이 있는 경우 UNIQUE 제약 조건에 의해 행이 삽입되지 않음(NULL 값 중복은 가능)
CREATE TABLE USER_UNIQUE(
USER_NO NUMBER,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30)
);
CREATE TABLE USER_UNIQUE2(
USER_NO NUMBER,
USER_ID VARCHAR2(20),
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30)
UNIQUE (USER_ID) --테이블 레벨
);
CREATE TABLE USER_UNIQUE3(
USER_NO NUMBER,
USER_ID VARCHAR2(20),
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
UNIQUE (USER_NO, USER_ID) --두 컬럼을 묶어 한 UNIQUE제약조건 설정
);
PRIMARY KEY
테이블에서 한 행의 정보를 구분하기 위한 고유 식별자 역할
NOT NULL의 의미와 UNIQUE의 의미를 둘 다 가지고 있으며
한 테이블 당 하나만 설정 가능
컬럼 레벨과 테이블 레벨 둘 다 지정 가능
CREATE TABLE USER_PRIMARYKEY(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
);
CREATE TABLE USER_PRIMARYKEY(
USER_NO NUMBER,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
PRIMARY KEY (USER_NO)
);
CREATE TABLE USER_PRIMARYKEY2(
USER_NO NUMBER,
USER_ID VARCHAR2(20),
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
PRIMARY KEY (USER_NO, USER_ID)--두 컬럼을 묶어 한 PRIMARY KEY 제약조건 설정
);
FOREIGN KEY
참조 무결성을 위한 제약조건으로
참조된 다른 테이블이 제공한 값만 사용하도록 제한을 거는 것
참조되는 컬럼과 참조된 컬럼을 통해 테이블 간에 관계가 형성되는데
참조되는 값은 제공되는 값 외에 NULL을 사용 가능하며
참조할 테이블의 참조할 컬럼 명을 생략할 경우
PRIMARY KEY로 설정된 컬럼이 자동으로 참조할 컬럼이 됨
* 무결성
무결성이란 데이터베이스에서 저장된 값들에 대해 여러가지 제한을 통하여
데이터에 대한 신뢰를 보장하게 하여 일관성을 유지시켜주는 것.
CREATE TABLE USER_FOREIGNKEY(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER,
FOREIGN KEY (GRADE_CODE) REFERENCES USER_GRADE(GRADE_CODE)
);
또는
CREATE TABLE USER_FOREIGNKEY(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50),
GRADE_CODE NUMBER REFERENCES USER_GRADE (GRADE_CODE)
);
CHECK
해당 컬럼에 입력 되거나 수정되는 값을 체크하여 설정된 값 이외의
값이면 에러 발생
비교 연산자를 이용하여 조건을 설정하며 비교 값을 리터럴만 사용 가능하고
변하는 값이나 함수 사용은 불가능
CREATE TABLE USER_CHECK(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10) CHECK (GENDER IN (‘남’, ‘여‘)),
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
'Oracle Database' 카테고리의 다른 글
DDL(ALTER, DROP) (2) | 2023.10.22 |
---|---|
DML (0) | 2023.10.22 |
조인문 (JOIN) (0) | 2023.09.28 |
oracle 데이터조작어, 데이터정의어, 데이터제어어 (0) | 2023.09.27 |
데이터베이스 (0) | 2023.09.22 |