До этого мы в основном работали с уже существующими таблицами и извлекали из них данные. Но в реальной работе с базой данных важно не только читать информацию, но и уметь создавать структуру хранения данных. Для этого используется оператор 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) задают правила для данных в таблице.
PRIMARY KEYПервичный ключ уникально идентифицирует каждую строку таблицы.
CREATE TABLE students (
student_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
Столбец student_id не может содержать дубликаты и NULL.
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 нельзя оставить пустыми.
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.