← Все вопросы

Как создать таблицу в SQL (CREATE TABLE)?

Задан 19 месяцев назад1.4к просмотров2 ответа
9

Делаю первую базу с нуля. Как создать таблицу в SQL, какие бывают типы столбцов и как сразу задать первичный ключ и обязательные поля? Можно простой пример таблицы пользователей?

2 ответа

13
✓ Принятый ответ — помог автору

Таблица создаётся командой 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).

5

Если нужно потом изменить уже созданную таблицу, для этого есть ALTER TABLE: добавить столбец — ALTER TABLE users ADD COLUMN phone VARCHAR(20);, удалить — DROP COLUMN, переименовать — RENAME COLUMN. То есть CREATE TABLE задаёт структуру при создании, а ALTER TABLE правит её позже без потери данных. Не путайте ALTER (меняет структуру) с UPDATE (меняет данные внутри строк).

Ваш ответ

Войдите, чтобы ответить на вопрос.