제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 테이블명;
'SQL > SQLD (개발자)' 카테고리의 다른 글
2-1. SQL 기본_(4)TCL(TRANSACTION CONTROL LANGUAGE) (0) | 2021.08.24 |
---|---|
2-1. SQL 기본_(3)DML(DATA MANIPULATION LANGUAGE) (0) | 2021.08.22 |
2-1. SQL 기본_(1)관계형 데이터베이스 개요 (0) | 2021.08.18 |
1-2. 데이터 모델과 성능_(3)데이터베이스 구조와 성능, 분산 데이터베이스와 성능 (0) | 2021.08.11 |
1-2. 데이터 모델과 성능_(2)반정규화와 성능, 대량 데이터에 따른 성능 (0) | 2021.08.11 |