제약조건 (도메인 -> 엔티티 -> 릴레이션)
도메인 제약조건 : 속성에 도메인이 아닌 값이 올 수 없도록 하는 제약조건
NOT NULL
--생성
CREATE TABLE TEST
(
ID VARCHAR2(50) NOT NULL,
EMAIL VARCHAR2(200) NULL,
PHONE CHAR(13) NOT NULL
)
--수정
ALTER TABLE TEST MODIFY EMAIL VARCHAR2(200) NOT NULL;
DEFAULT
--생성
CREATE TABLE TEST
(
ID VARCHAR2(50) NOT NULL,
EMAIL VARCHAR2(200) NULL,
PHONE CHAR(13) NOT NULL,
PWD VARCHAR2(200) DEFAULT ‘111
-- 등록일(SYSTIMESTAMP), 조회수(0), 관리자가 부여하는 비밀번호 등
)
--수정
ALTER TABLE TEST MODIFY EMAIL VARCHAR2(200) DEFAULT ‘111’;
CHECK
--생성
CREATE TABLE TEST
(
ID VARCHAR2(50) NULL,
EMAIL VARCHAR2(200) CHECK(PHONE LIKE ‘010-%-____’) NOT NULL ,
PHONE CHAR(13) NULL,
)
--수정
ALTER TABLE TEST ADD CONSTRAINT CK_TEST_PHONE CHECK(PHONE LIKE ‘010-%-____’);
정규식 사용
REGEXP_LIKE(PHONE, ‘01[01]-\d{3,4}-\d{4}’)
ALTER TABLE MEMBER ADD CONSTRAINT MEMBER_PHONE_CHK1 CHECK(REGEXP_LIKE(PHONE, ‘^01[01]-\d{3,4}-\d{4}$’)); --추가하려면 기존의 테이블의 레코드들도 모두 만족해야한다.
--정규식 시작 : ^ 끝 : $ -> 안 쓰면 앞뒤로 다른 것들이 있어도 입력된다.
--삭제
ALTER TABLE MEMBER DROP CONSTRAINT MEMBER_PHONE_CHK1;
적용된 제약조건 확인
SELECT * FROM user_constratints where TABLE_NAME = ‘MEMBER’;
엔티티 제약조건
PRIMARY KEY, UNIQUE
PRIMARY KEY : 식별할 수 있는 컬럼 : 식별컬럼, 식별키를 갖고 있는 컬럼 -> 중복 X, NULL X
UNIQUE : 중복 X, NULL O
--생성
CREATE TABLE NOTICE
(
ID NUMBER NUMBER CONSTRAINT NOTICE_ID_PK PRIMARY KEY, --직접 만든 PK제약조건
TITLE VARCHAR2(300) NOT NULL,
WRITER_ID VARCHAR2(50) NOT NULL UNIQUE,
CONTENT VARCHAR2(4000),
REGDATE DATE DEFAULT SYSDATE,
HIT NUMBER DEFAULT 0
)
=
CREATE TABLE NOTICE
(
ID NUMBER NUMBER, --직접 만든 PK제약조건
TITLE VARCHAR2(300) NOT NULL,
WRITER_ID VARCHAR2(50) NOT NULL,
CONTENT VARCHAR2(4000),
REGDATE DATE DEFAULT SYSDATE,
HIT NUMBER DEFAULT 0
CONSTRAINT NOTICE_ID_PK PRIMARY KEY(ID),
CONSTRAINT NOTICE_WRITER_ID_UK UNIQUE(WRITER_ID)
)
--수정
ALTER TABLE NOTICE
ADD CONSTRAINT NOTICE_ID_PK PRIMARY KEY(ID); --아이디에 PK제약조건 추가
ALTER TABLE NOTICE
ADD CONSTRAINT NOTICE_WIRTER_UK UNIQUE(WRITER_ID); --WRITER_ID에 유니크제약조건 추가
시퀀스(일련번호)
CREATE SEQUENCE NOTICE_ID_SEQ INCREMENT BY 1 START WITH 1;
INSERT INTO NOTICE(ID, TITLE, WRITER_ID)
VALUES(NOTICE_ID_SEQ.NEXTVAL, ‘HELLO’, ‘GEONHO’);
COMMIT;
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Redis, 레디스 (0) | 2022.01.20 |
---|---|
[데이터베이스] MySQL 한글 설정 (0) | 2022.01.19 |
[데이터베이스] 뷰(VIEW), 데이터 딕셔너리 (0) | 2021.10.21 |
[데이터베이스] UNION, UNION ALL, MINUS, INTERSECT (0) | 2021.10.21 |
[데이터베이스] SELECT (0) | 2021.10.21 |