[SQL 기본] DDL (Data Definition Language)
2. CREATE TABLE
가. 테이블과 칼럼 정의
테이블에 존재하는 모든 데이터를 고유하게 식별할 수 있으면서 반드시 값이 존재하는 단일 칼럼이나 칼럼의 조합들(후보키) 중에 하나를 선정하여 기본키 칼럼으로 지정
나. CREATE TABLE
테이블을 생성하는 구문 형식
CREATE TABLE 테이블이름 (
칼럼명1 DATATYPE [DEFAULT 형식],
칼럼명2 DATATYPE [DEFAULT 형식],
칼럼명3 DATATYPE [DEFAULT 형식]
);
테이블 생성 시 주의할 규칙
- 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용
- 테이블명은 다른 테이블의 이름과 중복되지 않아야 한다.
- 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없다.
- 테이블 이름을 지정하고 각 칼럼들은 괄호 "( )"로 묶어 지정한다.
- 각 칼럼들은 콤마 ","로 구분되고, 테이블 생성문으니 끝은 항상 세이콜론 ";"으로 끝난다.
- 칼럼데 대해서는 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성 있게 사용하는 거시 좋다.
- 칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다.
- 테이블명과 칼럼명은 반드시 문자로 시작해야 하고, 벤더별로 길이에 대한 한계가 있다.
- 벤더에서 사전에 정의한 예약어(Reserved word)는 쓸 수 없다.
- A-Z, a-z, 0-9, _, $, # 문자만 허용된다.
테이블 생성 시 추가적인 주의 사항
- 테이블 생성시 대/소문자 구분은 하지 않는다. - 기본적으로 대문자로 생성됨
- DATETIME 데이터 유형에는 별도로 크기를 지정하지 않는다.
- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.
- 칼럼과 칼럼의 구분은 콤마로 하되, 마지막 칼럼은 콤마를 찍지 않는다.
- 칼럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.
제약조건 방식
- 칼럼 LEVEL 정의 방식
- 테이블 LEVEL 정의 방식
다. 제약조건(CONSTRAINT)
제약조건(CONSTRAINT)이란 사용자가 원하는 조건의 데이터만 유지하기 위한 즉, 데이터의 무결성을 유지하기 위한 데이터베이스이 보편적인 방법으로 테이블의 특정 칼럼에 설정하는 제약
■ 제약조건의 종류
[표] 제약조건의 종류
구분 |
설명 |
PRIMARY KEY (기본키) |
테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키 정의. 하나의 테이블에 하나의 기본키 제약만 정의. 기본키 제약 = 고유키 제약 & NOT NULL 제약. |
UNIQUE KEY (고유키) |
테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키 정의. NULL은 고유키 제약 대상이 아님. |
NOT NULL |
NULL 값의 입력을 금지. 이 제약을 저정하면 해당 칼럼은 입력 필수. |
CHECK |
입력할 수 있는 범위 등을 제한. CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을 지정. |
FOREIGN KEY (외래키) |
관계형 데이터베이스에서 테이블 간의 고나계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성 외래키 지정시 참조 무결성 제약 옵션을 선택 가능. |
■ NULL 의미
NULL(ASCII 코드 00번)은 공백(BLANK, ASCII 코드 32번)이나 숫자 0(ZERO, ASCII 48)과는 전혀 다른 값이며, 조건에 맞는 데이터가 없을 때의 공집합과도 다르다. 'NULL'은 '아직 정의되지 않은 미지의 값'이거나 '현재 데이터를 입력하지 못하는 경우'를 의미한다.
■ DEFAULT 의미
데이터 입력 시에 칼럼의 값이 지정되어 있지 않을 경우 기본값(DEFAULT)을 사전에 설정할 수 있다.
데이터 입력시 명시된 값을 지정하지 않은 경우에 NULL 값이 입력되고, DEFAULT 값을 정의했다면 해당 칼럼에 NULL 값이 입력되지 않고 사전에 정의된 기본 값이 자동으로 입력된다.
라. 생성된 테이블 구조 확인
Oracle
DESCRIBE 테이블명;
DESC 테이블명;
SQL Server
sp_help 'dbo.테이블명'
마. SELECT 문장을 통한 테이블 생성 사례
SELECT 문장을 활용해서 테이블에 생성할 수 있는 방법(CTAS: Create Table ~ As Select ~)이 있다.
단, 제약조건 중 NOT NULL만 새로운 복제 테이블에 적용되고, 기본키, 고유키, 외래키, CHECK 등의 다른 제약조건은 없어진다.
'DBMS > SQL Basic' 카테고리의 다른 글
[PostgreSQL] Query Plan (0) | 2022.08.22 |
---|---|
[SQL 기본] DDL (Data Definition Language) - 1. 데이터 유형 (0) | 2015.11.19 |
[SQL 기본] 관계형 데이터베이스 개요 (0) | 2015.11.17 |