SQL
[ SQL ] Tibero DDL
Jerry_JH
2021. 12. 30. 23:49
728x90
ORACLE 과 동일한 명령어가 많지만, 조금씩 틀린점이 있다.
CREATE
1. 테이블 생성
- 기본 구조
CREATE TABLE [table name] (
[column name1] [column type1],
[column name2] [column type2],
[column name3] [column type3],
-- CONSTRAINT [PK name] PRIMARY KEY ([column name])
);
- Example
CREATE TABLE COMPANY.EMPLOYEE ( EMP_NUMBLE NUMBER, NAME VARCHAR(20) NOT NULL, AGE NUMBER, ADDRESS VARCHAR(100), START_DATE DATE, CONSTRAINT PK_EMPLOYEE PRIMARY KEY (EMP_NUMBLE) );
COMPANY 라는 스키마의 EMPLOYEE 테이블을 생성한 명령어이다.
컬럼은 총 5개이고, NAME은 NOT NULL 이라는 옵션이 붙어져있다.
PK는 PK_EMPLOYEE 이름으로 EMP_NUMBLE로 지정하였다.
2. 인덱스 생성
- 기본 구조
CREATE INDEX [INDEX NAME] ON [TABLE NAME] ([COLUMN NAME]);
- Example
CREATE INDEX EMP_INDEX ON COMPANY.EMPLOYEE (NAME);
COMPANY스키마 EMPLOYEE 테이블의 NAME이라는 컬럼으로 인덱스를 생성하였다.
이름은 EMP_INDEX 설정
ALTER
1. 테이블 컬럼 삭제
- 기본 구조
ALTER TABLE [TABLE NAME] DROP COLUMN [COLUMN NAME];
- Example
ALTER TABLE COMPANY.EMPLOYEE DROP COLUMN AGE;
COMPANY 스키마 EMPLOYEE 테이블의 AGE 컬럼을 삭제한 코드이다.
PK , FK로 설정된 컬럼을 삭제하면 설정된 옵션에 따라서 예상치 못한 결과가 나올 수 있으므로 항상 확인해주고 실행해야 된다.
2. PK 지정
- 기본 구조
ALTER TABLE [TABLE NAME] ADD CONSTRAINT [PK NAME] PRIMARY KEY([COLUMN NAME]);
- Example
ALTER TABLE COMPANY.EMPLOYEE ADD CONSTRAINT PK_EMP PRIMARY KEY(NAME, AGE);
COMPANY 스키마 EMPLOYEE 테이블의 PK_EMP 라는 이름으로 NAME,AGE를 조합으로 PK를 생성하였다.
PK가 되기 위해서는 몇 가지의 조건이 붙는다. 이 조건을 지키지 않으면 오류가 발생한다.
1. 해당 컬럼의 NULL값이 있으면 안된다.
2. 해당 컬럼의 중복값이 있으면 안된다. (모든 값이 유니크해야됨)
3. INDEX RENAME
- 기본 구조
ALTER INDEX [INDEX NAME] RENAME TO [INDEX NAME(NEW)];
- Example
ALTER INDEX EMP_INDEX RENAME TO NEW_EMP_INDEX;
EMP_INDEX 이름을 인덱스의 이름은 NEW_EMP_INDEX로 변경했다.
4. PK RENAME
- 기본 구조
-- PK 삭제
ALTER TABLE [TABLE NAME] DROP CONTRAINT [PK NAME];
-- PK 설정
ALTER TABLE [TABLE NAME] ADD CONTRAINT [PK NAME(NEW)] PRIMARY KEY([COLUMN NAME]);
- Example
-- PK 삭제
ALTER TABLE COMPANY.EMPLOYEE DROP CONTRAINT PK_EMP;
-- PK 설정
ALTER TABLE COMPANY.EMPLOYEE ADD CONTRAINT NEW_PK_EMP PRIMARY KEY(NAME,ADDRESS);
EMP_INDEX 이름을 인덱스의 이름은 NEW_EMP_INDEX로 변경했다.
INDEX와 PK의 이름은 겹치지 않게 주의해야한다.
DROP
1. 테이블 삭제
- 기본 구조
DROP TABLE [TABLE NAME];
- Example
DROP TABLE COMPANY.EMPLOYEE ;
COMPANY 스키마의 EMPLOYEE 테이블을 삭제했다.
728x90