코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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_iddepartments.department_id를 참조.

10. 요약

  • CREATE TABLE 명령은 새로운 테이블을 생성하며, 열의 이름과 데이터 타입, 제약조건을 지정할 수 있습니다.
  • 제약조건을 사용하여 데이터 무결성을 보장하고, 외래 키를 통해 테이블 간의 관계를 설정할 수 있습니다.
  • AUTO_INCREMENT는 기본 키와 같은 고유한 값을 자동으로 증가시키는 데 유용합니다.
  • DROP TABLE 명령은 테이블과 그 데이터를 영구적으로 삭제합니다.
  • 테이블을 생성할 때 IF NOT EXISTS 옵션을 사용하여 테이블이 이미 존재하는지 확인할 수 있습니다.

SQL에서 테이블 생성은 데이터

저장 및 관리의 첫 단계이며, 적절한 데이터 타입과 제약조건을 설정하는 것이 데이터 무결성과 성능에 중요합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com