🗄️ Урок 1.2 — Что такое базы данных
Модуль 1: Введение в базы данных и SQL
🏛️ Что такое база данных?
Давай начнём с самого начала. Представь, что у тебя есть небольшая книжная библиотека. У тебя есть сто книг, и все они стоят на полках в случайном порядке. Когда приходит друг и просит книгу "Война и мир", ты можешь её найти — но для этого нужно перебрать все книги. Это занимает время.
Теперь представь, что у тебя есть картотека. Каждая книга записана на отдельной карточке: название, автор, год издания, номер полки. Карточки отсортированы по алфавиту. Теперь найти книгу — дело нескольких секунд. Ты просто идёшь к картотеке, находишь карточку, смотришь номер полки и берёшь книгу.
База данных — это та самая "картотека", только в компьютере. Это программа, которая хранит информацию в организованном виде и позволяет быстро её находить, добавлять, изменять и удалять.
Базы данных окружают нас повсюду. Когда ты заходишь в интернет-магазин и смотришь товары — они хранятся в базе данных. Когда ты постишь фото в Instagram — оно сохраняется в базу данных. Когда банк переводит деньги — информация о транзакции записывается в базу данных. Даже список контактов в твоём телефоне — это маленькая база данных.
Зачем нужна база данных, если можно просто хранить всё в файлах? Например, в Excel или в текстовом файле?
Можно. Excel — отличный инструмент. Но у него есть ограничения. Представь, что у тебя миллион строк данных. Excel зависнет или будет открываться 10 минут. А база данных обработает миллион строк за секунду. Или представь, что над одной базой работают сто человек одновременно. В Excel начнутся проблемы — кто-то перезапишет данные другого. База данных же умеет обрабатывать одновременные запросы правильно.
Короче: база данных — это программа для хранения и обработки информации, которая умеет делать это быстро, надёжно и с поддержкой множества пользователей.
Excel — это как записная книжка. База данных — это как картотека в большой библиотеке. И то и другое хранит информацию, но картотека удобнее, когда информации много и её нужно быстро находить.
📊 Реляционные базы данных: данные в таблицах
Самый популярный тип баз данных — реляционные (relational — "отношенческие", от слова relation — отношение, связь). Не пугайся умного слова. Реляционная база данных — это просто набор связанных между собой таблиц.
Ты уже видел такую таблицу в школе: Excel-таблица с колонками "Имя", "Фамилия", "Оценка" и строками учеников. Вот это и есть реляционная таблица. Только в базе данных таких таблиц может быть много, и они связаны друг с другом.
Давай посмотрим на пример. Вот таблица employees, которую мы создали в прошлом уроке:
SELECT * FROM employees; Результат будет выглядеть так (представь это в виде таблицы):
| id | name | position | salary | department | age |
|---|---|---|---|---|---|
| 1 | Иван Петров | Менеджер | 80000 | Продажи | 35 |
| 2 | Мария Иванова | Разработчик | 95000 | IT | 28 |
| 3 | Сергей Смирнов | Аналитик | 70000 | Аналитика | 42 |
| 4 | Анна Кузнецова | Дизайнер | 65000 | Дизайн | 31 |
| 5 | Дмитрий Новиков | Тестировщик | 55000 | IT | 26 |
| 6 | Елена Попова | HR-менеджер | 60000 | HR | 39 |
| 7 | Алексей Волков | Разработчик | 100000 | IT | 33 |
| 8 | Ольга Соколова | Бухгалтер | 58000 | Финансы | 45 |
| 9 | Николай Морозов | Менеджер | 75000 | Продажи | 29 |
| 10 | Татьяна Белова | Аналитик | 72000 | Аналитика | 36 |
Каждая строка — это один сотрудник. Каждый столбец — это характеристика сотрудника: имя, должность, зарплата, отдел, возраст.
В реляционной базе данные организованы именно так: таблицы, строки и столбцы. И между таблицами можно устанавливать связи. Например, у нас есть таблица employees (сотрудники) и таблица customers (клиенты). Если в будущем у нас появится таблица orders (заказы), мы сможем связать заказ с конкретным сотрудником и конкретным клиентом. Это и есть "реляционность".
🧱 Строки и столбцы: анатомия таблицы
Давай разберём таблицу по косточкам. Возьмём таблицу products:
SELECT * FROM products; Результат:
| id | name | price | category | quantity |
|---|---|---|---|---|
| 1 | Ноутбук | 75000.0 | Электроника | 15 |
| 2 | Смартфон | 45000.0 | Электроника | 30 |
| 3 | Наушники | 3500.0 | Аксессуары | 100 |
| 4 | Клавиатура | 2500.0 | Аксессуары | 50 |
| 5 | Монитор | 28000.0 | Электроника | 20 |
| 6 | Мышь | 1500.0 | Аксессуары | 80 |
| 7 | Принтер | 18000.0 | Офис | 10 |
| 8 | Стол офисный | 12000.0 | Офис | 25 |
| 9 | Стул | 8500.0 | Офис | 40 |
| 10 | Лампа настольная | 2200.0 | Аксессуары | 60 |
Разберём каждую часть:
Столбцы (columns) — это "поля" или "атрибуты". Они описывают, какая информация хранится. У нас 5 столбцов: id (уникальный номер товара), name (название), price (цена), category (категория), quantity (количество на складе). Каждый столбец имеет имя и тип данных. Тип данных говорит, что можно хранить в этом столбце: целые числа (INTEGER), текст (TEXT), дробные числа (REAL) и так далее.
Строки (rows) — это "записи" или "кортежи". Каждая строка — это один товар. Первая строка — ноутбук, вторая — смартфон и так далее.
Первичный ключ (primary key) — это столбец (или набор столбцов), который уникально идентифицирует каждую строку. В нашей таблице это столбец id. У каждого товара свой уникальный id. Двух товаров с id=1 быть не может. Это как номер паспорта — у каждого человека он уникален.
Ячейка (cell) — пересечение строки и столбца. Например, на пересечении строки "Ноутбук" и столбца "price" находится значение 75000.00.
Вот так выглядит любая таблица в реляционной базе данных. Строки + столбцы. Всё просто.
Строка = запись = один объект (один сотрудник, один товар, один клиент). Столбец = характеристика (имя, цена, возраст). А таблица = набор однотипных объектов. Всё остальное — производное от этого.
💬 Что такое SQL?
SQL (Structured Query Language) — это язык, на котором ты общаешься с реляционной базой данных. Дословно: "язык структурированных запросов".
Через SQL ты говоришь базе данных:
- "Покажи мне всё из таблицы employees" →
SELECT * FROM employees; - "Покажи только имена и зарплаты" →
SELECT name, salary FROM employees; - "Найди товары дешевле 5000 рублей" →
SELECT * FROM products WHERE price < 5000; - "Добавь нового сотрудника" →
INSERT INTO employees ... - "Увеличь зарплату всем разработчикам" →
UPDATE employees SET salary = ...
SQL — это не язык программирования типа Python или JavaScript. На нём нельзя написать игру или сделать сайт. Это узкоспециализированный язык только для работы с базами данных. Но он невероятно мощный в своей области.
Хорошая новость: SQL очень простой. В нём всего несколько десятков команд. Самые важные из них — SELECT, INSERT, UPDATE, DELETE, CREATE — можно выучить за один день. Остальное — нюансы и детали, которые приходят с практикой.
SQL не чувствителен к регистру. То есть select * from employees; и SELECT * FROM EMPLOYEES; — это одно и то же. Но по традиции (и просто для удобства чтения) команды пишут ЗАГЛАВНЫМИ БУКВАМИ, а названия таблиц и столбцов — маленькими. Будем придерживаться этого стиля в курсе.
-- Так пишем мы (принятый стиль)
SELECT name, salary FROM employees; -- Так тоже можно, но не принято
select name, salary from employees; -- И так можно, но тяжело читать
SELECT NAME, SALARY FROM EMPLOYEES; В SQL есть несколько групп команд. Давай посмотрим на основные:
| Группа | Что делает | Главные команды |
|---|---|---|
| DQL (Data Query Language) | Чтение данных (самое важное!) | SELECT |
| DML (Data Manipulation Language) | Изменение данных | INSERT, UPDATE, DELETE |
| DDL (Data Definition Language) | Создание и изменение структуры | CREATE, ALTER, DROP |
| DCL (Data Control Language) | Управление доступом | GRANT, REVOKE |
В этом курсе мы сосредоточимся на DQL и DML (чтение и изменение данных), а также немного на DDL (создание таблиц). DCL мы трогать не будем — это тема для администраторов баз данных.
Самая важная команда SQL — это SELECT. Она используется в 90% случаев. Если ты умеешь писать SELECT — ты умеешь SQL. Всё остальное — добавление, изменение, удаление — это приятное дополнение.
🗃️ Какие бывают СУБД
СУБД — это Система Управления Базами Данных. Программа, которая управляет базой данных. Помнишь пример с библиотекой? СУБД — это библиотекарь, который знает, где какая книга лежит, умеет быстро найти нужную, записать новую и исправить старую запись.
СУБД бывают разные. Вот три самых популярных:
1. SQLite — для обучения и небольших проектов
SQLite — это самая простая СУБД. Она не требует установки сервера. База данных — это просто файл на диске. Если ты скопируешь этот файл на другой компьютер — база данных будет работать. SQLite используется в браузерах, мобильных приложениях, встроенных системах. Для обучения она идеальна, потому что нет ничего лишнего.
Плюсы: простота, не нужно настраивать, база в одном файле, быстро работает
Минусы: не поддерживает много пользователей одновременно (но для нас это неважно)
2. PostgreSQL — мощная и профессиональная
PostgreSQL (или просто Postgres) — это полноценная серверная СУБД. Она используется в крупных проектах. Поддерживает огромное количество возможностей, работает с большими объёмами данных, поддерживает много одновременных пользователей. Многие компании выбирают PostgreSQL как основную базу данных.
Плюсы: мощная, бесплатная, много функций, надёжная
Минусы: сложнее в настройке, чем SQLite
3. MySQL — самая популярная
MySQL — ещё одна популярная серверная СУБД. Её часто используют вместе с PHP для сайтов. Например, WordPress работает на MySQL. MySQL проще, чем PostgreSQL, но тоже требует установки сервера.
Плюсы: очень популярна, много документации, простая
Минусы: некоторые функции слабее, чем в PostgreSQL
Что выбрать новичку?
SQLite. Однозначно. Это не "игрушечная" версия — это полноценная СУБД, которую используют в реальных проектах. Но она в сто раз проще в освоении. Когда ты освоишь SQL на SQLite, перейти на PostgreSQL или MySQL будет очень легко — синтаксис SQL почти везде одинаковый. Разница будет только в дополнительных функциях и настройках.
Вот пример: SQLite — это как учебный автомобиль с механической коробкой передач. Научившись на нём, ты сможешь сесть за руль любой другой машины. А PostgreSQL — это как навороченный спорткар. Мощно, круто, но учиться на нём с нуля — так себе идея.
Не пытайся учить несколько СУБД одновременно. SQLite, PostgreSQL и MySQL очень похожи, но в деталях различаются. Если ты начнёшь прыгать между ними — запутаешься. Выбери одну (рекомендую SQLite), изучи её, а потом легко перейдёшь на любую другую. SQL-запросы, которым мы учимся в этом курсе, работают во всех трёх СУБД без изменений в 95% случаев.
🔬 Смотрим на структуру базы данных
Теперь, когда мы понимаем теорию, давай посмотрим на реальную базу данных. Открой свою учебную базу (ту, что создали в уроке 1.1) и выполни эти команды. Они покажут нам структуру.
В SQLite есть удобная команда .schema, которая показывает, как создана таблица:
.schema employees Ты увидишь:
CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT, position TEXT, salary INTEGER, department TEXT, age INTEGER
); Здесь видно, какие столбцы есть в таблице и какого они типа:
| Столбец | Тип | Что хранит |
|---|---|---|
id | INTEGER | Уникальный номер сотрудника (целое число) |
name | TEXT | Имя сотрудника (текст) |
position | TEXT | Должность (текст) |
salary | INTEGER | Зарплата в рублях (целое число) |
department | TEXT | Название отдела (текст) |
age | INTEGER | Возраст сотрудника (целое число) |
Видишь закономерность? Для текста у нас TEXT, для чисел — INTEGER или REAL. В SQLite есть всего 5 типов данных:
- TEXT — текстовая строка (например, 'Иван', 'Москва', 'Продажи')
- INTEGER — целое число (1, 42, 100500)
- REAL — дробное число с плавающей точкой (3.14, 75000.00)
- BLOB — бинарные данные (изображения, файлы — редко используется)
- NULL — пустое значение (отсутствие данных)
В реальной работе ты будешь использовать в основном TEXT, INTEGER и REAL. NULL не нужно специально указывать — это просто "пустое значение", когда данные отсутствуют.
Теперь выполни эту команду, чтобы увидеть структуру всех таблиц сразу:
.schema SQLite покажет CREATE-команды для всех таблиц в базе.
📝 Практическое задание
Выполни эти задания прямо сейчас. Они помогут закрепить материал:
Задание 1: Выполни запрос SELECT * FROM customers; и посмотри на таблицу клиентов. Какие столбцы есть в этой таблице? Какие типы данных у каждого столбца?
Задание 2: Используй команду .schema customers (в локальном SQLite), чтобы проверить свои догадки о типах данных. Совпало?
Задание 3: Выполни запрос SELECT * FROM products; и посчитай, сколько строк в этой таблице. Сколько столбцов? Какие из них числовые, а какие текстовые?
Задание 4: Попробуй разные варианты написания одного и того же запроса (заглавные и строчные буквы): select * from employees;, SELECT * FROM EMPLOYEES;, Select * From Employees;. Все сработали?
Задание 5: Посмотри на таблицу products с помощью .schema products. Обрати внимание на тип столбца price — это REAL (дробное число). Почему, как думаешь? Потому что цена может быть нецелым числом, например 99.99 рублей.
Не переживай, если пока не всё понятно про типы данных или CREATE. Мы будем постоянно с этим работать. Сейчас главное — понять общую идею: таблицы, строки, столбцы и SQL как язык для общения с базой данных. Конкретные команды мы начнём изучать в модуле 2.
📝 Что мы узнали в этом уроке
Подведём итоги урока 1.2:
- База данных — это программа для хранения информации в организованном виде. Как картотека в библиотеке.
- Реляционная база данных — это набор таблиц, связанных между собой. Данные хранятся в строках и столбцах, как в Excel.
- Строка — это запись (один сотрудник, один товар). Столбец — это характеристика (имя, цена, возраст).
- Первичный ключ (PRIMARY KEY) — уникальный идентификатор каждой строки (обычно столбец id).
- SQL — язык для общения с базой данных. Команды: SELECT (чтение), INSERT (добавление), UPDATE (изменение), DELETE (удаление), CREATE (создание).
- Основные типы данных: TEXT (текст), INTEGER (целое число), REAL (дробное число), NULL (пусто).
- СУБД — программа, которая управляет базой данных. SQLite (простая, для обучения), PostgreSQL (мощная), MySQL (популярная).
- Команды SQL делятся на группы: DQL (SELECT), DML (INSERT/UPDATE/DELETE), DDL (CREATE/ALTER/DROP). DQL — самая важная.
- SQL не чувствителен к регистру, но принято писать команды ЗАГЛАВНЫМИ, а названия — маленькими.
- Команда
.schemaпоказывает структуру таблицы (её столбцы и типы).
Теперь у тебя есть прочная база. Ты знаешь, что такое базы данных, как они устроены и какой язык используется для работы с ними. В следующем модуле мы начнём писать настоящие SQL-запросы.
Увидимся в уроке 2.1! 👋
Урок 1.2: Что такое базы данных
9 вопросов