Oracle - DDL (테이블 생성, 삭제, 편집)

갓김치·2020년 7월 22일
0

Oracle

목록 보기
5/33

참조

2020-07-21.sql
2020-07-22-02.sql
책 p.142~145

Data Definition Language

  • CREATE, DROP, ALTER

기본 표현규칙

  1. '한글' : 사용자 정의어 (user defined word),
  2. 영어로, 첫글자 알파벳, 특수문자 '_', 풀네임 (세율:tax rate)
  3. [] : 선택사용, 필요하면 쓰고 필요없으면 안써도됨, 생략가능
  4. ident1 | ident2 : ident1 또는 ident2 를 사용해야 함
  5. .... : 앞의 기술 내용이 반복 적용될 수 있음

기본 상식

데이터 타입

  • 문자타입 없고 전부 '문자열'타입임
    • char : 50자로 설정했는데 20자 들어오면 30자 빈공간
    • varchar2 : 빈공간 발생 안되고 쓸만큼만 잘라서 버림

기타

  • N.N = Not Null
  • 공백 = Nullable

테이블 생성

  • 외래키 없는 테이블 (=핵심, 기본, 자립 엔터티)부터 만들어야함

사용형식

CREATE TABLE 테이블명(
컬럼명 데이터타입[(크기)][NOT NULL | NULL] [DEFAULT 값],
컬럼명 데이터타입[(크기)][NOT NULL | NULL] [DEFAULT 값],
.....
컬럼명 데이터타입[(크기)][NOT NULL | NULL] [DEFAULT 값],
[CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[,컬럼명,...])],
[CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[,컬럼명,...])]
REFERENCES 외부테이블명(컬럼명)];

주의사항

  • 컬럼명 데이터타입[(크기)][NOT NULL | NULL][DEFAULT 값]
    • 데이터타입[(크기)]
      • 데이터타입 크기를 안 쓰는 데이터타입: DATE ,??(검색후채워넣기)
    • [NULL | NOT NULL]
      • [NOT NULL | NULL] 아예 안 써주면 NULLABLE
      • NOT NULL로 선택해놓고 INSERT로 값을 안넣으면 DEFAULT 값이 자동으로 등록됨
  • 기본키, 외래키 공통
    • 기본키와 외래키는 새로운 테이블이 만들어진다
    • 데이터베이스 전체에서 유일한 명칭이어야함
      • 기본키,외래키 테이블의 컬럼명이 레지스트리의 특별한 공간에 저장됨
    • [CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명,[,컬럼명,...])]
      • 기본키설정명 pk_컬럼명
      • 기본키가 두 컬럼이 묶여서 만들어졌다면 컬럼명을 전부 기술해 줘야함
        • (ex: PRIMARY KEY (컬럼명,컬럼명) )
      • 기본키는 NOT NULL 안적어줘도됨
    • [CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[,컬럼명,...])
      REFERENCES 외부테이블명(컬럼명)];
      - 외래키 2개를 각각 다른테이블에서 가지고 왔다면 CONSTRAINT을 2번 기술해줘야함

테이블 삭제 (DROP)

  • DROP 명령 사용
  • ROLLBACK의 대상 (DROP을 취소시킬 수 있다는 의미)

사용형식

DROP TABLE 테이블명;
DROP USER 유저명;
DROP FUNCTION 기능명;
.
.
.
예) EMP 테이블을 삭제하시오.
DROP TABLE EMP;

테이블 편집 (ALTER)

  • ALTER 명령으로 수행 (ROLLBACK 대상 아님)
  • 테이블명 수정
  • 컬럼 추가/변경/삭제
  • 제약조건(기본키,외래키) 추가, 삭제, 수정

테이블명 수정 (RENAME TO)

ALTER TABLE OLD테이블명
RENAME TO NEW테이블명;

예) EMP 테이블 이름을 EMPLOYEE 로 변경해라
ALTER TABLE EMP
RENAME TO EMPLOYEE;
=> 참조하고있던 WORK 테이블에도 자동으로 수정됨

컬럼 추가/변경/삭제

컬럼 추가 (ADD)

ALTER TABLE 테이블명
ADD 컬럼명 데이터타입[(크기)][DEFAULT 값] [NOT NULL|NULL];
=> 컬럼명, 데이터타입 은 순서 고정, 옵션은 순서 바뀌어도됨.

예) 사업장테이블(SITE)에 '시공일자' 컬럼을 추가하시오.
시공일자 : S_START_DATE 데이터타입=DATE, 기본값=오늘날짜
ALTER TABLE SITE
ADD S_START_DATE DATE DEFAULT SYSDATE;
=> DATE는 데이터타입크기 없음

예2) 여러개 하고 싶을 때
ALTER TABLE SITE
ADD S_START_DATE DATE DEFAULT SYSDATE,
컬럼명 타입 [DEFAULT 값][NOT NULL|NULL];

컬럼 속성 변경 (MODIFY)

  • 컬럼의 데이터타입, 크기, 기본값을 변경.

ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입[(크기)][DEFAULT 값] [NOT NULL|NULL];

예) 사업장자재테이블(SITE_ITEM)에서 자재이름(SI_ITEM_NAME)의 데이터 타입을 CHAR(70)으로 변경하시오
ALTER TABLE SITE_ITEM
MODIFY SI_ITEM_NAME CHAR(70);
=> 변경할 내용만 적으면 됨

컬럼명 변경 (RENAME COLUMN)

ALTER TABLE 테이블명
RENAME COLUMN OLD컬럼명 TO NEW컬럼명;

예) 사원테이블(EMPLOYEE)에서 사원의 주소(E_ADDRESS) 컬럼명을 (E_ADDR)로 변경하라.
ALTER TABLE EMPLOYEE
RENAME COLUMN E_ADDRESS TO E_ADDR;

컬럼 삭제 (DROP COLUMN)

ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

예) 사업장테이블(SITE)에서 시공일자컬럼(S_START_DATE)를 삭제하시오
ALTER TABLE SITE
DROP COLUMN S_START_DATE;

제약조건 변경 (ADD/MODIFY/DROP CONSTRAINT)

  • 기본키 및 외래키 설정 추가/변경/삭제

    ALTER TABLE 테이블명
    ADD CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[,컬럼명,...]),
    [CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[,컬럼명,...])
    REFERENCES 외부테이블명(컬럼명)];
    [MODIFY CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[,컬럼명,...]),
    [CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[,컬럼명,...])
    REFERENCES 외부테이블명(컬럼명)];][**DROP CONSTRAINT** 기본키설정명|외래키설정명;]

profile
갈 길이 멀다

0개의 댓글