$ sudo teach IT

🗄️ Урок 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Мария ИвановаРазработчик95000IT28
3Сергей СмирновАналитик70000Аналитика42
4Анна КузнецоваДизайнер65000Дизайн31
5Дмитрий НовиковТестировщик55000IT26
6Елена ПоповаHR-менеджер60000HR39
7Алексей ВолковРазработчик100000IT33
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 вопросов