A. 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 생성 예시

 

DDL : CREATE TABLE 생성 예시

 

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;