# Как устроен язык SQL Каждый день вы проверяете почту, переводите деньги другу, покупаете онлайн или пользуетесь поисковиком. Все они в своей работе используют базы данных и язык запросов SQL. ## Для чего нужен SQL SQL (сокращение от англ. Structured Query Language) — это язык запросов, который применяют, чтобы работать с базами данных, структурированных особым образом. Главные задачи SQL — составлять запросы так, чтобы находить среди большого объёма информации ту, что нужна для конкретных целей, сортировать её, структурировать и представлять в наиболее простом и понятном виде. Чтобы понять, зачем нужен язык SQL, представьте, что женщина выбирает в интернет-магазине летнее платье жёлтого цвета и хочет уложиться в 5 тысяч рублей. Всего в магазине 10 тысяч платьев. Если просто перебирать их по каталогу, уйдёт несколько часов. Но можно задать в фильтрах настройки по категории, сезону, цвету, цене и сразу найти нужные модели. Эти фильтры работают за счёт языка запросов SQL. Первый прототип языка SQL представила в 1979 году компания-разработчик Oracle. Сначала это был простейший инструмент для извлечения нужных данных, вроде фильтров в Excel-таблицах. С годами он усложнился, и теперь его применяют в качестве одного из основных инструментов для обработки данных. С помощью SQL можно: ● собирать и хранить данные в виде таблиц; ● изменять их содержимое и структуру; ● объединять данные и выполнять вычисления; ● защищать и распределять доступ. ## Особенности языка SQL **● Это язык запросов, а не программирования.** Его используют в дополнение к Python, JavaScript или C++, но только для работы с базами данных. Написать на нём полноценный сайт или приложение невозможно. **● Чёткая и понятная структура.** Это делает язык SQL для работы с данными относительно простым для начинающих. **● Универсальность.** Есть единые стандарты построения запросов для любых баз данных и браузеров, которые позволяют обрабатывать даже очень большие объёмы информации. **● Совместный доступ.** SQL позволяет создавать интерактивные запросы. Это значит, что можно получать нужные данные онлайн и принимать решения на их основе. **● Управление доступом.** При помощи SQL можно предоставить, закрыть или ограничить доступ к данным для разных групп пользователей, а также выдать им определённый набор функций: чтение, изменение, создание, удаление, копирование. Это защищает базы данных от взлома или несогласованных изменений. ## Сфера использования SQL SQL используют в Facebook, Google, Amazon, Uber, Netflix, Airbnb. Например, для того, чтобы показывать пользователям персональные рекомендации на основе того, что они смотрят, читают и лайкают. Язык SQL нужен разработчикам, тестировщикам, аналитикам данных, администраторам, маркетологам — всем тем, кому по работе нужно выгружать и обрабатывать большие объёмы данных. Правильно организованные запросы помогают извлекать полезную информацию о клиентах и пользователях, сортируют её по определённым категориям, анализируют работу сайта или бизнеса. Например, интернет-магазин доставляет товары по всей стране. У него обширная база клиентов. Владелец магазина хочет понять, как улучшить доставку и на какие регионы обратить внимание. Для этого он ставит задачу аналитику, который с помощью SQL-запросов выгружает данные о каждом регионе и сортирует их по объёму заказов. ## Что такое база данных SQL База данных — это способ хранения и организации данных, которые структурированы так, чтобы пользоваться ими могли и человек, и алгоритм. При помощи SQL можно работать с реляционными базами данных — то есть теми, где данные представлены в виде таблиц. Это отчасти похоже на таблицы в Excel, при этом все таблицы в рамках одной базы данных связаны между собой сквозным поиском. ![](https://avatars.mds.yandex.net/get-lpc/1520633/c417bfed-e5f1-4104-8619-19b033fb96e6/width_1280_q70) |*Реляционная база данных интернет-магазина объединяет таблицы с данными о клиентах, заказах и товарах*| Структура базы данных SQL состоит из шести элементов: ● Ключ — самый главный столбец, который связывает таблицы данных. ![](https://avatars.mds.yandex.net/get-lpc/1368426/8b8b7e2b-ccc4-45ac-bbaf-31788b354eb7/width_1280_q70) |*Ключи разного уровня в таблицах с данными*| Они бывают: - первичными — содержат уникальный идентификатор для каждого объекта, например, артикул; - потенциальными — содержат альтернативный идентификатор; - внешними — содержат ссылку, которая позволяет связать две таблицы, при этом значения ключей в одной таблице соответствуют первичному ключу в другой. ● Отношение — таблица с данными, представленными в строках и столбцах. ● Атрибут — столбец, который содержит наименование, тип, цену или другой параметр. ● Домен — значения, которые допустимы для данного атрибута: например, стоимость в рублях или название кириллическими символами. ● Кортеж — пронумерованная строка, где содержатся все данные о каком-либо объекте. ● Значение — содержимое ячейки в таблице. Чтобы работать с базами данных при помощи SQL, используют систему управления базами данных, или СУБД — посредник между пользователем и сервером, где находятся таблицы. СУБД представляют собой комплекс ПО, которое позволяет создавать базы данных и управлять ими. СУБД бывают бесплатными и коммерческими — например, MySQL, Microsoft SQL Server, SQLite, Oracle, Ingres. ![](https://avatars.mds.yandex.net/get-lpc/403342/01cf37a6-6a1a-4134-88ce-f29beac10aa3/width_1280_q70) |*Список платных и бесплатных СУБД и компаний, которые их используют*| ## Работа с SQL: основные операторы Когда пользователь делает запрос к таблице с данными, поэтапно это выглядит так: 1. Клиент — интерфейс, который используется для создания запроса. Например, строка поиска в Яндексе. 2. СУБД (система управления базами данных) — отвечает за передачу запроса от пользователя к базе данных и возвращает ответ в понятном ему виде. 3. База данных — таблицы, где данные структурированы и связаны друг с другом так, чтобы быстро находить нужное. Чтобы система проделала все эти операции, используют язык баз данных SQL. Это делают с помощью специальных команд — операторов. Вот основные типы операторов SQL: **● DDL (Data Definition Language)** — операторы определения данных, которые работают с целыми таблицами. Например: CREATE — чтобы создать таблицу (TABLE) или базу данных (DATABASE), DROP (TABLE/DATABASE) — чтобы удалить всю таблицу или базу данных, USE — чтобы выбрать нужную базу данных. **● DML (Data Manipulation Language)** — операторы манипуляции данными, которые работают с содержимым таблиц. Например, UPDATE — чтобы обновить данные, DELETE — чтобы удалить, INSERT — чтобы добавить новые, SELECT (FROM/WHERE) — чтобы выбрать нужные данные по заданному параметру. **● DCL (Data Control Language)** — оператор определения доступа к данным для разных пользователей. Например, GRANT — чтобы открыть доступ или DENY — чтобы запретить. **● SQL клиент-сервер** — для управления доступом к данных для разных пользователей. **● SQL трёхуровневой архитектуры** — для защиты данных от несанкционированного копирования и распространения. Кроме операторов используют **TCL (Transaction Control Language)** — язык управления транзакциями, то есть сериями команд, которые выполняются поочередно. Если хотя бы одна из команд не выполнена, все последующие тоже отменяются. Так происходит, к примеру, с оплатой онлайн, когда нужно последовательно ввести данные и подтвердить платёж. Например, BEGIN TRANSACTION — начало транзакции, COMMIT TRANSACTION — изменение команд в цепочке, а SAVE TRANSACTION — промежуточная точка сохранения внутри транзакции. ## Главное об SQL ● Язык запросов SQL используется для работы с большими базами данных, в которых информация структурирована особым образом. Он поможет быстро извлекать нужные данные, отфильтровывать их по десяткам разных параметров. ● SQL и СУБД используют крупнейшие IT-компании, интернет-магазины и онлайн-сервисы, где нужно быстро отображать информацию в ответ на миллионы запросов. Среди них — Netflix, Google, Microsoft, Amazon. Поэтому специалисты, которые владеют SQL, очень востребованы. ● Изучить основы языка запросов SQL будет проще тем, кто уже знаком с формулами в Excel-таблицах. ● Знание языка SQL пригодится аналитикам данных, маркетологам, продакт-менеджерам, специалистам по финансам. # Литература: https://practicum.yandex.ru/blog/chto-takoe-sql/