Зачем и кому это нужно

Этот вопрос, который я задал себе в первую очередь. Есть прекрасное руководство по SQL от W3C - моё самое любимое. Есть куча полезных статей на Хабре. Кому нужна ещё одна статья по SQL? В первую очередь - мне самому. Я написал очень много кода на SQL, PL/SQL. Пришло время трансформирвоать мои навыки в простую и удобную напоминалку для себя самого и для всех, кто сочтёт этот текст полезным.

Немного "воды"

Аббревиатура SQL в переводе с английского звучит как язык структурированных запросов. Это язык программирования, созданный для работы с реляционными базами данных. Первый стандарт SQL появился в 1987 году, после чего дописывался восемь раз. При этом основа языка осталась практически неизменной с 1992 года. В настоящее время SQL продолжает оставаться одним из мощнейших инструментов для манипулирования реляционными данными и создания сложных отчётов. Постараюсь все достоинства этого языка на простых и понятных примерах.

Материальная часть

Для того, чтобы изучить SQL, нужно установить софт для управления базой данных (БД) или получить доступ к работающему серверу БД (MySQL, Postgresql, Oracle, MS SQL - даже MS Access подойдёт). Один "маленький" нюанс - БД должна быть реляционной (нереляционные БД - это совершенно другая история). Все примеры, описанные в этой статье, я тестирую на SQLite. Это простой, но мощный движок для управления БД с открытым исходным кодом. Он активно применяется во всём мире для самых разных целей. Я, например, очень часто использую его в качестве локального хранилища данных для UNIT тестов в тяжёлых проектах. Благодаря своей бесплатности и компактности он также идеально подойдёт для изучения SQL, потому что не нужно тратить время на установку и конфигурирование сервера БД, вместо этого можно сразу написать свой первый SQL запрос.

А теперь немного теории

В стандарте SQL предусмотрено четыре группы операторов (фактически это подмножества языка), у каждой из которых своя роль.

  • DDL - язык описания данных. С его помощью создаются и модифицируются поля, таблицы и другие объекты БД;

  • DML - язык манипулирования данными. Он предназначен для того, чтобы добавлять, удалять, изменять данные и делать выборки из БД;

  • DCL - набор инструкций для администрирования доступа к данным;

  • TCL - Transaction Control Language - набор инструкций для управления транзакциями.

Тренировки (от простого - к сложному)

Создаю таблицу, в которой будет храниться информация о товарах.

Поле

Тип данных

Идентификатор товара

Целое число

Наименование товара

Текст

Цена за единицу товара

Десятичное число

Единица измерения количества товара

Текст

На языке DDL таблица, описанная выше, превращается в структуру:

CREATE TABLE "product" (
	"product_id"	INTEGER NOT NULL UNIQUE,
	"product_name"	TEXT NOT NULL,
	"product_price"	REAL NOT NULL,
	"product_unit_name"	TEXT NOT NULL,
	PRIMARY KEY("product_id" AUTOINCREMENT)
);

Поле product_id определяю в качестве первичного ключа, т.е. по этому полю можно однозначно идентифицировать каждую запись в таблице product . Затем заполняю созданную таблицу тестовыми данными (это DML).

INSERT INTO "product" ("product_name", "product_price", "product_unit_name") VALUES ('Хлеб', 87, 'буханка');
INSERT INTO "product" ("product_name", "product_price", "product_unit_name") VALUES ('Молоко', 120, 'литр');
INSERT INTO "product" ("product_name", "product_price", "product_unit_name") VALUES ('Сахар', 53, 'кг');
INSERT INTO "product" ("product_name", "product_price", "product_unit_name") VALUES ('Рис', 94, 'кг');

И, наконец, делаю первый select (это тоже DML).:

SELECT * 
  FROM product;

В результате поучаю:

Ну вот он - первый SELECT) Сам по себе он не очень полезен. Но вся сила и мощь SQL, как и всех реляционных БД - в связях . Об этом будет следующая статья.

Комментарии (6)


  1. Elfet
    27.01.2023 00:36
    +1

    Отличная статья. Была первой в предложенной мне при заходе на хабр.


  1. PuerteMuerte
    27.01.2023 01:29
    +2

    Мне тоже очень понравилась. С нетерпением жду продолжения. Когда в этом цикле выйдет статья про оператор DELETE?


  1. Ustas4
    27.01.2023 03:01

    А что это за клиент-приложение на снимке?


    1. vgorbatikov Автор
      27.01.2023 09:52

  1. alexhott
    27.01.2023 09:19

    И у автора рейтинг больше чем у меня, habr уже не тот


  1. HiLander
    27.01.2023 11:17

    Для шпаргалки слишком много воды. И если уж решили напилить шпаргалку то сделайте что-то типа таблички:

    Оператор / Что делает / Особенности конкретной реализации в диалекте/Примеры

    Поможет, например, махровому MSSQL-щику быстро перепрыгнуть на оракл (понятно что быстро не получится, но сэкономит времени немало).

    Вот это будет куда полезнее нежели еще одно руководство для "Чайников у которых не закипело"...