- Объяснять, что такое база данных и СУБД
- Различать строки, столбцы и ячейки таблицы
- Понимать роль первичного и внешнего ключей
- Выполнить свой первый SQL-запрос
В школе 1000 учеников, десятки предметов и тысячи оценок. Хранить всё это в тетради или даже в одном файле Excel со временем становится мучением: данные дублируются, появляются ошибки, а поиск нужного занимает часы. Банки, интернет-магазины, соцсети и электронные дневники решают эту задачу с помощью базы данных. А для общения с ней существует особый язык — SQL.
Что такое база данных?
База данных — это упорядоченный набор данных, в котором легко искать, изменять и защищать информацию. С файлами базы мы не работаем напрямую — за нас это делает специальная программа. Она хранит данные на диске, выполняет наши запросы, позволяет сотням пользователей работать одновременно и не пускает тех, у кого нет прав доступа.
Программа, которая создаёт и хранит базы данных и выполняет отправленные к ним запросы. Примеры: SQLite, MySQL, PostgreSQL, Microsoft SQL Server.
В этом курсе мы изучаем реляционные базы данных. В них все данные хранятся в таблицах, а таблицы связаны друг с другом. Эту идею в 1970 году предложил исследователь IBM Эдгар Кодд, и сегодня это самый распространённый подход.
Таблица: строки и столбцы
Таблица хранит сведения об объектах одного вида: учениках, курсах, товарах. Все примеры этого курса работают с одной учебной базой данных. Посмотрим на таблицу courses (курсы). Выполни запрос ниже: SELECT * означает «взять все столбцы», FROM courses — «из таблицы courses», а ORDER BY id — «упорядочить по id».
SELECT *
FROM courses
ORDER BY id;▸ Ожидаемый результат
id | title | subject | teacher | credits 1 | Algebra | Math | Ramin Səfərov | 4 2 | Geometry | Math | Ramin Səfərov | 3 3 | Mechanics | Physics | Ülviyyə Axundova | 4 4 | Organic Chemistry | Chemistry | Samir Hacıyev | 3 5 | World History | History | Nərmin Vəliyeva | 2 6 | Python Basics | Informatics | Elnur Qasımov | 3 7 | English B1 | English | Sara Mitchell | 2
- Столбец (поле) — одно свойство:
title(название),teacher(учитель),credits(кредиты). У каждого столбца есть имя и тип данных: текст, целое число, дробное число, дата. - Строка (запись) — вся информация об одном объекте. Например, строка 3 описывает курс Mechanics.
- Ячейка — одно значение на пересечении строки и столбца, например число кредитов курса Mechanics: 4.
- У строк в таблице нет собственного порядка. Если результат нужен в определённом порядке, пишем
ORDER BY.
Ключи: как связаны таблицы
Столбец, который однозначно определяет каждую строку. Его значения не могут повторяться или быть пустыми. В нашей учебной базе это столбец id в каждой таблице.
Столбец, который ссылается на первичный ключ другой таблицы. Например, enrollments.student_id ссылается на students.id и показывает, к какому ученику относится запись о зачислении.
В таблице enrollments (зачисления на курсы) нет имён учеников — только их номера. Запрос ниже показывает курсы ученицы под номером 1, то есть Айсель: course_id 1 — это Algebra, а 6 — Python Basics. Так имя и город ученика хранятся только в одном месте — в таблице students — и нигде не повторяются.
SELECT *
FROM enrollments
WHERE student_id = 1
ORDER BY id;▸ Ожидаемый результат
id | student_id | course_id | score | enrolled_on 1 | 1 | 1 | 92 | 2025-09-15 2 | 1 | 6 | 88 | 2025-09-15
WHERE оставляет только строки, подходящие под условие, — подробно мы разберём его в следующих уроках.| Таблица | Что хранит | Строк |
|---|---|---|
| students | ученики: имя, фамилия, возраст, класс, город, e-mail | 12 |
| courses | курсы: название, предмет, учитель, кредиты | 7 |
| enrollments | какой ученик записан на какой курс и его балл | 20 |
| products | товары: название, категория, цена, остаток на складе | 10 |
| customers | покупатели: имя, город, страна, дата регистрации | 7 |
| orders | заказы: кто, какой товар, сколько штук и когда | 12 |
SQL и его диалекты
SQL (Structured Query Language — язык структурированных запросов) — стандартный язык общения с базами данных. Он декларативный: ты описываешь, что хочешь получить, а не как это найти, и СУБД сама выбирает лучший способ. Ключевые слова SQL не чувствительны к регистру, но их принято писать заглавными буквами. Каждая команда обычно заканчивается точкой с запятой (;).
SQL — это стандарт, но каждая СУБД добавила к нему свои расширения. Такие варианты называют диалектами. Основные команды (SELECT, WHERE, JOIN и другие) везде одинаковы, различаются мелкие детали. В этом курсе примеры выполняются в SQLite, а важные различия мы будем отмечать по ходу.
| СУБД | Где используется | Особенность |
|---|---|---|
| SQLite | мобильные приложения, браузеры, небольшие программы | не нужен сервер: вся база — один файл |
| MySQL | веб-сайты и веб-приложения | открытый код, очень популярна |
| PostgreSQL | сложные приложения, аналитика | открытый код, очень близка к стандарту SQL |
| SQL Server | корпоративные системы на технологиях Microsoft | продукт Microsoft, её диалект называется T-SQL |
Выведи все столбцы таблицы customers (покупатели) и упорядочи строки по id.
-- show every column of the customers table, sorted by id▸ Ожидаемый результат
id | name | city | country | joined_on 1 | Anar Mustafayev | Bakı | Azerbaijan | 2024-01-10 2 | Lalə Əhmədova | Gəncə | Azerbaijan | 2024-03-22 3 | Emre Yılmaz | İstanbul | Türkiye | 2024-05-05 4 | Olga Ivanova | Moscow | Russia | 2024-06-18 5 | John Carter | London | United Kingdom | 2024-08-30 6 | Zəhra Hüseynli | Bakı | Azerbaijan | 2025-02-14 7 | Mehmet Kaya | Ankara | Türkiye | 2025-04-01
Выведи из enrollments все зачисления на курс номер 3 (Mechanics) и упорядочи их по id.
SELECT *
FROM enrollments
-- keep only course 3 and sort by id▸ Ожидаемый результат
id | student_id | course_id | score | enrolled_on 4 | 2 | 3 | 81 | 2025-09-16 7 | 4 | 3 | 68 | 2025-09-18 12 | 6 | 3 | 77 | 2025-09-20 19 | 11 | 3 | 94 | 2025-09-23
Главное
- База данных — упорядоченный набор данных, которым управляет СУБД.
- В реляционной базе данные хранятся в таблицах: строка — один объект, столбец — одно свойство.
- Первичный ключ однозначно определяет строку, а внешний ключ ссылается на строку другой таблицы.
- SQL — декларативный язык: ты говоришь, что нужно, а СУБД решает, как это получить.
- SQLite, MySQL, PostgreSQL и SQL Server понимают один и тот же базовый SQL и различаются лишь в деталях.
Проверь себя
Вопросов: 10. Каждый правильный ответ приносит XP.