쌓고 쌓다

오라클 중심의 SQL 배움터 12장 연습문제 풀이 본문

프로그래밍/SQL

오라클 중심의 SQL 배움터 12장 연습문제 풀이

승민아 2022. 12. 12. 22:20

(1)

데이터의 정확성과 일관성을 보장하기위해 테이블의 각 칼람에 정의하는 조건을 말한다.

무결성 제약조건 종류 설명
NOT NULL 해당 칼럼 값은 NULL을 포함할 수 없다.
고유 키 테이블 내 해당 칼럼의 값은 항상 유일해야하며
NULL 값을 허용한다.
기본 키 해당 칼럼의 값은 반드시 존재해야하며, 유일해야한다.
고유키, NOT NULL 제약조건을 결합한 형태이다.
참조 해당 칼럼의 값은 참조되는 테이블의 칼럼 값 중의 하나와 일치하거나 NULL이여야 한다.
CHECK 해당 칼럼에 저장 가능한 값의 범위나 조건을 지정한다.

 

(2)

CREATE TABLE member(
userid VARCHAR2(10) CONSTRAINT member_userid_pk PRIMARY KEY,
username VARCHAR2(10) CONSTRAINT member_username_nn NOT NULL,
passwd VARCHAR2(10) CONSTRAINT member_passwd_nn NOT NULL,
idnum VARCHAR2(13) CONSTRAINT member_idnum_uk UNIQUE,
phone VARCHAR2(13),
address VARCHAR2(20),
regdate DATE,
interest VARCHAR2(15)
);

COMMENT ON COLUMN member.userid IS '사용자아이디';
COMMENT ON COLUMN member.username IS '회원이름';
COMMENT ON COLUMN member.passwd IS '비밀번호';
...

 

(3)

CREATE TABLE board(
no NUMBER(4) CONSTRAINT board_no_pk PRIMARY KEY,
subject VARCHAR2(50) CONSTRAINT board_subject_nn NOT NULL,
content VARCHAR2(1000),
rdate DATE,
userid VARCHAR2(10) CONSTRAINT board_userid_fk REFERENCES member(userid)
);

COMMENT ON COLUMN board.no IS '게시물 번호';
COMMENT ON COLUMN board.subject IS '제목';
...

 

(4)

INSERT INTO member
VALUES('A', '종강', '비번1', '주민번호1', '전번1', '주소1', TO_DATE('1111-11-01','YYYY-MM-DD'),
       '관심1');
       
INSERT INTO member
VALUES('B', '언제', '비번2', '주민번호2', '전번2', '주소2', TO_DATE('1111-11-02','YYYY-MM-DD'),
       '관심2');
       
INSERT INTO member
VALUES('C', '빨리', '비번3', '주민번호3', '전번3', '주소3', TO_DATE('1111-11-03','YYYY-MM-DD'),
       '관심3');
       
INSERT INTO board
VALUES (1, '제목1', '내용1', SYSDATE, 'A');

INSERT INTO board
VALUES (2, '제목2', '내용2', SYSDATE, 'B');

INSERT INTO board
VALUES (3, '제목3', '내용3', SYSDATE, 'A');

 

(5)

member 테이블에 삽입시

사용자 아이디는 PK로 NULL이 아니여야하고, 중복이 없어야한다.

회원이름, 비밀번호는 NOT NULL로 NULL 입력이 없어야하고

주민등록번호는 UK로 중복이 없어야한다.

 

board 테이블에 삽입시

똑같은 쿼리를 실행하면 게시물 번호가 PK인데 중복이 일어나 삽입이 안된다.

 

(6)

ALTER TABLE board
DISABLE CONSTRAINT board_no_pk;

Comments