- Понятие языка SQL
- Особенности языка SQL
- Структура SQL
- Примеры запросов из SQL
- Выбираем столбцы по именам
- Фильтруем выборку данных
- Сортировка результатов запроса
- Часто задаваемые вопросы о SQL
- Кому пригодится в работе SQL?
- Где используется SQL?
- Какие продукты используют администраторы БД помимо SQL?
25 рабочих гипотез для увеличения конверсии на 40%
Скачать материалы
О чем речь? Структура SQL (Structured Query Language) довольна проста для понимания и работы. Есть удобные подразделы и операторы для структурирования, отбора, обновления или удаления информации.
Что учесть? SQL используют в дополнение к языкам C++, JavaScript и Python только для работы с базами данных. Написать на нем приложение или сайт не получится. А вот принимать запросы онлайн и обрабатывать их – основные преимущества SQL.
Понятие языка SQL
Аббревиатура SQL расшифровывается как Structured Query Language (структурированный язык запросов). Это стандартное средство работы с реляционными базами данных. SQL разрабатывался на основе аналогичного языка, созданного корпорацией IBM в конце 1970-х годов, и следовал принципам реляционной алгебры.
Впервые реализован в прототипе СУБД от IBM System R. Впоследствии язык распространялся в качестве стандартного средства обработки запросов практически для всех коммерческих систем управления базами данных реляционного типа.
Этот стандарт поддерживается почти всеми поставщиками оборудования и ПО, чтобы обеспечивать потребности покупателей. Но дополнительно внедряются возможности, отсутствующие в SQL и позволяющие расширить функционал продаваемой продукции. И все же производители СУБД стараются следовать данному стандарту и обеспечивать его гарантированное выполнение. Благодаря этому компании, выпускающие программные продукты, успешно развиваются.
Строго говоря, SQL не является полноценным языком программирования. В нем отсутствуют традиционные операторы, которые управляют процессом исполнения программы. Также здесь нет описания типов, присущего другим ЯП (языкам программирования).
-
Дополнительно:
- 10 критических ошибок В2В маркетинга
- 5 полезных инструментов для В2В
Структура SQL файла содержит лишь набор стандартных команд, предоставляющих доступ к базам данных. Реализованные таким образом операторы в свою очередь могут быть встроены в классические языки программирования – C++, COBOL, PL и т. п. Все запросы SQL поддерживают интерактивный режим исполнения.
Реляционная алгебра содержит в себе лишь совокупность операций над элементами БД. Язык SQL же развивается дальше и включает в себя, помимо этого, операторы, соответствующие DDL (Data Definition Language или «язык описания данных»). Также с помощью имеющихся средств пользователи могут управлять непосредственно базами данных. Это обстоятельство позволяет считать SQL полноценным языком запросов.
Особенности языка SQL
- Язык запросов. Используется как дополнение к классическим ЯП, когда требуется взаимодействие с БД. То есть, создавать полноценные программы только лишь средствами SQL не получится.
- Простота и понятность структуры данных. SQL благодаря этим качествам хорошо подходит для начинающих администраторов БД.
- Универсальность. Существующие единые стандарты создания запросов позволяют обрабатывать большие массивы данных любых БД и браузеров.
- Совместный доступ. Средства SQL включают в себя инструменты для создания интерактивных запросов. То есть, у администратора есть возможность в реальном времени обрабатывать данные.
- Управление доступом. Язык SQL также позволяет устанавливать разные права на чтение, изменение, создание, удаление и копирование данных для конкретных групп пользователей. Тем самым обеспечивается защита БД от несанкционированного доступа.
Структура SQL
Запросы SQL представляют собой инструкции, состоящие из фраз (предложений). Инструкции называются по имени оператора, определяющего суть инструкции. Такой оператор практически всегда следует первым. Фразы, в свою очередь, также называются по имени ключевого слова, с которого они начинаются.
Вид | Название | Назначение |
DDL | CREAT TABLE
DROP TABLE ALTER TABLE CREAT INDEX DROP INDEX CREAT VIEW DROP VIEW CREAT DOMAIN ALTER DOMAIN DROP DOMAIN RENAME |
Создание таблицы
Удаление таблицы Изменение структуры таблицы Создание индекса Удаление индекса Создание представления Удаление представления Создание домена Изменение домена Удаление домена Переименование |
DRL | SELECT
TRANSFORM UNION |
Выборка записей
Создание перекрестного запроса Создание запроса на объединение |
DML | UPDATE
INSERT DELET |
Изменение записей
Вставка новых записей Удаление записей |
TCL | START TRANSACTION
COMMIT ROLLBACK |
Начало транзакции
Успешное завершение транзакции Отказ транзакции |
DCL | GRANT
REVOKE |
Передача привилегий
Изъятие привилегий |
Примеры запросов из SQL
Приведем некоторые примеры простых запросов SQL, которые начинающие программисты могут использовать для получения записей из своих баз данных.
Рассмотрим базовый запрос SELECT.
SELECT *
FROM Pets;
Результат:
+———+————-+————+————+————+
| PetId | PetTypeId | OwnerId | PetName | DOB|
|———+————-+————+————+————|
| 1 | 2 | 3 | Fluffy | 2020-11-20 |
| 2 | 3 | 3 | Fetch | 2019-08-16 |
| 3 | 2 | 2 | Scratch | 2018-10-01 |
| 4 | 3 | 3 | Wag | 2020-03-15 |
| 5 | 1 | 1 | Tweet | 2020-11-28 |
| 6 | 3 | 4 | Fluffy | 2020-09-17 |
| 7 | 3 | 2 | Bark | NULL |
| 8 | 2 | 4 | Meow | NULL |
+———+————-+————+————+————+
Этот запрос выбирает все столбцы во всех записях таблицы Pets. Символ звездочка (*) является шаблоном и обозначает, что мы хотим получить все столбцы из таблицы.
Выбираем столбцы по именам
Для ускорения работы запросов к базе данных рекомендуется избирательно извлекать только те колонки, которые необходимы для текущей задачи, вместо выбора всех колонок из таблицы.
SELECT PetId, PetName
FROM Pets;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 1 | Fluffy |
| 2 | Fetch |
| 3 | Scratch |
| 4 | Wag |
| 5 | Tweet |
| 6 | Fluffy |
| 7 | Bark |
| 8 | Meow |
+———+————+
Фильтруем выборку данных
Чтобы получить только те строки, которые нам нужны, мы можем добавить в запрос оператор WHERE.
SELECT PetId, PetName
FROM Pets
WHERE PetName = ‘Fluffy’;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 1 | Fluffy |
| 6 | Fluffy |
+———+————+
Вот еще один пример фильтрации выборки. На этот раз мы будем использовать операцию «больше» (>), чтобы получить записи с днем рождения питомца позже определенной даты (DOB, date of birth – дата рождения).
SELECT PetName, DOB
FROM Pets
WHERE DOB > ‘2020-01-01’;
Результат:
+————+————+
| PetName | DOB |
|————+————|
| Fluffy | 2020-11-20 |
| Wag | 2020-03-15 |
| Tweet | 2020-11-28 |
| Fluffy | 2020-09-17 |
+————+————+
Вы можете заменить операцию «больше» на любую другую, например, на «больше либо равно (>=), «меньше» (<) или «меньше либо равно» (<=).
Для получения значений, попадающих в некоторый диапазон, можно использовать оператор BETWEEN (например, день между датой начала и конца интервала).
SELECT
PetName,
DOB
FROM Pets
WHERE DOB BETWEEN ‘2018-01-01’ AND ‘2020-01-01’;
Результат:
+————+————+
| PetName | DOB |
|————+————|
| Fetch | 2019-08-16 |
| Scratch | 2018-10-01 |
+————+————+
Сортировка результатов запроса
Чтобы отсортировать записи, возвращаемые запросом, мы можем добавить в запрос оператор ORDER BY.
- Сортировка в порядке возрастания.
Чтобы упорядочить данные по возрастанию, применяется оператор ASC что означает «по возрастанию». Этот параметр является стандартным при сортировке, поэтому его указание в запросе необязательно.
SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC;
или короче
SELECT PetId, PetName
FROM Pets
ORDER BY PetName;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 7 | Bark |
| 2 | Fetch |
| 1 | Fluffy |
| 6 | Fluffy |
| 8 | Meow |
| 3 | Scratch |
| 5 | Tweet |
| 4 | Wag |
+———+————+
- Сортировка в порядке убывания.
Для получения результата запроса в порядке убывания нужно использовать ключевое слово DESC.
SELECT PetId, PetName
FROM Pets
ORDER BY PetName DESC;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 4 | Wag |
| 5 | Tweet |
| 3 | Scratch |
| 8 | Meow |
| 1 | Fluffy |
| 6 | Fluffy |
| 2 | Fetch |
| 7 | Bark |
+———+————+
- Сортировка по нескольким столбцам.
Чтобы отсортировать записи по нескольким столбцам, их имена нужно перечислить через запятую.
SELECT PetId, PetName
FROM Pets
ORDER BY PetName ASC, PetId ASC;
FROM Pets
ORDER BY PetName ASC, PetId DESC;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 7 | Bark |
| 2 | Fetch |
| 1 | Fluffy |
| 6 | Fluffy |
| 8 | Meow |
| 3 | Scratch |
| 5 | Tweet |
| 4 | Wag |
+———+————+
(8 rows affected)
+———+————+
| PetId | PetName |
|———+————|
| 7 | Bark |
| 2 | Fetch |
| 6 | Fluffy |
| 1 | Fluffy |
| 8 | Meow |
| 3 | Scratch |
| 5 | Tweet |
| 4 | Wag |
+———+————+
(8 rows affected)
Обратим внимание на то, что порядок размещения записей о животных с именем Fluffy отличается. Это связано с тем, что при выполнении запроса в базе данных сначала идет упорядочивание по имени (PetName), а уже потом по уникальному идентификатору (PetId).
- Сортировка по скрытым столбцам.
Вы можете отсортировать результат запроса по столбцам, которые не входят в список выборки, расположенный после оператора SELECT.
SELECT PetId, PetName
FROM Pets
ORDER BY DOB DESC;
Результат:
+———+————+
| PetId | PetName |
|———+————|
| 5 | Tweet |
| 1 | Fluffy |
| 6 | Fluffy |
| 4 | Wag |
| 2 | Fetch |
| 3 | Scratch |
| 7 | Bark |
| 8 | Meow |
+———+————+
По этой выборке мы можем сделать вывод, что Tweet – самый младший питомец, а Meow – самый старший, потому что мы отсортировали записи по дате рождения (DOB) в порядке убывания.
Чтобы убедиться давайте, выполним запрос, добавив столбец DOB в список SELECT.
SELECT PetId, PetName, DOB
FROM Pets
ORDER BY DOB DESC;
Результат:
+———+————+————+
| PetId | PetName | DOB |
|———+————+————|
| 5 | Tweet | 2020-11-28 |
| 1 | Fluffy | 2020-11-20 |
| 6 | Fluffy | 2020-09-17 |
| 4 | Wag | 2020-03-15 |
| 2 | Fetch | 2019-08-16 |
| 3 | Scratch | 2018-10-01 |
| 7 | Bark | NULL |
| 8 | Meow | NULL |
+———+————+————+
На основе данных о дате рождения животных Meow и Bark, которые не указаны и представлены как NULL, мы не можем точно определить, кто из них старше. Этот факт подчеркивает, что в базах данных значение NULL считается самым низким по сравнению с другими значениями. Это важно учитывать при формировании запросов.
Часто задаваемые вопросы о SQL
Кому пригодится в работе SQL?
Данным языком в своей работе пользуются разработчики, тестировщики, аналитики данных, администраторы, маркетологи и прочие специалисты, связанные с обработкой больших массивов информации. С помощью правильно заданных запросов пользователи получают нужную информацию, сортируют ее и анализируют для нужд бизнеса.
Где используется SQL?
В различных сферах: от электронных библиотек до государственных порталов и мобильных приложений, используется SQL для организации информации. Профили пользователей, товары в онлайн-магазинах, данные о покупках и финансы – все это управляется с помощью SQL. Компании применяют данный язык запросов для эффективной работы с клиентской базой и ассортиментом.
Какие продукты используют администраторы БД помимо SQL?
- Oracle Database. Вместе с основным функционалом здесь обеспечена возможность автоматизированного управления серверами и данными. Oracle Database выпускается для Windows, MacOS и Linux.
- MySQL. Также является продуктом Oracle, но отличается открытостью исходного кода. Система широко применяется крупными корпорациями, в числе которых – Adobe и Google. Также характерной особенностью MySQL является бесплатность использования как для юридических, так и для физических лиц.
- Microsoft SQL. В данной реляционной СУБД реализована полная совместимость с операционными системами Linux и Windows. Это идеальный вариант для обеспечения работы веб-серверов и функционирования потребительского ПО.
- Amazon Relational Database Service (RDS). Эта реляционная СУБД работает в облачном режиме и отличается простотой использования и настройки. Реализована возможность бюджетирования облака, безопасности и мониторинга.
Итак, мы разобрали основные особенности SQL: структуру таблиц, запросов и дополнительных средств. В статье даны варианты использования языка, вкратце описаны форматы представления данных и некоторые термины, задействованные в описании этих данных.