Как создать таблицу в SQL (CREATE TABLE)?
Делаю первую базу с нуля. Как создать таблицу в SQL, какие бывают типы столбцов и как сразу задать первичный ключ и обязательные поля? Можно простой пример таблицы пользователей?
2 ответа
Таблица создаётся командой CREATE TABLE: перечисляете имя таблицы и столбцы с их типами и ограничениями.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
age INT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT NOW()
);
Разберём по частям:
- id SERIAL PRIMARY KEY — автоинкрементный целочисленный идентификатор и первичный ключ (в MySQL вместо SERIAL пишут
INT AUTO_INCREMENT). - VARCHAR(100) — строка переменной длины до 100 символов;
TEXT— без жёсткого ограничения. - INT — целое число; для дробных
DECIMAL(10,2)(деньги) илиFLOAT. - BOOLEAN — да/нет; DATE / TIMESTAMP — дата / дата со временем.
Ограничения столбцов:
- NOT NULL — поле обязательно к заполнению;
- UNIQUE — значения не повторяются;
- DEFAULT — значение по умолчанию, если не передано;
- PRIMARY KEY — уникальный идентификатор строки;
- REFERENCES other(id) — внешний ключ.
Чтобы не падать с ошибкой, если таблица уже есть, добавляют:
CREATE TABLE IF NOT EXISTS users ( ... );
Частая ошибка — забыть запятую между столбцами или поставить лишнюю после последнего. И помните: точные имена типов чуть отличаются между СУБД (SERIAL — это Postgres).
Если нужно потом изменить уже созданную таблицу, для этого есть ALTER TABLE: добавить столбец — ALTER TABLE users ADD COLUMN phone VARCHAR(20);, удалить — DROP COLUMN, переименовать — RENAME COLUMN. То есть CREATE TABLE задаёт структуру при создании, а ALTER TABLE правит её позже без потери данных. Не путайте ALTER (меняет структуру) с UPDATE (меняет данные внутри строк).