Зачем и кому это нужно.
Этот вопрос, который я задал себе в первую очередь. Есть прекрасное руководство по 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, как и всех реляционных БД - в связях . Об этом будет следующая статья.