Урок 1. Базы данных и SQL — с чего начать
В этом уроке появится всё, что нужно для курса: понимание, как устроена база данных, и программа, в которой можно набирать запросы. Понадобится минут двадцать.
Таблицы, строки и столбцы
База данных — это упорядоченное хранилище данных. В реляционных базах (а SQL работает именно с ними) данные лежат в таблицах. Таблица похожа на лист Excel, только строже:
| id | name | category | price | qty |
|---|---|---|---|---|
| 1 | Ручка | Канцелярия | 2 | 150 |
| 2 | Тетрадь | Канцелярия | 3 | 300 |
| 3 | Рюкзак | Сумки | 85 | 12 |
- Столбец (поле) — одно свойство: название, цена, количество. У столбца есть имя и тип: в
priceлежат только числа, вname— текст. - Строка (запись) — один объект целиком: один товар, один покупатель, один заказ.
- Ключ — столбец, по которому строку можно найти однозначно. Здесь это
id: у каждого товара свой номер.
В базе обычно несколько таблиц: товары, покупатели, заказы. Таблицы связаны номерами: в заказе записан не весь покупатель, а только его id. Так данные не повторяются, а изменить их нужно в одном месте.
СУБД и SQL
Сама база — это файлы на диске. Читает и меняет их программа — СУБД (система управления базами данных). Человек или другая программа отправляет СУБД запрос на языке SQL, СУБД выполняет его и возвращает ответ — чаще всего таблицу.
SQL — язык описательный: в запросе сказано, что нужно получить, а как искать, решает СУБД. Запрос «названия и цены товаров дешевле 10 рублей, по возрастанию цены» выглядит так:
SELECT name, price
FROM products
WHERE price < 10
ORDER BY price;Почти все запросы относятся к одной из групп:
- создать и изменить таблицы —
CREATE TABLE,ALTER TABLE,DROP TABLE; - добавить, изменить, удалить строки —
INSERT,UPDATE,DELETE; - выбрать данные —
SELECT, самая частая команда; - управлять доступом и транзакциями —
GRANT,BEGIN,COMMIT.
SQLite, MySQL и PostgreSQL
SQLite — не сервер, а библиотека: вся база лежит в одном файле (например, shop.db), а программа работает с ним напрямую. Нет ни установки сервера, ни пользователей с паролями. Файл можно скопировать на флешку и открыть на другом компьютере. SQLite хранит данные в телефонах, браузерах и многих программах.
MySQL, MariaDB и PostgreSQL — серверы. Они работают постоянно, принимают подключения по сети, обслуживают сотни пользователей одновременно и проверяют права доступа. На них работают сайты и большие системы.
Язык у всех один, отличия — в деталях: типах данных, некоторых функциях, служебных командах. Начинать удобнее всего с SQLite: то, что выучено на ней, почти целиком работает и на серверных СУБД.
Где пробовать
Выберите, где удобнее набирать запросы: в командной строке, в программе с окнами и мышью или сразу в своём коде.
Командная строкапрограмма sqlite3
Это командная строка SQLite: небольшая программа без установки.
- Windows — на странице загрузки sqlite.org в разделе «Precompiled Binaries for Windows» скачайте архив, имя которого начинается с
sqlite-tools-win. Распакуйте его, например, в папкуC:\sqlite. - Linux (Ubuntu, Debian, Mint) —
sudo apt install sqlite3. - macOS — программа уже есть, откройте «Терминал».
Запустите её с именем файла базы. Если файла нет, SQLite создаст его, как только в базе что-нибудь появится:
cd C:\sqlite
sqlite3 shop.dbВ Linux и macOS — та же команда sqlite3 shop.db в терминале, в PowerShell — .\sqlite3 shop.db. Приглашение сменится на sqlite>: программа ждёт запрос.
Если открыть sqlite3.exe двойным щелчком, база будет временной, в памяти: всё созданное пропадёт при выходе. Чтобы работать с файлом, наберите .open shop.db.
Окна и мышьDB Browser for SQLite
Бесплатная программа с окнами для Windows, macOS и Linux, скачивается с sqlitebrowser.org (в Ubuntu и Debian — пакет sqlitebrowser). Создайте базу кнопкой «New Database», перейдите на вкладку «Execute SQL», наберите запрос и запустите его клавишей F5 или Ctrl+Enter. Результат появится под запросом.
DB Browser не сохраняет изменения в файл сам: после INSERT, UPDATE и CREATE TABLE нажмите «Write Changes» (Ctrl+S). Пока изменения не записаны, другие программы не смогут менять эту базу.
Из своей программыPython или PHP
Первый запрос
Наберите в sqlite3 (или на вкладке «Execute SQL»):
SELECT 2 + 2;
SELECT 'Привет, SQL!' AS greeting;| 2 + 2 |
|---|
| 4 |
| greeting |
|---|
| Привет, SQL! |
SELECT умеет просто вычислять выражения, а AS даёт столбцу результата имя. В уроках результат показан таблицей. В sqlite3 такой вид включают две служебные команды — они начинаются с точки и пишутся без точки с запятой:
.headers on
.mode boxЕщё несколько полезных команд sqlite3: .tables — список таблиц, .schema — как они созданы, .quit — выход. Это команды самой программы, а не SQL: в MySQL и PostgreSQL их нет.
Как пишется запрос
- Запрос заканчивается точкой с запятой. Если её забыть,
sqlite3покажет приглашение...>и будет ждать продолжения — наберите;и нажмите Enter. - Регистр ключевых слов не важен:
selectиSELECT— одно и то же. Принято писать их заглавными, а имена таблиц и столбцов — строчными латинскими буквами. - Текст берут в одинарные кавычки:
'Минск'. Двойные кавычки — для имён таблиц и столбцов. - Длинный запрос можно разбить на строки как угодно — важна только точка с запятой в конце.
- Комментарий — от
--до конца строки или между/*и*/.
-- цены всех товаров
SELECT name, price /* только два столбца */
FROM products;Таблицы products пока нет — этот запрос заработает после второго и третьего уроков.
Коротко
- База данных хранит данные в таблицах: столбец — свойство с типом, строка — один объект.
- СУБД выполняет запросы SQL; самые известные бесплатные — SQLite, MySQL/MariaDB, PostgreSQL.
- SQLite — база в одном файле, без сервера: лучший вариант для начала.
- Пробовать запросы — в
sqlite3 shop.dbили в DB Browser for SQLite (не забывайте «Write Changes»). - Запрос заканчивается
;, текст — в одинарных кавычках, ключевые слова — в любом регистре.