Первая таблица: CREATE, INSERT, SELECT
Проходим базовый цикл работы с данными: создать таблицу, наполнить её и прочитать.
Таблица — это набор строк с одинаковыми столбцами; столбцы задают, какие данные хранятся, а строки — сами записи.
CREATE TABLE — описываем структуру
Любые данные в реляционной базе живут в таблицах, поэтому первый шаг — создать таблицу и описать её столбцы. Сделаем таблицу книг: у каждой книги есть номер, название, автор, год и число страниц.
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT,
year INTEGER,
pages INTEGER
);
Разберём по частям. id INTEGER PRIMARY KEY — числовой первичный ключ, который однозначно определяет строку (и заодно автоматически нумеруется). title TEXT NOT NULL — название обязательно, пустым его оставить нельзя. Остальные столбцы могут быть пустыми (NULL). Этот блок сам по себе ничего не выводит — он просто создаёт структуру.
INSERT — добавляем строки
Теперь наполним таблицу. Команда INSERT добавляет строки. Перечисляем столбцы, в которые кладём данные, и затем значения. id не указываем — он проставится сам.
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT,
year INTEGER,
pages INTEGER
);
INSERT INTO books (title, author, year, pages) VALUES
('Война и мир', 'Толстой', 1869, 1300),
('Преступление и наказание', 'Достоевский', 1866, 670),
('Мастер и Маргарита', 'Булгаков', 1967, 480);
SELECT * FROM books;
Вывод:
1|Война и мир|Толстой|1869|1300 2|Преступление и наказание|Достоевский|1866|670 3|Мастер и Маргарита|Булгаков|1967|480
За один INSERT мы добавили сразу три строки, разделив их запятыми. Столбец id заполнился значениями 1, 2, 3 автоматически.
SELECT — читаем данные
SELECT достаёт данные из таблицы. Звёздочка * означает «все столбцы». Чаще полезнее перечислить нужные столбцы и отфильтровать строки через WHERE. Найдём книги короче 700 страниц и отсортируем по году:
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT,
year INTEGER,
pages INTEGER
);
INSERT INTO books (title, author, year, pages) VALUES
('Война и мир', 'Толстой', 1869, 1300),
('Преступление и наказание', 'Достоевский', 1866, 670),
('Мастер и Маргарита', 'Булгаков', 1967, 480);
SELECT title, year
FROM books
WHERE pages < 700
ORDER BY year;
Вывод:
Преступление и наказание|1866 Мастер и Маргарита|1967
Заметьте структуру запроса: SELECT (какие столбцы) → FROM (откуда) → WHERE (какие строки) → ORDER BY (в каком порядке). Этот порядок частей мы будем встречать постоянно.
Почему примеры самодостаточны
Каждый исполняемый блок в этом курсе начинается с CREATE TABLE и INSERT, а уже потом идёт SELECT. Так блок можно запустить с чистого листа и получить предсказуемый результат, ничего не настраивая заранее. Меняйте условия в WHERE и колонки в SELECT — это лучший способ закрепить материал.
Итог
CREATE TABLEописывает структуру: имена и типы столбцов, первичный ключ, ограничения.INSERT INTO ... VALUESдобавляет строки; за раз можно вставить несколько.SELECT ... FROM ... WHERE ... ORDER BYчитает и фильтрует данные в заданном порядке.