계정 생성 : khtest
권한 부여 : connect,resource
테이블 2개 생성
회원테이블(MEMBER), 게시판테이블(BOARD)
## 회원테이블 ##
MEMBER_NO(NUMBER) -- 회원 고유 순번 (자동 증가), PRIMARY KEY
MEMBER_USERID (VARCHAR2(20)) -- 회원 아이디 UNIQUE, NOT NULL
MEMBER_USERPWD (CHAR(20)) -- 회원 비밀번호 NOT NULL
MEMBER_NICKNAME (VARCHAR2(20)) -- 회원 닉네임 UNIQUE, NOT NULL
MEMBER_GENDER (NVARCHAR2(1)) -- 회원 성별('남' 혹은 '여') NOT NULL
MEMBER_EMAIL (VARCHAR2(30)) -- 회원 이메일 NOT NULL
-> 회원 고유 번호는 1000번 부터 시작하여 1씩 증가 해야함
-> MAX 번호는 1000000 번 까지
-> 성별은 '남' 또는 '여' 만 데이터 삽입이 가능 해야함
## 게시판 테이블 ##
BOARD_NO (NUMBER) -- 글 번호(자동 증가) , PRIMARY KEY
BOARD_TITLE (VARCHAR2(20)) -- 글 제목 NOT NULL
BOARD_CONTENT (VARCHAR2(200)) -- 글 내용 NOT NULL
BOARD_WRITEDATE (DATE) -- 글 작성시간 NOT NULL
BOARD_NICKNAME (VARCHAR2(20)) -- 글 작성자(닉네임) NOT NULL 및 FOREIGN KEY
-> 글 번호는 1번부터 시작하여 1씩 증가 해야함
-> MAX 번호는 500000번 까지
-> BOARD_NICKNAME은 MEMBER 테이블의 회원 닉네임을 사용하여 외래키로 지정
(MEMBER 테이블에 존재하지 않는 사용자가 글을 작성할 순 없음)
## 추가적인 OBJECT 생성하기 ##
1. 위에 사항을 확인하고 필요한 SEQUENCE 객체 만들기
2. 회원번호 , 회원닉네임, 회원 이메일, 회원 작성글 제목을 볼 수 있는 VIEW 만들기
3. 작성글을 검색할때 빠르게 검색하기 위하여 TITLE,CONTENT에 INDEX 객체 만들기
4. MEMBER와 BOARD 테이블을 'M' 과 'B' 로도 검색 할 수 있게 만들기
ex) SELECT * FROM M; -- MEMBER 테이블 정보가 보여야 함
※ 각종 확인은 직접 데이터를 넣고 확인 해보세요
============================================================================
--MEMBER테이블생성
CREATE TABLE MEMBER(
MEMBER_NO NUMBER PRIMARY KEY, -- 회원 고유 순번 (자동 증가), PRIMARY KEY
MEMBER_USERID VARCHAR2(20) UNIQUE NOT NULL, -- 회원 아이디 UNIQUE, NOT NULL
MEMBER_USERPWD CHAR(20)NOT NULL, -- 회원 비밀번호 NOT NULL
MEMBER_NICKNAME VARCHAR2(20) UNIQUE NOT NULL, -- 회원 닉네임 UNIQUE, NOT NULL
MEMBER_GENDER NVARCHAR2(1) CHECK (MEMBER_GENDER IN('남','여')) NOT NULL , -- 회원 성별('남' 혹은 '여') NOT NULL
MEMBER_EMAIL VARCHAR2(30) NOT NULL-- 회원 이메일 NOT NULL
);
--멤버테이블에 대한 시퀀스
CREATE SEQUENCE MEMBER_SE
START WITH 1000
INCREMENT BY 1
MAXVALUE 1000000
NOCYCLE
NOCACHE;
--BOARD 테이블 생성
CREATE TABLE BOARD(
BOARD_NO NUMBER PRIMARY KEY, -- 글 번호(자동 증가) , PRIMARY KEY
BOARD_TITLE VARCHAR2(20) NOT NULL, -- 글 제목 NOT NULL
BOARD_CONTENT VARCHAR2(200) NOT NULL, -- 글 내용 NOT NULL
BOARD_WRITEDATE DATE NOT NULL, -- 글 작성시간 NOT NULL
BOARD_NICKNAME VARCHAR2(20) NOT NULL,-- 글 작성자(닉네임) NOT NULL 및 FOREIGN KEY
FOREIGN KEY(BOARD_NICKNAME) REFERENCES MEMBER (MEMBER_NICKNAME)
);
--BOARD 테이블에 대한 시퀀스
CREATE SEQUENCE BOARD_SE
START WITH 1
INCREMENT BY 1
MAXVALUE 500000
NOCYCLE
NOCACHE;
select * from member;
--뷰 생성
create view MEMBER_VIEW
as
select m.MEMBER_NO, m.MEMBER_NICKNAME, m.MEMBER_EMAIL,b.BOARD_TITLE
from MEMBER m, BOARD b;
--MEMBER 값 삽입
INSERT INTO MEMBER VALUES
(MEMBER_SE.NEXTVAL,'jg7180','pass01','훈훈1','남','jg555@ver.com');
INSERT INTO MEMBER VALUES
(MEMBER_SE.NEXTVAL,'jg7181','pass02','훈훈2','남','jg55@ver.com');
INSERT INTO MEMBER VALUES
(MEMBER_SE.NEXTVAL,'jg7182','pass03','훈훈3','남','jg5@ver.com');
select * from m;
--BOARD 값 삽입
INSERT INTO BOARD VALUES
(BOARD_SE.NEXTVAL,'오키1','맘대로작성',sysdate,'훈훈2');
select * from member;
select * from m;
select * from board;
select * from b;
※ 주의!!!
시스템 계정에서
--과제
--계정만들기
create user khtest identified by khtest;
--권한주기
grant connect,resource to khtest;
GRANT CREATE VIEW TO khtest;
--동의어 설정 해주기
CREATE PUBLIC SYNONYM M FOR KHTEST.MEMBER;
CREATE PUBLIC SYNONYM B FOR KHTEST.BOARD;
'IT일반과목 > DataBase' 카테고리의 다른 글
데이터베이스 20180827 (학원15) (0) | 2018.08.27 |
---|---|
데이터베이스 20180827 (학원14) (0) | 2018.08.27 |
데이터베이스 20180824 (학원12) (0) | 2018.08.24 |
데이터베이스 20180824 (학원11) (0) | 2018.08.24 |
데이터베이스 20180823 (학원10) (0) | 2018.08.24 |