Глиф Учебники

Урок 1. Базы данных и SQL — с чего начать

Курс «SQL» · урок 1 из 10 · 5 минут чтения

В этом уроке появится всё, что нужно для курса: понимание, как устроена база данных, и программа, в которой можно набирать запросы. Понадобится минут двадцать.

Таблицы, строки и столбцы

База данных — это упорядоченное хранилище данных. В реляционных базах (а SQL работает именно с ними) данные лежат в таблицах. Таблица похожа на лист Excel, только строже:

idnamecategorypriceqty
1РучкаКанцелярия2150
2ТетрадьКанцелярия3300
3РюкзакСумки8512
id name category price qty 1 Ручка Канцелярия 2 150 2 Тетрадь Канцелярия 3 300 3 Рюкзак Сумки 85 12 ключ свой номер столбец одно свойство строка один товар целиком таблица products число текст текст число число ← тип столбца
В таблице products столбец — одно свойство со своим типом (в price только числа), строка — один товар целиком, а ключ id даёт каждой строке свой номер.

В базе обычно несколько таблиц: товары, покупатели, заказы. Таблицы связаны номерами: в заказе записан не весь покупатель, а только его id. Так данные не повторяются, а изменить их нужно в одном месте.

СУБД и SQL

Сама база — это файлы на диске. Читает и меняет их программа — СУБД (система управления базами данных). Человек или другая программа отправляет СУБД запрос на языке SQL, СУБД выполняет его и возвращает ответ — чаще всего таблицу.

SQL — язык описательный: в запросе сказано, что нужно получить, а как искать, решает СУБД. Запрос «названия и цены товаров дешевле 10 рублей, по возрастанию цены» выглядит так:

SQL
SELECT name, price
FROM products
WHERE price < 10
ORDER BY price;
человек или программа SELECT name, price FROM products WHERE price < 10 ORDER BY price; запрос СУБД сама решает, как искать SQLite, MySQL, PostgreSQL ответ name price Ручка 2 Тетрадь 3 читает и меняет база — файлы на диске
Запрос SQL говорит СУБД, что нужно получить, а как искать, она решает сама: читает файлы базы на диске и возвращает ответ — таблицу.

Почти все запросы относятся к одной из групп:

SQLite, MySQL и PostgreSQL

SQLite — не сервер, а библиотека: вся база лежит в одном файле (например, shop.db), а программа работает с ним напрямую. Нет ни установки сервера, ни пользователей с паролями. Файл можно скопировать на флешку и открыть на другом компьютере. SQLite хранит данные в телефонах, браузерах и многих программах.

MySQL, MariaDB и PostgreSQL — серверы. Они работают постоянно, принимают подключения по сети, обслуживают сотни пользователей одновременно и проверяют права доступа. На них работают сайты и большие системы.

SQLite библиотека, а не сервер программа SQLite shop.db вся база MySQL, PostgreSQL сервер — работает постоянно сайт программа человек сервер СУБД логин и пароль по сети, сотни пользователей сразу
SQLite работает внутри самой программы и хранит всю базу в одном файле shop.db, а сервер MySQL или 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

В Python модуль sqlite3 встроен, ничего ставить не нужно — подробнее в теме Python. В PHP есть расширения для всех трёх СУБД — тема PHP.

Первый запрос

Наберите в sqlite3 (или на вкладке «Execute SQL»):

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 их нет.

Как пишется запрос

SQL
-- цены всех товаров
SELECT name, price   /* только два столбца */
FROM products;

Таблицы products пока нет — этот запрос заработает после второго и третьего уроков.

Коротко

Проверьте себя

1. Что такое строка таблицы?
2. Чем SQLite отличается от MySQL и PostgreSQL?
3. Вы набрали запрос в sqlite3 и нажали Enter, а появилось ...>. Что случилось?
4. Как правильно записать текст в запросе?