NOT NULL
NOT NULL 제약조건을 명시하게 되면 해당 칼럼에는 반드시 데이터를 입력해야만 한다.
필수적으로 값이 들어가야 한다면 NOT NULL을 명시해서 사용해주는 것이 안전하다.
NOT NULL 제약 조건을 설정하면, 해당 칼럼은 NULL 값을 저장할 수 없다
CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가
사용법
CREATE TABLE [테이블명] (
[컬럼명] [데이터타입] NOT NULL
);
제약조건에 이름을 지정 (CONSTRAINT 제약조건 이름 제약조건)
CREATE TABLE [테이블명] (
[컬럼명] [데이터타입] CONSTRAINT [제약조건명] NOT NULL
);
예제
CREATE TABLE customer (
ID VARCHAR2(20) NOT NULL,
pwd VARCHAR2(20) NOT NULL,
NAME VARCHAR2(20) NOT NULL,
phone VARCHAR2(30),
address VARCHAR2(100));
CREATE TABLE customer2 (
ID VARCHAR2(20) CONSTRAINT ID_NOTNULL NOT NULL,
pwd VARCHAR2(20) CONSTRAINT PWD_NOTNULL NOT NULL,
NAME VARCHAR2(20) CONSTRAINT NAME_NOTNULL NOT NULL,
phone VARCHAR2(30),
address VARCHAR2(100));
오류 : ORA-01400: NULL을 ("TEST"."CUSTOMER"."ID") 안에 삽입할 수 없습니다
INSERT INTO customer VALUES (NULL,NULL,NULL,'010-111-1111','SEOUL');
INSERT INTO customer VALUES ('','','','010-111-1111','SEOUL');
이렇게 하면 들어간다 하지만 이렇게 해서는 안된다
INSERT INTO customer VALUES (' ',' ',' ','010-111-1111','SEOUL');
CHECK 조건을 통해서 해결할 수는 있다
UNIQUE
특정 칼럼에 모든값이 고유하게 유지되도록 하는 고유키를 생성
해당 컬럼에 동일한 값이 들어가지 않도록 하는 제약조건
중복된 값이 입력되는 것을 방지
같은 값이 들어가는 경우 오류가 발생
UNIQUE의 경우는 여러 개를 정의할 수 있다 (RIMARY KEY의 경우 하나의 테이블에 하나만 정의)
NULL 값이 허용
UNIQUE 조건에서는 열당 하나만 NULL 이 허용
오라클의 경우 고유키에 의해 인덱스를 함 시적으로 생성
사용법
CREATE TABLE [테이블명] (
[컬럼명] [데이터타입] UNIQUE
);
제약조건에 이름을 지정 (CONSTRAINT 제약조건이름 제약조건)
CREATE TABLE [테이블명] (
[컬럼명] [데이터타입] CONSTRAINT [제약조건명] UNIQUE
);
예제
CREATE TABLE CUSTOMER (
ID VARCHAR2(20) UNIQUE,
PWD VARCHAR2(20) NOT NULL,
NAME VARCHAR2(20) NOT NULL,
PHONE VARCHAR2(30),
ADDRESS VARCHAR2(100));
CREATE TABLE CUSTOMER (
ID VARCHAR2(20) CONSTRAINT CUSTOMER_ID_UK UNIQUE,
PWD VARCHAR2(20) CONSTRAINT CUSTOMER_PWD_NN NOT NULL,
NAME VARCHAR2(20) CONSTRAINT CUSTOMER_NAME_NN NOT NULL,
PHONE VARCHAR2(30),
ADDRESS VARCHAR2(100));
'SQL > ORACLE SQL' 카테고리의 다른 글
제약 조건 : FOREIGN KEY (외래 키 또는 참조 키) (0) | 2022.11.09 |
---|---|
제약 조건 : PRIMARY KEY (기본 키) (0) | 2022.11.09 |
제약 조건 : CONSTRAINT (0) | 2022.11.08 |
데이터 무결성 : Data integrity (0) | 2022.11.08 |
DML : 데이터 조작어 (SELECT, INSERT, UPDATE, DELETE) (0) | 2022.11.07 |