Oracle SQL 강좌
테이블의 생성 51 27 99,999+

by 구루비 테이블 제약조건 CREATE TABLE 컬럼 USER_TABLES [2002.01.20]


테이블은 실제로 데이터들이 저장되는 곳 이라고 생각하면 쉽게 이해 할 수 있으며, CREATE TABLE 명령어를 이용해서 테이블을 생성 할 수 있다.

테이블이란?

  • - 테이블은 데이타베이스의 기본적인 데이타 저장 단위 이다.
  • - 데이타베이스 테이블은 사용자가 접근 가능한 모든 데이타를 보유하며 레코드와 컬럼으로 구성 된다.
  • - 관계형 데이타베이스가 아닌 예전의 데이타 베이스 용어에서는 파일과 테이블이, 필드와 컬럼이, 그리고 레코드와 행이 동일시 되었다.
  • - 테이블은 시스템내에서 독립적으로 사용되길 원하는 엔티티를 표현할수 있다. 예를 들면, 회사에서의 고용자나 제품에 대한 주문은 테이블로 표현 가능하다.
  • - 테이블은 두 엔티티간의 관계를 표현할 수 있다. 즉 테이블은 고용자와 그들의 작업 숙련도 혹은 제품과 주문과의 관계를 표현하는데 사용될 수 있다.
  • - 테이블내에 있는 외래 키 (ForeIgn Key)는 두 엔티티 사이의 관계를 표현하는데 사용 된다.
  • - 컬럼 : 테이블의 각 컬럼은 엔티티의 한 속성을 표현 한다
  • - 행(ROW, 레코드) : 테이블의 데이타는 행에 저장 된다
※ 테이블 생성시 제한사항과 고려할점
  • - 테이블 이름과 컬럼은 항상 알파벳 문자로 시작해야 하며 A~Z까지의 문자, 0~9까지의 숫자, 그리고 $,#,_(Under Bar)를 사용할 수 있다. (공백 사용 불가능)
  • - 테이블의 컬럼 이름은 30자를 초과할수 없고, 예약어를 사용할수 없다. (버전없이 되면서 컬럼수 제한 변경 됨)
  • - 오라클 테이블 한 계정안에서 테이블 이름은 다른 테이블 이름과 달리 유사해야 한다.
  • - 한 테이블 안에서 컬럼이름은 같을 수 없으며 다른 테이블에서의 컬럼이름과는 같을수 있다.

테이블 생성 문법

USER생성문법

  • - schema : 테이블의 소유자
  • - table_name : 테이블 이름
  • - column : 컬럼의 이름
  • - datatype : 컬럼의 데이터 유형
  • - TABLESPACE : 테이블이 데이터를 저장 할 테이블스페이스
  • - PCTFREE : 블럭내에 이미 존재하고 있는 Row에 Update가 가능하도록 예약시켜 놓는 블럭의 퍼센트 값을 지정 한다.
  • - PCTUSED : 테이블 데이터가 저장될 블록의 행 데이터 부분의 크기를 퍼센트지로 지정 한다. PCTFREE에 의해 지정된 크기만큼 Block이 차면 PCTUSED 값보다 작아져야 새로운 행 삽입이 가능 하다.
  • - INITRANS : 하나의 데이터 블록에 지정될 초기 트랜잭션의 값을 지정 한다.
  • - MAXTRANS : 하나의 데이터 블록에 지정될 수 있는 트랜잭션 최대 수를 지정 한다.
  • - STORAGE : 익스텐트 스토리지에 대한 값을 지정 한다.
  • - LOGGING : 테이블에 대해 이후의 모든 작업이 리두 로그 파일 내에 기록 되도록 지정 한다
  • - NOLOGGING : 리두 로그 파일에 테이블의 생성과 특정 유형의 데이터 로드를 기록하지 않도록 지정 한다.
  • - PCTFREE, PCTUSED에 대한 자세한 강좌는 오라클 어드민 강좌의 6. Storage Structure => PCTFREE와 PCTUSED를 참고해 주세요
  • 오라클 버전없이 되면서 PCTFREE, PCTUSED 설정 및 관리가 많이 변경 되었습니다.

테이블 생성 예제

테이블 생성시 주의사항
  • - 테이블 이름을 지정하고 각 컬럼들은 괄호 "()" 로 묶어 지정한다.
  • - 컬럼뒤에 데이터 타입은 꼭 지정되어야 한다.
  • - 각 컬럼들은 콤마","로 구분되고, 항상 끝은 세미콜론";" 으로 끝난다.
  • - 한 테이블 안에서 컬럼이름은 같을수 없으며 다른 테이블에서의 컬럼이름과는 같을 수 있다.
  	
-- emp2와 dept2테이블을 생성하는 예제이다.
SQL> CREATE TABLE EMP2(
    EMPNO  NUMBER    CONSTRAINT emp_pk_empno PRIMARY KEY,     
--  (컬럼) (데이터타입)  (제약조건)
    ENAME  VARCHAR2(20),
    JOB    VARCHAR2(40),
    MGR    NUMBER,
    HIREDATE  DATE,
    SAL    NUMBER,
    COMM   NUMBER,
    DEPTNO NUMBER);
테이블이 생성되었습니다.

SQL> CREATE TABLE DEPT2(
    DEPTNO  NUMBER  CONSTRAINT dept_pk_deptno  PRIMARY KEY,
    DNAME   VARCHAR2(40),
    LOC     VARCHAR2(50)) ;
테이블이 생성되었습니다.
	

USER가 소유한 모든 테이블 조회

 	
-- USER_TABLES 데이터사전을 조회 하면 유저가 소유한 테이블을 확인 할 수 있다.
SQL>SELECT table_name FROM  USER_TABLES;

TABLE_NAME
------------
BONUS
CRETABLE
DEPT
DUMMY
EMP
EMP2
SALGRADE
    

- 강좌 URL : http://www.gurubee.net/lecture/1012

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by LinDol [2005.10.25 21:26:11]
테이블 스페이스 를 지정하지 않은것 같은데(맞나요?) 그럼 기본적으로 어디로
지정되는건가요?

by smile [2005.11.09 20:41:17]
퍼갑니다. ^^

by asda [2006.01.11 11:43:17]
테이블 스페이스는 유저 생성시에 확정할수있으며, 추후에 수정가능합니다.
이앞의 강의에 나와있습니다.

by 상민 [2006.03.03 15:55:02]
CONSTRAINT emp_pk_empno PRIMARY KEY 이부분에서 empno를 기본키로 설정하는것은 알겠는데 emp_pk_empno가 정확이 어떤것을 뜻하는지요? emp2테이블명하고도 틀려서 이해가 좀~ 부족합니다 ^^

by 양재상 [2006.04.26 21:38:20]
emp_pk_empno는 constraint 의 이름을 정해주는거죠.
테이블에 이름을 정해주는 것처럼 제약조건에 이름을 정해주는거에요.

by 김동기 [2006.05.10 10:37:26]
퍼가요^^

by 유현호(오라클초보에요) [2006.12.11 18:08:53]
테이블 만들때 CREATE TABLE DEPT2(
DEPTNO NUMBER CONSTRAINT dept_pk_deptno PRIMARY KEY,
DNAME VARCHAR2(40),
LOC VARCHAR2(50)) ;
여기서 시퀀스 어디에 입력해요.

by OCP [2006.12.22 18:06:24]
당연히 deptno에 시퀀스 입력해 줘야되겠죠~ Sequence는 Number 형식으로 타입이 Number에만 거는거니까요!!

by 웅 [2007.04.20 16:26:02]
정성스런 게시물 감사합니다.
오타가 있네요.
오라클 테이블 한 계정안에서 테이블 이름은 다른 테이블 이름과 달리 유사해야 합니다. ->> 오라클 테이블 한 계정안에서 테이블 이름은 다른 테이블 이름과 달리 유일해야 합니다.

by 김정식 [2007.04.25 10:30:48]
조만간 날 잡아서 강좌의 오타 소탕작전을 한번 하겠습니다.
그럼 즐거운 하루 보내세요..

by 김윤경 [2007.10.25 13:34:07]
감사합니다^^

by 초짜 [2008.02.21 18:06:06]
꾸벅꾸벅 ^^

by 생초짜 [2008.03.27 15:15:44]
저에게 희망을 주세요 너무 몰라서 1203jju@hanmail.net 네이트온 이라도 좋아요 문자로도 좋아요,..흑흑흑 010-4288-8921 부탁드려요 성별은 남자요,...제발
제발 제발 25살인데 머리가 안돌아가네요..흑흑

by 최창현 [2008.04.25 14:36:00]
잘보겠습니다.

by 기린 [2008.05.21 15:54:56]
강좌 감사합니다.

by 해양db [2009.11.11 20:25:58]
테이블 삭제는 어떻게 하죠?

by 초보 [2009.11.18 15:29:55]
drop table 테이블명(테이블이 통체로 사라짐)
delete * from 테이블명(테이블의 틀은 남고 데이터만 사라짐,where를 주어서
원하는 데이터만 지울수도 있죠? * commit 꼭!!)


by 김창환 [2010.10.08 18:48:44]
잘보고갑니다.

by 닭알구이 [2011.12.20 22:11:20]
아뢰옵기 송구하오나, (버전없이 되면서 컬럼수 제한 변경 됨)에서 "버전없이"는 "버전업"을 의도하신 것이 맞지요?

by 김남석 [2012.02.08 16:45:27]
후후 좋은 자료 감사~~

by 열사생 [2012.02.10 20:04:55]
딴것보다 디비는 이해가 중요한것같은데 정말 쏙쏙 들어오네요 ㅇ _ㅇ/

by 돌이맹이 [2012.02.23 16:47:23]
쉽게 설명 잘 되어 있네요^^

by 서병준 [2012.10.08 10:59:40]
잘보았습니다 ㅎ

by 손님 [2012.10.12 14:53:14]
 create table Userer(table numer2(4), tato varchar2(14),ohnami varchar2(20));
 

by 쿠마 [2012.12.17 18:51:25]
잘봤습니다.

by 이정호 [2013.04.05 10:56:16]

craete table test 001 (
 COMP varchar(5) PRIMARY KEY
,COMPCD varchar(10)
,COMPNM varchar(10)
,COMPNB varchar(10)
)
;
commit;

by 지금이순간 [2015.10.08 13:34:11]

create table t1

(

name varchar2(20),

phone number(20),

juso varchar2(20)

);

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입