DDL(Data Definition Language)
1) 개 념
테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 그러한 구조를 생성/변경/삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령
2) 종 류
CREATE, ALTER, DROP, RENAME, TRUNCATE
A. DDL(Data Definition Language)
자주 사용되는 데이터 유형
데이터 유형 | 설 명 |
CHARACTER(s) | 고정 길이 문자열 정보 (Oracle, SQL Server 모두 CHAR로 표현) |
s는 기본 길이 1바이트, 최대 길이 Oracle 2,000바이트, SQL Server 8,000바이트 | |
입력 값의 길이가 s보다 작을 경우 그 차이 만큼 공백문자로 입력됨 | |
VARCHAR(s) | 가변 길이 문자열 정보 (Oracle은 VARCHAR2로 표현, SQL Server는 VARCHAR로 표현) |
S는 최소 길이 1바이트, 최대 길이 Oracle 4,000바이트, SQL Server 8,000바이트 | |
가변 길이로 입력되어 입력 값에 따라 데이터 크기가 상이함 | |
NUMERIC | 숫자 정보 (Oracle은 NUMBER로, SQL Server는 10가지 이상의 숫자 타입을 가지고 잇음) |
Oracle은 처음에 전체 자리 수 지정, 그 다음 소수 부분의 자리 수를 지정 정수 부분이 6자리이고, 소수점 부분이 2자리인 경우에는 'NUMBER(8,2)' |
|
DATE | 날짜와 시각 정보 |
Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 |
B. DDL : CREATE TABLE
- 테이블은 일정한 형식에 의해 생성
- 테이블에 입력될 데이터를 정의하고, 정의한 데이터를 어떠한 데이터 유형으로 선언 할 것인지를 결정
- 테이블에 존재하는 모든 데이터를 고유하게 식별할 수 있으면서 반드시 값이 존재하는(Not Null) 단일 칼럼이나 칼럼의 조합들(후보키) 중에 하나를 선정하여 기본키로 지정
- 기본키는 단일 컬럼이 아닌 여러 개의 칼럼으로도 만들 수 있음
- 테이블과 테이블 간에 정의된 관계는 기본키(PK)와 외부키(FK)를 활용해서 설정
CREATE TABLE 테이블명 (
컬럼명1 데이터타입,
컬럼명2 데이터타입,
컬럼명3 데이터타입 );
※ 여러 세부 사항 추가 가능 (제약사항, 테이블스페이스 지정 등)
- 테이블 생성 규칙
1. 객체를 의미할 수 있는 적절한 이름을 사용
2. 다른 테이블의 이름과 중복되지 않아야 함
3. 테이블 내에서는 컬럼명이 중복되게 지정할 수 없음
4. 각 컬럼들은 괄호 “( )” 로 묶어 지정
5. 각 컬럼들은 콤마 “ , “ 로 구분
6. 테이블 생성문의 끝은 항상 세미콜론 “ ; “ 사용
7. 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성 있게 사용
8. 데이터 유형은 반드시 지정
9. 문자로 시작
10. DB 벤더사 별로 사전에 정의한 예약어( Reserved word)는 쓸 수 없음
11. A – Z, a – z, 0 – 9, _, $, # 문자만 허용
12. 특수문자의 경우 _를 가장 많이 사용
- DDL : CREATE TABLE 생성 예시
- 테이블 구조 확인
1. DESCRIBE 테이블명; (ORACLE DB 경우 DESC 약어 사용가능)
SQL> DESC PLAYER;
컬럼 NULL 가능 데이터 유형
------------------- ------------- ----------------
PLAYER_ID NOT NULL CHAR(7)
PLAYER_NAME NOT NULL VARCHAR2(20)
TEAM_ID NOT NULL CHAR(3)
NICKNAME VARCHAR2(30)
- 제약 조건 (CONSTRAINT)
데이터의 무결성을 유지하기 위한 테이블 칼럼에 설정하는 제약
- 제약 조건 종류
1. 기본키(PK) : 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키를 정의. 하나의 테이블에 하나의 기
본키 제약만 정의. 반드시 NOT NULL
2. 고유키(UNIQUE KEY) : 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의
3. NOT NULL : NULL 값의 입력을 금지. 컬럼에 제약 조건을 지정하지 않으면 NULL값을 허용하지만, NOT NULL
제약을 지정함으로써 NULL 값 입력이 허용되지 않음
4. CHECK : 입력할 수 있는 값의 범위 등을 제한. CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을
지정
5. 외래키(FK) : 관계형 데이터베이스에서 테이블간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로
복사하는 경우 외래키가 생성
C. DDL : ALTER TABLE
생성된 테이블에 컬럼을 추가/삭제하거나 제약조건을 추가/삭제 등 구조를 변경할 때 사용
- ALTER 종류
1. 컬럼 추가 : ADD COLUMN
2. 컬럼 삭제 : DROP COLUMN
3. 컬럼 변경 : MODIFY COLUMN
4. 컬럼명 변경 : RENAME COLUMN
5. 제약조건 추가 : ADD CONSTRAINT
6. 제약조건 삭제 : DROP CONSTRAINT
【ADD COLUMN】
1. ALTER TABLE “테이블명” ADD “칼럼명’ “데이터유형”;
2. ALTER TABLE PLAYER ADD ADDRESS VARCHAR2(30);
【DROP COLUMN】
1. ALTER TABLE “테이블명” DEROP “컬럼명”;
2. ALTER TABLE PLAYER DROP ADDRESS;
【MODIFY COLUMN】
1. ALTER TABLE “테이블명” MODIFY “컬럼명” “데이터타입” [“DEFAULT 식”] [“NOT NULL 제약조건”]
2. ALTER TABLE PLAYER MODIFY FIRST_NAME VARCHAR2(2) DEFAULT ‘KIM’ NOT NULL;
【RENAME COLUMN】
1. ALTER TABLE “테이블명” RENAME COLUMN “변경할 컬럼명” TO “새 칼럼명”
2. ALTER TABLE PLAYER RENAME COLUMN NUMBER TO P_NUMBER;
【ADD CONSTRAINT】
1. ALTER TABLE “테이블명” ADD CONSTRAINT “제약조건명” “제약조건(컬럼명)”
2. ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY(TEAM_ID) REFERENCES TEAM(TEAM_ID);
【DROP CONSTRAINT】
1. ALTER TABLE “테이블명” DROP CONSTRAINT “제약조건명”
2. ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK;
- DDL : RENAME TABLE
1. 생성된 테이블에 대해 테이블명을 변경
2. RENAME “기존 테이블명” TO “변경할 테이블명”;
3. RENAME TEAM TO TEAM_A;
- DDL : DROP TABLE
1. 생성된 테이블이 더 이상 필요하지 않을 때 테이블을 삭제
2. DROP “테이블명” [CASCADE CONSTRAINT];
3. DROP TABLE PLAYER;
4. CASCADE CONSTRAINT 옵션을 사용할 경우 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도
삭제한다는 것을 의미
- DDL : TRUNCATE TABLE
1. 해당 테이블에 들어있던 모든 행(ROW)들이 삭제되고 저장 공간을 재사용 가능하도록 해제
2. DELETE 명령어보다 속도가 현저히 빠르지만 ROLLBACK 불가
3. TRUNCATE TABLE “테이블명”;
4. TRUNCATE TABLE PLAYER;
[SQLD] 3-1. SQL 기본 - 관계형 데이터베이스 개요
[Fortinet] Fortigate SNMP 설정, 서버 연동 방법 - FGT 방화벽