Что такое SQL и СУБД

Что такое SQL и СУБД

SQL - это язык, на котором ты задаёшь вопросы базе данных. Типа: «покажи всех пользователей» или «сколько заказов было вчера». База данных в ответ либо отдаёт данные, либо молча смотрит на тебя и говорит: «где WHERE?!». Подключение из Go - через database/sql, из PHP - через PDO.

Четыре свойства транзакций ACID: атомарность, согласованность, изоляция, надёжность

Эти четыре буквы - про транзакции: гарантии, которые база даёт твоим данным. Разберём их подробно в уроке про транзакции и ACID.

Что такое СУБД

СУБД (система управления базами данных) - это программа, которая хранит данные и умеет:

  • сохранять
  • искать
  • обновлять
  • защищать от хаоса

Самые популярные: PostgreSQL, MySQL/MariaDB, SQLite.

SQL - язык. PostgreSQL и MySQL - СУБД. Они похожи, но нюансы есть (как разные «диалекты»).

SQL как декларативный язык

SQL - это декларативный язык. Это значит: ты говоришь ЧТО ты хочешь, а не КАК это получить.

Например:

SELECT name, email FROM users WHERE age > 18;

Ты просто сказал(а): «Дай мне имена и email людей старше 18». БД сама решает, как это сделать быстрее всего. Что именно она решила, можно подсмотреть - для этого есть EXPLAIN. Ты не пишешь циклы, не индексируешь пальцем память - база разберётся.

Это отличает SQL от Go или PHP, где ты пишешь: «шаг 1, шаг 2, цикл, условие». SQL проще, но менее гибкий.

Типы SQL команд

SQL делится на три группы команд:

DDL (Data Definition Language) - структура. Здесь же задаются правила целостности, про них - урок об ограничениях и ключах:

CREATE TABLE users (id INT, name VARCHAR(100));
ALTER TABLE users ADD COLUMN email VARCHAR(100);
DROP TABLE users;

DML (Data Manipulation Language) - данные:

INSERT INTO users (id, name) VALUES (1, 'Alice');
UPDATE users SET name = 'Bob' WHERE id = 1;
DELETE FROM users WHERE id = 1;

DQL (Data Query Language) - читаем. Этой одной команде посвящён следующий урок про SELECT:

SELECT * FROM users;

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

  • Таблица - набор строк одного типа (например, users)
  • Строка - один объект (один пользователь)
  • Столбец - свойство (имя, email, created_at)

PostgreSQL vs SQLite

На обучение рекомендуем PostgreSQL потому что:

  • Максимально близок к SQL стандарту (знания переносятся на любую БД)
  • Отличная документация
  • На проде обычно именно он
  • Полноценное шифрование и безопасность из коробки

SQLite выбирай если:

  • Нужен быстрый эксперимент без установки
  • Работаешь на мобильном или встроенном устройстве
  • БД небольшая (файл на диске)

Проверка: работает ли БД

Если ты установил(а) PostgreSQL, можешь проверить, работает ли сервис:

# Linux/Mac
sudo systemctl status postgresql

# Или попробуй подключиться к БД
psql -U postgres

Если всё окей, должен вывести приглашение типа:

postgres=#

Выход: \q и Enter.

Для SQLite проще: скачиваешь бинарник, и работает везде. Проверка:

sqlite3 :memory:
sqlite>

Мини-задание

  • Выбери СУБД для обучения: PostgreSQL или SQLite
  • Установи выбранную СУБД (или проверь, есть ли уже)
  • Подключись к БД и убедись, что работает
  • Узнай, как посмотреть список таблиц: для PostgreSQL - \dt, для SQLite - .tables

Зарегистрируйтесь бесплатно, чтобы пройти квиз, решить задание с автопроверкой и вести прогресс.