SQL Create Table
SQL CREATE TABLE: 테이블 생성
SQL CREATE TABLE 명령은 새로운 테이블을 생성할 때 사용됩니다. 테이블은 데이터베이스 내에서 데이터를 저장하는 기본적인 구조이며, **열(column)**과 **행(row)**으로 구성됩니다. 각 열은 특정 데이터 타입을 가지며, 데이터베이스에 저장되는 데이터를 정의합니다.
1. 기본 CREATE TABLE 문법
CREATE TABLE 테이블_이름 (
열_이름1 데이터_타입 [제약조건],
열_이름2 데이터_타입 [제약조건],
...
);
- 테이블_이름: 생성할 테이블의 이름.
- 열_이름: 테이블에 추가할 열(column)의 이름.
- 데이터_타입: 열에 저장될 데이터의 유형 (예:
INT
,VARCHAR
,DATE
등). - 제약조건: 열에 적용될 제약조건 (예:
PRIMARY KEY
,NOT NULL
,UNIQUE
등).
2. SQL CREATE TABLE 예제
예제: 직원 정보를 저장하는 테이블 생성
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50),
hire_date DATE,
salary DECIMAL(10, 2)
);
이 명령은 employees라는 이름의 테이블을 생성하며, 이 테이블에는 employee_id, name, department, hire_date, salary 등의 열이 있습니다.
- employee_id:
INT
타입, 기본 키로 설정되어 고유한 값을 가짐. - name:
VARCHAR(100)
, NULL을 허용하지 않음. - department:
VARCHAR(50)
, 부서 이름을 저장. - hire_date:
DATE
, 입사 날짜를 저장. - salary:
DECIMAL(10, 2)
, 소수점 이하 두 자리까지의 급여를 저장.
3. 데이터 타입 (Data Types)
데이터 타입은 테이블 열에서 저장할 데이터의 유형을 지정합니다. 다양한 SQL 데이터 타입이 있으며, 여기서 몇 가지 주요한 데이터 타입을 소개합니다.
3.1 숫자 데이터 타입
- INT: 정수형 데이터를 저장 (예:
INT
,SMALLINT
,BIGINT
). - DECIMAL(p, s): 소수점이 있는 숫자를 저장.
p
는 총 자릿수,s
는 소수점 이하 자릿수 (예:DECIMAL(10, 2)
는 소수점 이하 2자리 포함 최대 10자리). - FLOAT, DOUBLE: 실수형 데이터를 저장.
3.2 문자열 데이터 타입
- VARCHAR(n): 가변 길이 문자열.
n
은 최대 문자열 길이. - CHAR(n): 고정 길이 문자열.
- TEXT: 큰 텍스트 데이터를 저장.
3.3 날짜 및 시간 데이터 타입
- DATE: 날짜를 저장 (YYYY-MM-DD 형식).
- TIME: 시간을 저장 (HH:MM:SS 형식).
- DATETIME: 날짜와 시간을 함께 저장.
- TIMESTAMP: 날짜와 시간 정보를 저장하고, 자동으로 업데이트가 가능.
4. 제약조건 (Constraints)
테이블을 생성할 때, 열에 대한 제약조건을 지정하여 데이터의 무결성을 보장할 수 있습니다.
4.1 주요 제약조건
- PRIMARY KEY: 테이블의 각 행을 고유하게 식별하는 열을 지정. 값은 고유해야 하며, NULL을 허용하지 않음.
- NOT NULL: 열에 NULL 값을 허용하지 않음.
- UNIQUE: 열의 값이 고유해야 함.
- DEFAULT: 열의 기본값을 설정.
- CHECK: 열에 입력되는 데이터가 특정 조건을 만족해야 함.
- FOREIGN KEY: 다른 테이블의 열과 연결되는 외래 키를 정의하여 관계를 설정.
4.2 제약조건 사용 예제
예제: 제약조건을 추가한 테이블 생성
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(50) NOT NULL UNIQUE,
manager_id INT,
CHECK (manager_id > 0)
);
- PRIMARY KEY:
department_id
는 기본 키로 설정되어 고유한 값이어야 함. - NOT NULL:
department_name
열에는 NULL 값을 허용하지 않음. - UNIQUE:
department_name
의 값은 중복될 수 없음. - CHECK:
manager_id
는 0보다 큰 값이어야 함.
5. 외래 키 (Foreign Key)
FOREIGN KEY는 한 테이블의 열이 다른 테이블의 기본 키나 고유 키와 연관되어 있음을 나타냅니다. 이를 통해 두 테이블 간의 관계를 설정할 수 있습니다.
5.1 FOREIGN KEY 문법
FOREIGN KEY (열_이름) REFERENCES 참조_테이블(참조_열_이름)
5.2 FOREIGN KEY 예제
예제: 외래 키를 포함한 테이블 생성
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
- 이 예제에서는
employees
테이블의 department_id 열이 departments 테이블의 department_id 열을 참조하여 두 테이블 간의 관계를 설정합니다.
6. AUTO_INCREMENT (자동 증가 열)
AUTO_INCREMENT는 주로 기본 키에 사용되며, 행이 추가될 때마다 자동으로 숫자가 증가하는 열을 생성할 때 사용됩니다.
6.1 AUTO_INCREMENT 예제
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50)
);
- employee_id 열은 새로운 행이 추가될 때마다 자동으로 증가하는 고유한 값을 가집니다.
7. IF NOT EXISTS 옵션
IF NOT EXISTS 옵션을 사용하면 동일한 이름의 테이블이 이미 존재할 때 CREATE TABLE 명령이 실패하지 않고, 테이블이 존재하지 않을 때만 생성됩니다.
7.1 IF NOT EXISTS 예제
CREATE TABLE IF NOT EXISTS employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50)
);
이 명령은 employees 테이블이 존재하지 않을 때만 새로 테이블을 생성합니다.
8. 테이블 삭제 (DROP TABLE)
생성한 테이블을 더 이상 사용하지 않거나 삭제해야 할 때는 DROP TABLE 명령을 사용합니다. 이 명령은 테이블과 그 안에 포함된 모든 데이터를 영구적으로 삭제합니다.
8.1 DROP TABLE 문법
DROP TABLE 테이블_이름;
8.2 DROP TABLE 예제
DROP TABLE employees;
이 명령은 employees 테이블을 삭제합니다.
9. 실전 예제
예제 1: 직원 테이블 생성
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50),
hire_date DATE,
salary DECIMAL(10, 2) CHECK (salary >= 0)
);
- employee_id: 자동으로 증가하는 고유한 기본 키.
- name: NULL을 허용하지 않는 직원 이름.
- department: 부서 이름.
- hire_date: 입사 날짜.
- salary: 급여는 0 이상이어야 함.
예제 2: 부서 테이블 생성 및 외래 키 추가
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(50) NOT NULL UNIQUE
);
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
- departments 테이블과 employees 테이블 간의 관계를 설정하는 외래 키를 사용.
employees.department_id
는departments.department_id
를 참조.
10. 요약
- CREATE TABLE 명령은 새로운 테이블을 생성하며, 열의 이름과 데이터 타입, 제약조건을 지정할 수 있습니다.
- 제약조건을 사용하여 데이터 무결성을 보장하고, 외래 키를 통해 테이블 간의 관계를 설정할 수 있습니다.
- AUTO_INCREMENT는 기본 키와 같은 고유한 값을 자동으로 증가시키는 데 유용합니다.
- DROP TABLE 명령은 테이블과 그 데이터를 영구적으로 삭제합니다.
- 테이블을 생성할 때 IF NOT EXISTS 옵션을 사용하여 테이블이 이미 존재하는지 확인할 수 있습니다.
SQL에서 테이블 생성은 데이터
저장 및 관리의 첫 단계이며, 적절한 데이터 타입과 제약조건을 설정하는 것이 데이터 무결성과 성능에 중요합니다.