본문 바로가기

SQL/SQLD (개발자)

2-1. SQL 기본_(2)DDL(DATA DEFINITION LANGUAGE)

제2절 DDL(DATA DEFINITION LANGUAGE)

 

1. 데이터 유형

  - 데이터베이스의 테이블에 입력되는 자료를 유형별로 나누는 기준

데이터 유형 설명
CHARACTER (=CHAR) 고정 길이 문자열, 공백(BLANK)는 제거하고 비교
VARCHAR (=VARCHAR) 가변 길이 문자열
NUMERIC (=NUMBER) 정수, 실수 등 숫자
DATETIME (=DATE) 날짜와 시각 정보

 


 

2. CREATE TABLE

  가. 테이블과 칼럼 정의

  나. CREATE TABLE   

# 테이블 생성 기존 형식

CREATE TABLE 테이블이름 (
		칼럼명1 DATATYPE [DEFAULT 형식]
		, 칼럼명2 DATATYPE [DEFAULT 형식]
		, 칼럼명2 DATATYPE [DEFAULT 형식]
		);
# Invoice_1 테이블 생성하기
CREATE TABLE Invoice_1 (
			InvoiceId_1 INTEGER
			, BillingCity_1 VARCHAR
			, BillingCountry_1 VARCHAR
			, Total_1 NUMERIC
			);

지정된 컬럼이 있고 값은 빈 테이블이 생성된다.

 

  다. 제약조건(CONSTRAINT)
    - 데이터의 무결성을 유지하기 위한 컬럼 설정 방법

구분 설명
PRIMARY KEY (기본키) 고유하게 식별하기 위한 기본키(식별자),
1개의 테이블에 1개의 기본키만 정의 가능, NULL사용 불가
UNIQUE KEY (고유키) 고유하게 식별하기 위한 고유키, NULL사용 가능
NOT NULL NULL 입력 불가
CHECK 입력되는 값의 범위 제한(boolean 등)
FOREIGN KEY (외래키) 테이블 간의 관계 정의를 위해 특정 테이블의 기본키를 다른 테이블의 외래키로 사용

 

  라. 생성된 테이블 구조 확인

# 테이블 구조 확인하는 여러가지 쿼리

DESCRIBE 테이블명; #Oracle
DESC 테이블명; #Oracle
sp_help 'dbo.테이블명'; #SQL Server

 

  마. SELECT 문장을 통한 테이블 생성 사례

# SELECT 문을 통해 테이블 생성하기

CREATE TABLE 생성_테이블명 AS 
SELECT * FROM 기존_테이블명;
# Invoice라는 테이블에서 필요한 컬럼만 뽑아서 새로운(Invoice_1) 테이블 생성
CREATE TABLE Invoice_1 AS 
SELECT InvoiceId, BillingCity, BillingCountry, Total
FROM Invoice



3. ALTER TABLE

# 가. ADD COLUMN
ALTER TABLE 테이블명
ADD 추가할_칼럼명 데이터_유형;

# 나. DROP COLUMN
ALTER TABLE 테이블명
DROP COLUMN 삭제할_칼럼명;

# 다. MODIFY COLUMN
ALTER TABLE 테이블명
MODIFY ( 칼럼명1 데이터_유형 [DEFAULT 식] [NOT NULL]
	, 칼럼명2 데이터_유형 [DEFAULT 식] [NOT NULL]
	... );

# 라. DROP CONSTRAINT
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

# 마. ADD CONSTRAINT
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

 

4. RENAME TABLE

# 테이블명 변경하기

RENAME 변경전_테이블명 TO 변경후_테이블명;

 

5. DROP TABLE

# 테이블 전체 삭제하기

DROP TABLE 테이블명;

 

6. TRUNCATE TABLE

# 테이블 내 모든 ROW를 삭제

TRUNCATE TABLE 테이블명;