본문 바로가기

IT/Oracle

오라클 7탄 (테이블 생성및 삭제)

테이블 만들기

DDL (DATA DEFINITION Language) : CREATE(생성), DROP(삭제), ALTER(변경) 등


TABLES 생성 : CREATE

형식

CREATE TABLE 테이블명

(

  컬럼1 데이터타입(크기),

  컬럼2 데이터타입(크기),

  .

  .

  .

)


CREATE TABLE BOARD.BOARD (

  IDX        NUMBER                 NOT NULL, 

  TITLE      VARCHAR2(200 BYTE)     NOT NULL, 

  WRITER     VARCHAR2(50 BYTE)      NOT NULL, 

  REGDATE    VARCHAR2(20 BYTE)      NOT NULL, 

  CONTENT    CLOB                   NOT NULL, 

  CNT        NUMBER                DEFAULT 0                     NULL

)


CLOB - > 무한정

CNT - > DEFAULT 0 (카운트가 0 부터 시작)


--테이블을 만들때의 형식

- 데이터 타입

문자

1) CHAR : 최대크기 2000 BYTE, 고정길이 문자형 테이터 타입니다.(가장 많이 사용됨)

 예) CHAR(10) -> 문자 10자를 저장한다.

2) VACHAR2 : 최대길이 4000 BYTE, 가변길이 문자형 데이터 타입. (가장 많이 사용됨)

예) VARCHAR(10) -> 문자 10자를 저장한다.

--대부분 1,2번 사용  

3) NCHAR : 유니코드, UTF 처리 -> 1문자 : 3BYTE 차지

4) NVACHAR2 : 유티코드, UTF처리 -> 1문자 : 3BYTE 차지

--한글이 깨지는 경우,입력이 오류남 3,4 (BYTE의 크기를 잘 안맞춰 놓으면 꺠짐)


숫자

NUMBER(N,M) : 가변 숫자 타입,N : 정수 자리수, M: 소수점 자리수 의미 (가장 많이 사용됨)

 최대크기 21 BYTE


날짜

1) DATE : 고정길이 날짜와 시간까지 데이터를 저장할 수 있다.(가장 많이 사용됨)

2) TIMESTAMP : 밀리초까지 정밀한 날짜를 처리한다.


2. 테이블 생성

CREATE TABLE MEMBER (

  MEM_NAME   VARCHAR2(20),

  AGE     NUMBER(3),

  BIRTH_DATE DATE

)

--회사마다의 네이밍 규칙이 정해져 있다. EX) MNAME, MEM_NAME

;

DROP TABLE MEMBER; :테이블 삭제

--DROP 테이블을 사용한후에는 꼭 주석처리! null(없다), 롤백

;;

테이블 제한사항 만들기 -> MEM_NAME은 반드시 입력해야 한다. (NOT NULL 처리한다.)

 

입력이 안되면 에러처리(입력(INSERT)이 안되게 만들기)

                     NOT NULL,CHECK, DEFAULT, UNIQUE

                     ;

2) 유니크(UNIQUE) 처리 : 중복된 값에 입력 제한 (NULL 값 허용) 단일하고 유일한 제약사항

  UNIQUE NOT NULL <-권장

;

CREATE TABLE MEMBER (

MEM_ID     VARCHAR2(10), 

  MEM_NAME   VARCHAR2(20) NOT NULL,

  AGE     NUMBER(3),

  BIRTH_DATE DATE,

  EMAIL      VARCHAR2(50) UNIQUE, 

  CONSTRAINT "MEMBER_PK" PRIMARY KEY(MEM_ID)

)

;


3) 기본키(PRIMARY KEY-> PK) 설정 : UNIQUE 하다. / INDEX가 형성

테이블에서 데이터들을 유일하게 구분(식별)하기 위해 사용


4) CHECK: 입력되는 값을 체크하여 일정한 조건에 해당하는 값만 입력할 수 있도록 제한


CREATE TABLE MEMBER (

MEM_ID     VARCHAR2(10), 

  MEM_NAME   VARCHAR2(20) NOT NULL,

  AGE     NUMBER(3),

  BIRTH_DATE DATE,

  EMAIL      VARCHAR2(50) UNIQUE, 

  GENDER     VARCHAR2(10), 

  CONSTRAINT "CHECK_GENDER" CHECK(GENDER IN('남자','여자'))

)

-- 잘못 들어오는 데이터를 막을 수 있다.


5) DEFAULT : 기본값 처리 , 디플트로 선언된 컬럼에 값이 입력이 안되면,

  디폴트 값이 입력된다.

CREATE TABLE MEMBER (

MEM_ID     VARCHAR2(10), 

  MEM_NAME   VARCHAR2(20) NOT NULL,

  AGE     NUMBER(3),

  BIRTH_DATE DATE,

  EMAIL      VARCHAR2(50) UNIQUE, 

  GENDER     VARCHAR2(10), 

  JOIN_DATE  DATE DEFAULT SYSDATE

  판무수량     NUMBER DEFAULT 0

  CONSTRAINT "CHECK_GENDER" CHECK(GENDER IN('남자','여자'))

)

--오늘 날짜로 SYSDATE(현재날짜) 로 가입하라 따로 입력은 안하면 지금시각 가입처리

--DEFAULT 날짜는 날짜 숫자는 숫자 타입으로 /NUMBER = 0 / DATE - SYSDATE


6) 테이블 삭제

 [형식]

 DROP TABLE [스키마명].테이블명

 예1) DROP TABLE HR.MEMBER

 예2) DROP TABLE HR.MEMBER [CASCADE CONSTRAINTS]

 -> 참조 제약조건(FK) 들까지 자동삭제할 때 사용한다.

 -> 만약 참조제약조건이 존재하는데 삭제한다면, 오류 발생

 

테이블 수정

-> 컬럼과 관련된 부분

-- 현장에서는 어려운 작업(컨펌 및 다른 프로젝트팀과 협의) 

- 추가

   형식)

      ALTER TABLE 테이블 이름

      ADD 컬럼명 데이터타입 [NOT NULL, DEFAULT, CHECK]

    예) MEMBER JOIN_DATE -> 가입일 추가

    ;

      ALTER TABLE MEMBER

      ADD JOIN_DATE DATE;

      

      DESC MEMBER;

--    구조 보는방법  

- 수정

형식)

    ALTER TABLE 테이블이름

        MODIFY 존재하는 컬럼명 [데이터타입변경, 나머지추가]

    예)MEMBER 테이블에 EMAIL 컬럼이 VARCHAR2(50) -> VARCHAR2(100) 변경

      ALTER TABLE MEMBER

        MODIFY EMAIL VARCHAR2(100);

        DESC MEMBER;

        변경전) EMAIL VARCHAR2(50)

        변경후) EMAIL VARCHAR2(100)

- 삭제

    형식)

    ALTER TABLE 테이블이름

        DROP COLUMN 컬럼명

      예)MEMBER 테이블에서 JOIN_DATE 컬럼을 삭제하시오

     ALTER TABLE MEMBER

        DROP COLUMN JOIN_DATE;

        

삭제전)MEM_ID NOT NULL VARCHAR2(10)

MEM_NAME NOT NULL VARCHAR2(20)

AGE NUMBER(3)

BIRTH_DATE DATE

EMAIL VARCHAR2(100)

JOIN_DATE DATE

        

삭제후)MEM_ID NOT NULL VARCHAR2(10)

MEM_NAME NOT NULL VARCHAR2(20)

AGE NUMBER(3)

BIRTH_DATE DATE

EMAIL VARCHAR2(100)

        

제약조건 변경

- 추가

형식)

  ALTER TABLE 테이블이름

      ADD CONSTRAINT 제약조건의 이름, 제약조건의 형택, 컬럼명

  예) MEMBER 테이블에서 BIRTH_DATE를 UNIQUE 추가

  ALTER TABLE MEMBER

      ADD CONSTRAINT BIRTH_DATE_UK UNIQUE(BIRTH_DATE)

      

- 삭제

형식) ALTER TABLE 테이블이름

  DROP PRIMARY KEY|UNIQUE(컬럼명), CONSTRAINT 제약조건이름

  예)  MEMBER 테이블에서 BIRTH_DATE UNIQUE 제약조건을 삭제

  ALTER TABLE MEMBER

       DROP CONSTRAINT BIRTH_DATE_UK;

       

--MEMBER의 제약조건의 비활성화

-- ENABLED <-활성화 되어 있는 상태


제약조건의 비활성화/활성화

형식)

  ALTER TABLE 테이블이름

  DISABLE CONSTRAINT 제약조건 이름;

  예) MEMBER 테이블에서 MEM_ID PRIMARY KEY 비활성화

  현재상태)

  MEMBER_PK Primary Key ENABLED

  MEMBER_PK Primary Key DISABLED

      

      비활성화

      ALTER TABLE MEMBER

      DISABLE CONSTRAINT MEMBER_PK;

      

      활성화

  ALTER TABLE MEMBER

      ENABLE CONSTRAINT MEMBER_PK;

      

주석처리

형식) 

  COMMENT ON TABLE 테이블이름| 컬럼 TABLE.컬럼| IS '주석';

      

  예) MEMBER 테이블에 주석 처리

  COMMENT ON TABLE MEMBER IS 'MEMBER TABLE';

--한글 안될때 유니코드  /컬럼명에 대한 코멘트를 바꿀때 COLUMN



'IT > Oracle' 카테고리의 다른 글

오라클 9탄 (sequence,view)  (0) 2015.07.24
오라클 8탄 [데이터 조작어 DML]  (0) 2015.07.23
오라클 6탄 (SCOOP) 서브쿼리  (0) 2015.07.20
오라클 함수정리 6탄 1(hr테이블)  (0) 2015.07.19
오라클 함수정리 5탄 [JOIN]  (0) 2015.07.18