Минимальный SQL: четыре команды для курса
В прошлом уроке мы рисовали чертёж данных на бумаге. Но чтобы дальше в курсе проверять чертежи руками — создавать таблицы и смотреть, как они себя ведут — нужен язык, на котором с базой данных разговаривают. Этот язык называется SQL (читается «эс-кью-эль» или «сиквел»). Полный SQL большой, но для нашего курса хватит ровно четырёх команд. Этот урок — про них и больше ни про что. Если ты уже знаешь SQL, можешь пробежать его по диагонали.
Все примеры ниже можно выполнить в любой бесплатной базе данных (например, SQLite или онлайн-песочнице SQL). Но даже просто прочитать и понять их — уже достаточно, чтобы идти дальше.
Как база хранит данные: таблица
Данные в базе лежат в таблицах. Таблица — это та же сетка из строк и столбцов, что мы рисовали на бумаге. Столбцы задают, какие у записи поля (например, имя и цена), а каждая строка — это одна запись. Прежде чем что-то записать, надо объяснить базе, какая будет таблица. Это делает первая команда.
Команда 1: CREATE TABLE — создать таблицу
CREATE TABLE создаёт новую таблицу. Мы перечисляем столбцы и для каждого говорим, какого типа в нём данные: целое число (INTEGER) или текст (TEXT).
CREATE TABLE products (
id INTEGER,
name TEXT,
price INTEGER
);
Читается так: «создай таблицу products с тремя столбцами — id (целое число), name (текст) и price (целое число)». После этой команды таблица существует, но она пустая — в ней ноль строк. Мы только начертили сетку, данных пока нет.
INTEGER и TEXT называются типами данных. Тип говорит базе, что ожидать в столбце: число, текст, дату и так далее. Для нашего курса хватит этих двух. Точка с запятой в конце команды означает «команда закончилась».
Команда 2: INSERT — добавить строки
INSERT добавляет в таблицу новые строки. Мы указываем таблицу и перечисляем значения в том же порядке, в каком шли столбцы при создании.
INSERT INTO products VALUES
(1, 'Чайник', 2000),
(2, 'Кружка', 500),
(3, 'Ложка', 100);
Читается так: «вставь в products три строки». Первая строка — id = 1, name = ‘Чайник’, price = 2000, и так далее. Обрати внимание: текст берётся в одинарные кавычки ('Чайник'), а числа — нет. Теперь в таблице три строки.
Команда 3: SELECT — посмотреть данные
SELECT читает данные из таблицы и показывает их. Это самая частая команда: ей мы проверяем, что внутри.
SELECT * FROM products;
Звёздочка * означает «все столбцы». Читается: «покажи все столбцы всех строк таблицы products». Вывод:
id | name | price
---+--------+------
1 | Чайник | 2000
2 | Кружка | 500
3 | Ложка | 100
Часто нам не нужны все строки — нужны только подходящие под условие. Для этого добавляют WHERE — «где». Например, покажем только товары дороже 400:
SELECT name, price FROM products WHERE price > 400;
Здесь мы попросили не все столбцы, а только name и price, и только те строки, где цена больше 400. Вывод:
name | price
-------+------
Чайник | 2000
Кружка | 500
Ложка с ценой 100 не подошла под условие и не попала в вывод. WHERE — это фильтр: остаются только строки, для которых условие истинно.
Команда 4: UPDATE … WHERE — изменить строки
UPDATE меняет значения в строках, которые уже есть. Самое важное здесь — WHERE: оно говорит, какие именно строки менять. Допустим, кружка подорожала до 600:
UPDATE products SET price = 600 WHERE id = 2;
Читается: «в таблице products поставь price = 600, но только там, где id = 2». Проверим результат через SELECT:
SELECT * FROM products;
Вывод:
id | name | price
---+--------+------
1 | Чайник | 2000
2 | Кружка | 600
3 | Ложка | 100
Цена кружки изменилась, остальные строки не тронуты — потому что WHERE id = 2 отобрало ровно одну строку.
WHERE в UPDATE — не украшение, а защита. Если его забыть и написать UPDATE products SET price = 600;, база поменяет цену во ВСЕХ строках сразу: и чайник, и кружка, и ложка станут по 600. База не переспросит и не предупредит — выполнит молча. Поэтому при UPDATE всегда мысленно проверяй: какие строки отберёт мой WHERE?
Это весь SQL, который нужен курсу
Четыре команды — и всё. CREATE TABLE чертит таблицу, INSERT наполняет её строками, SELECT показывает данные (с WHERE как фильтром), UPDATE ... WHERE меняет нужные строки. Этого достаточно, чтобы выполнять практику дальше в курсе: создавать таблицы по своим чертежам, наполнять их и проверять, как они себя ведут.
Не пытайся заучить синтаксис наизусть — к этим командам ты будешь возвращаться, и они запомнятся сами. Важно понять смысл каждой: что она делает с таблицей. Когда дальше встретится незнакомая часть SQL, мы будем разбирать её по месту.
SQL с нуля и подробноПопробуй сам
Открой любую бесплатную SQL-песочницу в браузере (поищи ‘online SQL sandbox’ или ‘SQLite online’). Своими руками повтори весь урок: командой CREATE TABLE создай таблицу products с тремя столбцами, командой INSERT добавь три-четыре своих товара, и командой SELECT * FROM products; посмотри, что получилось. Затем поэкспериментируй с WHERE: выбери только товары дороже какой-то цены. Наконец, измени цену одного товара через UPDATE ... WHERE и снова сделай SELECT, чтобы убедиться, что поменялась ровно одна строка. В конце нарочно выполни UPDATE без WHERE (на учебной таблице это безопасно) и посмотри SELECT — убедись, что изменились все строки. Это лучший способ навсегда запомнить, зачем нужен WHERE.