[오라클 DB] 오라클 테이블 생성하기
- Language & Solution/RDBMS
- 2019. 10. 15. 10:13
오라클 테이블 생성
테이블은 DBMS에서 가장 기본적인 객체로 로우(행), 컬럼(열)로 구성된 2차원 형태의 객체로 엑셀의 워크시트의 구조와 유사합니다. SQL을 이용해 데이터를 조회, 삭제, 입력, 수정할 수 있으며 그 결과로 생성되거나 삭제된 데이터가 반영되는 곳이 테이블입니다.
테이블은 DBMS에서 가장 필수적인 요소입니다. 따라서 테이블의 논리적, 물리적 구조를 제대로 알아야 나중에 DBMS를 운영할 때 효율적이고 안전하게 운영할 수 있습니다.
테이블 생성 구문
테이블은 CREATE 문으로 생성할 수 있습니다. CREATE 구문에는 정말 많은 옵션이 있지만 그 중 핵심적인 것만 적어보면 아래와 같습니다
CREATE TABLE [SCHEMA.] 테이블명 (
컬럼1 데이터타입 [DEFAULT 표현식] [컬럼 제약] ...,
컬럼2 데이터타입 [DEFAULT 표현식] [컬럼 제약] ...,
...
CONSTRAINT [제약이름] [제약종류] 컬럼1 [, 컬러2] ...
) [TABLESPACE 테이블 스페이스명];
- SCHEMA : 스키마는 임의의 사용자가 생성한 데이터베이스 객체를 말하며 그 스키마 이름은 사용자 이름과 같습니다. 쉽게 말하면 스키마는 테이블같은 객체가 생성되는 영역입니다. 만약 유저 이름이 saelobi라면 이 사용자가 테이블, 인덱스, 뷰 등 여러 객체를 생성했을 시 그 객체의 소유자는 saelobi가 됩니다. 이때, 이 객체들은 saelobi.test_table, saelobi.test_index 같이 스키마로 구분되어 집니다. 참고로 기존 시스템 테이블 같은 시스템 객체들의 소유자는 sys입니다.
- DEFAULT : 아무런 컬럼값이 들어가지 않을 때 기본적으로 들어가는 값을 표현합니다. 보통 DATE 컬럼에 SYSDATE 같이 현재 시간을 나타내는 값을 넣습니다.
- CONSTRAINT : 제약조건을 나타내는 키워드입니다. 제약조건에 대해서는 다음에 자세히 설명하도록 하겠습니다. 여기서는 테이블에 데이터를 저장할 때 어떤 제약을 건다고 생각하시면 됩니다.
- TABLESPACE : 테이블스페이스는 실제 테이블이 저장되는 지점입니다. 여러 테이블 스페이스 공간이 있으며 그중 하나의 테입르 스페이스 공간을 선택하여 저장할 수 있습니다.
참고로 테이블스페이스와 스키마와의 관계를 헷갈려 하실 수 있습니다. 간단하게 설명하자면 테이블스페이스는 테이블스페이스는 하나의 저장공간으로 생각하면 됩니다. 이 테이블스페이스 안에서 오라클 유저(user)는 자신만의 테이블 생성 공간(schema)를 가지게 됩니다. 이 스키마는 유저 이름과 매핑되죠. 오라클에서는 스키마가 유저단위로 자동 생성되고 변경할 수 있습니다.
테이블 스페이스는 오라클 서버 단위로 생성됩니다. 이 오라클 서버라는 것은 오라클 DBMS 프로그램이 가동되고 있는 서버를 말하죠.
아래는 데이터베이스, 테이블스페이스, 스키마, 테이블과의 관계를 간략하게 나타내고 있습니다. 자세하게 들어가면 더 많은 것들이 그림에 포함되어야 겠지만 논리적인 관점에서 간략하게 보면 대략 아래의 그림이라 생각하면 개념 잡기 쉬울 것 입니다.
따라서 같은 테이블스페이스 내라도 스키마가 다르면 같은 테이블 명을 쓸 수 있습니다.
오라클 테이블 생성 예제
CREATE TABLE SAELOBI.EMPLOYEE (
EMPID NUMBER,
ENAME, VARCHAR2(100),
DEPARTMENT_ID NUMBER,
SALARY NUMBER,
JOB_ID VARCHAR(3),
HIREDATE DATE
)
테이블을 만들 때는 컬럼의 특성에 맞게 NUMBER, VARCHAR2같은 데이터 타입을 명시해야합니다. 데이터 타입은 나중에 자세히 다루겠지만 간단히 위에서 나온 것을 설명하자면
NUMBER |
가변 숫자를 나타냅니다. |
VARCHAR2 |
가변 문자열을 나타냅니다. 위 숫자는 byte 크기를 나타낸 것입니다. |
DATE |
날짜를 나타냅니다. |
오라클 테이블 생성 규약
오라클 DB에는 다음과 같은 테이블명 규칙이 있습니다. 아래의 규칙을 참고하셔서 테이블, 컬럼, 인덱스 네이밍을 하시기 바랍니다.
- 테이블명, 컬럼명의 최대 크기는 30byte
- 예약어를 이용하여 테이블명, 컬럼명을 만들 수 없음 (ex) SYSDATE, ASC, COUNT
- 테이블명 첫글자는 문자
- 한 테이블에 사용 가능한 컬럼은 최대 255개
참고자료
'Language & Solution > RDBMS' 카테고리의 다른 글
[MariaDB] MariaDB 다운로드 및 설치 - windows, ubuntu (0) | 2019.10.13 |
---|---|
[MariaDB] MariaDB란 무엇일까? MariaDB 소개 (MariaDB Overview) (2) | 2019.10.13 |
[Oracle DB] Oracle 저장구조 정리(블럭, PCTFREE, PCTUSED) (2) | 2019.09.27 |
이 글을 공유하기