SQL код скопирован в буфер обмена
EN PT FR

Урок 8.1: Оператор CREATE TABLE

До этого мы в основном работали с уже существующими таблицами и извлекали из них данные. Но в реальной работе с базой данных важно не только читать информацию, но и уметь создавать структуру хранения данных. Для этого используется оператор CREATE TABLE.

CREATE TABLE относится к языку определения данных (DDL, Data Definition Language). С его помощью мы описываем, как будет устроена таблица: какие в ней будут столбцы, какие типы данных они принимают и какие правила будут применяться к значениям.

Базовый синтаксис

Простейшая форма оператора выглядит так:

CREATE TABLE table_name (
    column1 data_type,
    column2 data_type,
    column3 data_type
);

После имени таблицы в круглых скобках перечисляются столбцы. Для каждого столбца нужно указать:

  • имя столбца;
  • тип данных;
  • при необходимости ограничения (NOT NULL, PRIMARY KEY, DEFAULT и другие).

Пример простой таблицы

Давайте создадим таблицу students:

CREATE TABLE students (
    student_id INT,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    birth_date DATE,
    created_at TIMESTAMP
);

В этом примере:

  • student_id — целое число;
  • first_name и last_name — текстовые значения длиной до 50 символов;
  • birth_date — дата рождения;
  • created_at — дата и время создания записи.

После выполнения этой команды таблица будет создана, но пока останется пустой.


Часто используемые типы данных

При создании таблиц важно выбирать подходящие типы данных. Вот несколько самых распространенных:

  • INT — целые числа;
  • VARCHAR(n) — строка переменной длины до n символов;
  • TEXT — длинный текст произвольного размера;
  • DATE — дата;
  • TIMESTAMP — дата и время, часто используется для хранения момента создания или изменения записи;
  • DECIMAL(p, s) — точные числовые значения, например для денежных сумм;
  • BOOLEAN — логическое значение TRUE или FALSE.

Правильный выбор типа данных помогает экономить место, поддерживать качество данных и избегать ошибок.


Ограничения столбцов

Ограничения (constraints) задают правила для данных в таблице.

1. PRIMARY KEY

Первичный ключ уникально идентифицирует каждую строку таблицы.

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

Столбец student_id не может содержать дубликаты и NULL.

2. NOT NULL

Это ограничение требует, чтобы столбец всегда содержал значение.

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL
);

Теперь first_name и last_name нельзя оставить пустыми.

3. DEFAULT

Позволяет задать значение по умолчанию, если при вставке оно не указано.

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) DEFAULT 0.00
);

Если при добавлении товара цена не будет указана, база данных автоматически подставит 0.00.


Пример таблицы с несколькими правилами

Ниже пример более реалистичной таблицы employees:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    hire_date DATE NOT NULL,
    salary DECIMAL(10, 2) DEFAULT 0.00
);

Что здесь происходит:

  • employee_id — уникальный идентификатор сотрудника;
  • first_name и last_name обязательны;
  • email должен быть уникальным;
  • hire_date обязателен;
  • salary по умолчанию равен 0.00.

Такая структура уже лучше отражает реальные требования к данным.


Использование IF NOT EXISTS

Во многих СУБД можно избежать ошибки, если таблица уже существует, с помощью IF NOT EXISTS:

CREATE TABLE IF NOT EXISTS departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(100) NOT NULL
);

Это удобно при повторном запуске учебных скриптов или миграций.


На что стоит обращать внимание

При создании таблиц полезно помнить несколько правил:

  • выбирайте типы данных осознанно, а не «с запасом на всё»;
  • задавайте PRIMARY KEY для таблиц, где каждая строка должна быть уникально идентифицируема;
  • используйте NOT NULL для действительно обязательных полей;
  • добавляйте DEFAULT, если у столбца есть естественное значение по умолчанию;
  • старайтесь делать структуру таблицы понятной и предсказуемой уже на этапе проектирования.

Хорошая схема таблицы снижает количество ошибок и упрощает дальнейшую работу с INSERT, UPDATE и SELECT.


Пример из практики

Представим, что мы создаем таблицу для хранения книг:

CREATE TABLE books (
    book_id INT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    author VARCHAR(100) NOT NULL,
    published_date DATE,
    price DECIMAL(8, 2) DEFAULT 0.00
);

После создания такой таблицы в нее уже можно будет добавлять строки с помощью INSERT INTO.


Ключевые выводы этого урока:

  • Оператор CREATE TABLE используется для создания новых таблиц в базе данных.
  • Для каждого столбца необходимо задать имя и тип данных.
  • Ограничения, такие как PRIMARY KEY, NOT NULL, UNIQUE и DEFAULT, помогают контролировать качество данных.
  • Хорошо спроектированная таблица делает дальнейшую работу с данными проще и надежнее.
  • IF NOT EXISTS помогает избежать ошибок при повторном создании таблиц.

В следующем уроке мы узнаем, как добавлять новые строки в таблицы с помощью оператора INSERT INTO.