Большинство информационных систем сейчас строятся на реляционных базах данных. Такие базы состоят из связанных между собой таблиц, содержащих определенные строки и столбцы. Чтобы находить, обрабатывать и изменять конкретные ячейки в этих таблицах, используются SQL запросы.
Где применяется SQL
Хоть SQL и называют языком программирования, непосредственно программу на нем написать нельзя. Это скорее вспомогательный инструмент. Без него не обходятся backend web разработка, CRM системы, аналитические модули и бизнес-приложения. Знание SQL пригодится:
-
Разработчикам, для проектирования и управления БД. Если на сайте принимаются и обрабатываются заявки или заказы от пользователей, это обязательно происходит через базу данных и SQL команды.
-
Тестировщикам, чтобы проверять код, связанный с SQL обработкой информации.
-
Аналитикам и маркетологам, которым необходимо быстро обрабатывать большие массивы данных.
Принцип работы запросов
Чтобы пользователь получил от системы необходимую информацию по интересующему его запросу, в ход пускается несколько элементов общей цепи.
-
Клиент - или терминал для ввода запроса. Например, поисковая строка в интерфейсе программы или на странице сайта.
-
Система управления базами данных (СУБД) - программное обеспечение для работы с информацией, содержащейся в базе в виде таблиц. СУБД принимает обращение пользователя, обрабатывает его и выдает ответ
-
База данных - непосредственно хранилище таблиц, которым манипулирует система управления.
Как организована база данных
Из структуры, описанной ранее, понятно, что главный элемент БД - таблицы. По сути, знакомый всем Excel является базой данных. Информация в нем хранится в виде строк, столбцов и ячеек, а функция ”Сводные таблицы” позволяет объединять несколько источников данных в единую систему.
Для работы с реляционными базами через SQL стоит прояснить основные понятия.
-
Отношение.
Это, собственно таблица, в которой информация разбита на столбцы и строки.
-
Атрибут.
Отдельный столбец, представляющий собой определенную характеристику объекта - категорию, размер, цену и т. д.
-
Домен.
Возможные значения атрибутов и их ограничения. Например, только числа или только буквы. При этом для буквенных доменов можно задать правила, что они не должны начинаться с символов ы, ь, ъ.
-
Кортеж.
Это строка таблицы, то есть сущность, которую описывают атрибуты. У каждой строки обязательно есть свой порядковый номер.
-
Значение.
Конкретный параметр в базе. То же, что и ячейка в Excel.
-
Ключ.
Определяющий элемент для реляционных БД, служащий для связки различных таблиц в базе. По сути, ключ - это индивидуальный номер строки (кортежа), выступающий ее идентификатором.
В РБД есть три вида ключей.
-
первичный - непосредственный определитель строки, ее id;
-
потенциальный - дополнительный идентификатор;
-
внешний - используется в качестве гиперссылки на исходные данные. Внешний ключ всегда повторяет первичный ключ в связной таблице.
Разновидности СУБД
Язык SQL работает в рамках системы управления базами данных. Сейчас пользователям доступны десятки СУБД, поддерживающих SQL. Все они схожи по функционалу. Вот основные задачи таких программ:
-
создание и редактирование таблиц;
-
управление оперативной памятью;
-
перенос и изменение данных;
-
определение прав доступа к данным;
-
поиск значений по запросу.
Среди разработчиков наиболее популярны следующие СУБД.
-
MySQL.
Программное обеспечение, которое используют системы управления сайтами (CMS) и различные web-приложения. MySQL бесплатна и проста в освоении, за что и полюбилась разработчикам. Кроме того, система отличается функциональностью и безопасностью.
-
PostgreSQL
СУБД, построенная на объектно-ориентированном принципе. Она дает возможность работать одновременно с большим количеством данных, поэтому используется в основном на крупных проектах. PostgreSQL позволяет создавать собственные плагины и персонализировать параметры, а также поддерживает подзапросы. При этом система заметно сложнее в применении, чем ее аналоги.
-
Oracle Database.
Первопроходец среди СУБД. Первая версия программы разработана еще в 1977 году. Среди преимуществ Oracle - кроссплатформенность, гибкость, высокая производительность и объектно-реляционная направленность.
-
SQlite.
Упрощенная СУБД, предназначенная для работы с небольшими сайтами и приложениями. Отличается высокой скоростью обработки данных. Из минусов - отсутствие возможности разделить права доступа к информации и ограниченный функционал программы.
Основные операторы SQL
Разработчик манипулирует данными в базе с помощью специальных команд - операторов.
Приведем несложный пример - поиск сотрудника по ФИО в общей базе компании. Чтобы найти строку с упоминанием Иванова Петра Михайловича, нужно ввести в СУБД такой запрос:
SELECT * FROM employee WHERE name = Иванов Петр Михайлович
Операторы в SQL базируются на простых английских словах и будут понятны пользователю с начальным уровнем языка.
Операторы могут комбинироваться. Допустим, нам нужно найти в базе всех сотрудников отдела продаж из Москвы, при этом отсортировать их по алфавиту. Для этого создаем команду:
SELECT * FROM employee WHERE department = ‘sales’ AND city = ‘Moscow’ ORDER BY name
В целом все операторы SQL делятся на 3 большие группы.
-
DDL - команды для работы с таблицами. С помощью операторов DDL разработчики добавляют, удаляют и редактируют таблицы в базе.
-
CREATE - запись новой таблицы;
-
ALTER - редактирование;
-
DROP- полное удаление.
-
DML - редакторы данных. Предназначены для работы непосредственно с атрибутами и кортежами в таблицах - например, для удаления неактуальных товаров или перевода сотрудника из одного отдела в другой.
-
SELECT - поиск данных, соответствующих указанным критериям;
-
INSERT - запись новых параметров;
-
UPDATE - редактирование текущих значений;
-
DELETE - удаление значений.
-
-
DCL - команды для управления правами доступа к БД. Открывают или закрывают права конкретного сотрудника на редактирование данных.
-
GRANT - предоставление прав на изменение объекта;
-
REVOKE - отзыв имеющегося доступа.
-
-
TCL - команды программирования транзакций. Под транзакцией понимается очередная последовательность действий в системе. Чтобы транзакция считалась завершенной, должны быть выполнены все заданные условия. Иначе произойдет “откат”. Самый распространенный пример транзакций - прием онлайн-платежей на сайтах.
-
BEGIN TRANSACTION - старт последовательности;
-
ROLLBACK TRANSACTION - точка отката;
-
SAVE TRANSACTION - сохранение результатов транзакции на определенном этапе.
-
Как создать базу данных
Чтобы потренироваться в написании БД, воспользуемся сервисом https://www.mycompiler.io/.
В первую очередь создадим саму базу. В нашем примере это будет небольшая таблица с товарами - столами и стульями из разных коллекций.
CREATE TABLE items (
id INT AUTO_INCREMENT PRIMARY KEY,
category VARCHAR(30) NOT NULL,
collection VARCHAR(30) NOT NULL
);
Оператор AUTO_INCREMENT PRIMARY KEY задает автоматически генерируемый первичный ключ для каждой строки.
Параметр VARCHAR ограничивает максимальное количество битов в строке.
Точка с запятой означает конец команды.
Далее зададим несколько сущностей и присвоим им атрибуты.
CREATE TABLE items (
id INT AUTO_INCREMENT PRIMARY KEY,
category VARCHAR(30) NOT NULL,
collection VARCHAR(30) NOT NULL
);
INSERT INTO items (category,collection) VALUES ('table', 'Mary'), ('chair', 'Mary'), ('table', 'Lisa'), ('chair', 'Diana');
После этого мы можем найти в созданной базе все товары из коллекции Mary, добавив в конце программы строчку:
SELECT * FROM items WHERE collection = 'Mary';
В итоге мы получим два найденных значения.
Данные в таблицу можно вносить и из внешнего файла с помощью команды LOAD DATA LOCAL INFILE. Но это уровень операций для уверенного back-end разработчика.
Заключение
Язык SQL предназначен для работы с информацией, хранящейся в реляционных базах данных. С помощью операторов SQL можно управлять таблицами и значениями в них.
Команды на языке SQL пишутся в специальных системах управления базами данных - СУБД. Самые распространенные программы такого рода - MySQL, PostgreSQL и Oracle Database.
Без SQL невозможна работа сайтов и веб-приложений. Поэтому основы языка желательно знать всем разработчикам.