Bigfat

[Oracle] 테이블스페이스, 사용자, 테이블 생성하기 본문

Database

[Oracle] 테이블스페이스, 사용자, 테이블 생성하기

kyou 2017. 2. 24. 15:07

오라클에서 테이블스페이스, 사용자, 테이블을 생성해보자

오라클에서는 테이블스페이스(TableSpace)에 테이블을 저장하게 되는데, 즉 테이블의 집합이다. 테이블스페이스는 용량을 가지며, 자동확장 설정이 가능하다. 자세한 내용은 테이블스페이스의 정의를 참고하자. 테이블스페이스를 생성할 때는 관리자 계정을 이용하자.


CREATE TABLESPACE bbs DATAFILE 'd:\bbs.dbf' SIZE 100M;
CREATE USER Kyou IDENTIFIED BY 1234 DEFAULT TABLESPACE bbs;
--GRANT CREATE SESSION TO Kyou


'GRANT 권한 TO 유저명'으로 권한을 하나씩 부여해도 되지만, 롤(Role)을 부여하여 수많은 권한을 한번에 부여할 수 있다. 롤은 권한 명령어들을 집합, 묶음이다. CONNECT 롤에는 ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK 등 데이터베이스에 접속할 수 있도록 하는 권한 8가지를 포함하고 있다. 포함되어 있는 권한들은 쿼리로도 확인 가능하다.


--데이터베이스 접속, 객체 생성 권한
GRANT CONNECT, RESOURCE TO Kyou


--특정 사용자에게 부여된 롤 확인
SELECT * 
FROM DBA_ROLE_PRIVS
WHERE GRANTEE = 'KYOU';


이때 조건에서 사용자 이름을 반드시 대문자로 해줘야 하는데, DBA_ROLE_PRIVS 테이블을 조건 없이 조회해보면 GRANTEE 컬럼에 사용자명이 모두 대문자로 저장되있기 때문이다. SQL은 대소문자를 구별하지 않지만, 테이블 내의 데이터들은 대소문자를 구분하기 때문에 'Kyou'를 조건 값으로 주면 아무런 결과도 얻지 못한다.


이제 게시판 테이블을 생성해보자.


--게시판(Bulletin Board System) 테이블 생성
CREATE TABLE Kyou.BBS(
    ARTICLE_NUMBER NUMBER PRIMARY KEY,
    USER_ID VARCHAR2(10) NOT NULL,
    TITLE VARCHAR2(50) NOT NULL,
    CONTENT CLOB NOT NULL,
    WRITE_DATE DATE NOT NULL,
    FILE_NAME VARCHAR2(50) NOT NULL
);

--설명(Comments) 입력
COMMENT ON COLUMN Kyou.BBS.ARTICLE_NUMBER IS 'Primary key of bbs table. 번호';
COMMENT ON COLUMN Kyou.BBS.USER_ID IS '사용자 아이디';
COMMENT ON COLUMN Kyou.BBS.TITLE IS '제목';
COMMENT ON COLUMN Kyou.BBS.CONTENT IS '내용';
COMMENT ON COLUMN Kyou.BBS.WRITE_DATE IS '작성일자';
COMMENT ON COLUMN Kyou.BBS.FILE_NAME IS '첨부파일명';


인턴할 때 게시판 만들다가 댓글 사이에 댓글 삽입하는 게 내가 생각했던 것만큼 잘 안되서 포기했었는데, 이참에 다시 제대로 만들어 봐야겠다. 흔한 개발자의 개발 노트 보면서 한창 만들던 추억이 떠오른다.


'Database' 카테고리의 다른 글

[SQL] 게시판 페이징을 위한 리스트 정렬 쿼리  (0) 2017.04.06
[SQL] 테이블 수동 백업  (0) 2017.03.30