본문 바로가기
DB

오라클 : 테이블의 생성시 제약조건과 삭제

by 스노위13 2022. 7. 21.

1) TABLE 테이블의 특징
1.테이블명 컬럼명은 최대 30byte 까지 올 수 있다.
2.테이블명 컬럼명으로 예약어는 사용할 수 없다.
3.테이블명 컬러명으로 문자, 숫자, _, $, # 은 사용할 수 있지만 첫 글자는 문자만 가능하다. 
4.한 테이블에 컬럼은 최대 255개까지 가능하다.

2) 테이블의 생성 
(1) 기본 생성 구문

CREATE TABLE 테이블_이름 (
    column_이름    column_데이터 타입
);

CREATE TABLE member (
    mem_id		varchar(100),
    mem_pw		varchar(100),
    mem_name		varchar(100),
    phone_nm		number,
    email		varchar(100)
    regist_date 	date
);

코멘트는 아래와 같이 달 수 있다.

COMMENT ON TABLE member IS '회원관리테이블';

COMMENT ON COLUMN member.mem_id IS '아이디';
COMMENT ON COLUMN member.mem_pw IS '비밀번호';
COMMENT ON COLUMN member.mem_name IS '이름';


(2) 제약조건
    1. NOT NULL

    CREATE TABLE 테이블_이름 (
    column_이름  VARCHAR2(50),            -- null 값을 허용함
    column_이름 VARCHAR2(50) NOT NULL     -- null 값을 허용하지 않음
    );


    2. UNIQUE 

    CREATE TABLE 테이블_이름 (
    column_이름  VARCHAR2(50)         
    ,column_이름 VARCHAR2(50) UNIQUE   -- 들어가는 값이 중복되서는 안됨
    );

    CREATE TABLE ex1(
    col1 VARCHAR2(50)
    ,col2 VARCHAR2(50) UNIQUE);

    INSERT INTO ex1 VALUES('abc','abc');
    INSERT INTO ex1 VALUES('abc','abc');  --같은 값을 넣기 때문에 오류가 남



    3. 기본키 Primary Key (PK)
    primary key를 붙여 선언하는데 자동으로 NOT NULL과 UNIQUE 제약조건을 가지게 된다. 

    CREATE TABLE department (
    dept_no number(3) 		primary key     -- 기본키
    ,dept_name varchar2(20)
    ,floor number(5)
    );


    4. 외래키 Foreign Key (FK)

    column_이름 column_타입 CONSTRAINT 조건_이름 REFERENCES 연결하려는_테이블_이름(연결하려는_column_이름)
    CREATE TABLE emp (
    empno number(5) primary key
    ,empname varchar2(20)
    ,title VARCHAR2(20)
    ,dno number(3) CONSTRAINT emp_fk REFERENCES dep(deptno)  --외래키로 연결
    ,salary NUMBER
    );


    5. check

    CREATE TABLE 테이블_이름(
       name VARCHAR2(30) not null
       ,age number
       ,constraint ck_ex_age check(age between 1 and 150)
    );


    위와 같이 constraint 조건_이름 check(조건을_걸_column_이름 조건)으로 조건을 설정할 수 있다.

    INSERT INTO ex1_8 VALUES('짱구', '10');   -- 정상처리
    INSERT INTO ex1_8 VALUES('홍길동','200');  -- 1~150 사이가 아니라서 오류가 뜸


6. DEFAULT
DEFAULT로 어떤 값이 들어갈지를 미리 정할 수 있다.

    CREATE TABLE 테이블_이름 (
    column_이름  데이터_타입 default 넣으려는 값
    );

    CREATE TABLE ex1_9 (
     today date default sysdate      -- 당일의 날짜가 자동으로 들어간다.
    );

이러한 제약 조건은 테이블 제약조건에서 확인이 가능하고 테이블 편집 메뉴에서 기본키, 외래키, check는 추가도 가능하다


3) 테이블 삭제 

DROP TABLE 테이블_이름;

댓글