테이블 생성
테이블은 CREATE 문으로 생성할 수 있는데, 기본 구문은 다음과 같다.
CREATE TABLE [스키마.]테이블명(
컬럼1 컬럼1_데이터타입 [NULL, NOT NULL],
컬럼2 컬럼2_데이터타입 [NULL, NOT NULL],
...
)[TABLESPACE 테이블스페이스명];
테이블은 로우와 컬럼으로 구성되므로, 테이블 생성은 컬럼 단위로 정의한다. 스키마명은 생략이 가능하며 생략하게 되면 현재 자신이 로그인한 스키마 이름으로 생성된다. 또한 TABLESPACE 구문도 생략이 가능한데, 생략하면 해당 사용자의 디폴트 TABLESPACE에 생성된다.
그럼 간단한 테이블을 하나 생성해 보자.
1 스크립트 입력하기 다음의 문장을 SQL Developer에서 입력한 후 F5를 눌러 실행해 보자.
2 생성된 테이블 확인하기 ➊ SQL Developer 상에서 왼쪽 ora_user 밑의 테이블을 선택하고 ➋ [새로고침]을 하면 방금 생성한 테이블 목록이 보일 것이다. ➌ 이 테이블을 클릭하면 새 창이 뜨고 여러 가지 정보가 탭으로 나뉘어 표시된다. ➍ 이중 [SQL]탭을 클릭하면 다음과 같은 테이블 생성 구문(DDL)을 볼 수 있다.
스키마명(ORA_USER)과 테이블스페이스명(MYTS)을 명시하지 않았는데도 스키마명은 “ORA_USER”, 테이블스페이스명은 “MYTS”로 ORA_USER의 디폴트 값이 적용되었다. 나머지 SEGMENT, PCTFREE 등의 항목은 테이블에 관한 다른 설정 값으로 이 역시 디폴트 값이 적용되었으며, 이 부분에 대한 내용은 이 책의 범위를 넘어서므로 일단 기억하고 넘어가자.
테이블 생성은 컬럼 명칭과 컬럼의 데이터 타입을 명시함으로써 정의했다. 즉 해당 컬럼이 어떤 데이터 유형에 속하는지를 명시해야 한다. 예를 들어, employees 테이블에서 사원명(emp_name)은 문자형, 급여(salary)는 숫자형, 입사일자(hire_date) 컬럼은 날짜형 데이터다.
입력
CREATE TABLE employees (
EMPLOYEE_ID NUMBER(6,0) NOT NULL,
EMP_NAME VARCHAR2(80) NOT NULL,
...
SALARY NUMBER(8,2) ,
HIRE_DATE DATE NOT NULL,
...
... );
이처럼 컬럼의 특성에 맞게 데이터 타입을 명시해 줘야 한다. 또한 테이블명과 컬럼명은 몇 가지 규칙에만 벗어나지 않는다면 자유롭게 만들 수 있는데, 그 규칙은 다음과 같다.
❶ 테이블명, 컬럼명의 최대 크기는 30바이트다.
❷ 테이블명, 컬럼명으로 예약어는 사용할 수 없다.
(예약어(키워드)란 오라클에서 미리 선점한 단어로 SELECT, UPDATE과 같은 구문, COUNT, ASC와 같은 SQL 함수 등이 있으며, 예약어 목록은 V\$RESERVED_WORDS 시스템 뷰에서 조회할 수 있다)
❸ 테이블명, 컬럼명으로 문자, 숫자, ‘_’, ‘\$’, ‘#’을 사용할 수 있지만, 첫 글자는 문자만 올 수 있다.
❹ 한 테이블에 사용 가능한 컬럼은 최대 255개까지다.
❶, ❷, ❸번 내용은 테이블과 컬럼뿐만 아니라 오라클에 있는 모든 데이터베이스 객체 이름을 생성할 때도 적용된다.
각 컬럼은 컬럼명과 데이터 타입으로 구성하는데 오라클에서 제공하는 기본 데이터 타입은 크게 문자, 숫자, 날짜형으로 나눌 수 있다. 먼저 컬럼이 가질 수 있는 기본 데이터 타입에 대해 알아보자.