SQLab
УчёбаПрактикаЗадачиАренаРейтинг
© 2026 SQLab · Ташкент
SQLab

Учите SQL прямо в браузере — ничего не нужно устанавливать.

Платформа

  • Учёба
  • Практика
  • Задачи
  • Арена
  • Рейтинг

Для кого

  • Студентам
  • Преподавателям
  • Университетам
© 2026 SQLab. Все права защищены.Сделано в Узбекистане для студентов.
УчёбаПрактикаЗадачиАренаРейтинг
0/26

Основы

  • Что такое база данных?
  • Первый SELECT
  • WHERE: отбор нужных строк
  • IN, BETWEEN, LIKE и NULL
  • Сортировка, LIMIT и DISTINCT

Вычисления

  • Выражения, функции и CASE
  • Работа с датами
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY и HAVING

Соединение таблиц

  • Ключи и связи
  • INNER JOIN
  • LEFT JOIN и строки без пары
  • Несколько таблиц и self join

Сложные запросы

  • Подзапросы
  • UNION, INTERSECT, EXCEPT
  • WITH: именованные запросы
  • Оконные функции

Создание и изменение таблиц

  • CREATE TABLE: типы и ограничения
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Как правильно спроектировать базу

Профессиональный уровень

  • Индексы и EXPLAIN
  • Транзакции и ACID
  • VIEW: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Создание и изменение таблиц

CREATE TABLE: типы и ограничения

1810 мин

Теперь учимся не читать базу, а строить её. Команды этого урока пробуйте в своей личной базе: Практика → Свободный режим — там можно создавать и удалять любые таблицы.

Создание базы

CREATE DATABASE kutubxona;

Подключиться к новой базе в PostgreSQL: \c kutubxona. Список баз: \l.

Создание таблицы

CREATE TABLE books (
  id       ...,                         -- первичный ключ (ниже)
  title    varchar(200) NOT NULL,
  author   varchar(100) NOT NULL,
  year     int,
  price    decimal(10, 2) DEFAULT 0,
  isbn     varchar(20) UNIQUE
);

Для каждого столбца: имя, тип и при необходимости ограничения.

Основные типы

Тип Что хранит Пример
int / bigint целое число 42
decimal(p, s) точное дробное число (для денег) 18000.50
varchar(n) текст до n символов 'Otabek'
text длинный текст статья
date дата '2026-11-14'
boolean да / нет true

В PostgreSQL дата и время — timestamp, дробное — numeric (decimal тоже работает).

Никогда не храните деньги во float: это приблизительное число, и 0.1 + 0.2 может дать 0.30000000000000004. Деньги — decimal.

Автоматический номер: первичный ключ

id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY

Старый способ serial тоже работает: id serial PRIMARY KEY.

Номер ставит сама база: 1, 2, 3… В INSERT указывать id не нужно.

Ограничения

Ограничение Значение
NOT NULL не может быть пустым
UNIQUE не должно повторяться
DEFAULT x если значение не указано — x
CHECK (условие) условие должно выполняться: CHECK (price >= 0)
PRIMARY KEY NOT NULL + UNIQUE, номер строки
REFERENCES внешний ключ

Внешний ключ

CREATE TABLE loans (
  id       bigint PRIMARY KEY ...,
  book_id  bigint NOT NULL,
  reader   varchar(100) NOT NULL,
  taken_at date NOT NULL DEFAULT CURRENT_DATE,
  FOREIGN KEY (book_id) REFERENCES books (id)
);

Правила:

  • родительская таблица (books) создаётся первой;
  • тип столбца внешнего ключа совпадает с типом родительского ключа (bigint ↔ bigint);
  • нельзя выдать несуществующую книгу и нельзя удалить выданную.

Посмотреть структуру таблицы

\d books — столбцы, типы, ключи. Список таблиц — \dt.

Упражнение

В свободном режиме создайте базу kutubxona и постройте в ней таблицы books и loans, как выше. Затем попробуйте добавить строку с несуществующим book_id и посмотрите, какую ошибку выдаст база. Пошаговая практика — этапы 2 и 4 раздела Практика как раз на эту тему.

Запомните

  • CREATE TABLE имя (столбец тип ограничения, …);
  • Деньги — decimal, дата — date, текст — varchar(n).
  • Внешний ключ и в MySQL, и в PostgreSQL пишите отдельной строкой FOREIGN KEY.
Предыдущий урокОконные функцииСледующий урокINSERT, UPDATE, DELETE

Содержание

  • Создание базы
  • Создание таблицы
  • Основные типы
  • Автоматический номер: первичный ключ
  • Ограничения
  • Внешний ключ
  • Посмотреть структуру таблицы
  • Упражнение
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab