Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить бесплатно
ГлавнаяБлогSQL-запросы: виды и механизм работ
SQL-запросы
11 884
Время чтения: 15 минут

SQL-запросы: виды и механизм работ

11 884
Время чтения: 15 минут
Сохранить статью:
Сохранить статью:

Что это такое? SQL-запросы необходимы для работы с информацией из базы данных. Это может быть внесение, извлечение, сортировка, удаление и ряд других операций. При этом не указывается способ осуществления запрашиваемого действия.

Где применяется? Так как разного рода информация присутствует во многих сферах деятельности, то SQL-запросы применяются как в работе с онлайн-ресурсами, так и с программами и приложениями.

В статье рассказывается:

  1. Структура базы данных
  2. Механизм работы SQL-запроса
  3. Виды SQL-запросов
  4. Примеры SQL-запросов
  5. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

Структура базы данных

Прежде всего, давайте рассмотрим, что представляет собой база данных и каковы особенности ее иерархии.

База данных SQL есть не что иное, как совокупность сведений, хранящихся в виде таблицы. Наименования ее столбцов отражают краткую характеристику данных, в то время как в строках прописывается полная информация. Поле – это компонент структуры таблицы, содержащий данные об одном аспекте ее элемента.

Структура базы данных
Структура базы данных

Допустим, что у компании имеется несколько баз данных. Для того чтобы можно было увидеть их полный перечень, введем команду: SHOW DATABASES, после чего произойдет подключение к базе данных сотрудников.

Полученный результат выглядит подобным образом:

+———————+

| Databases |

+———————+

| mysql |

| information_schema |

| employees |

| test |

| sys |

+———————+

Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 28738 pdf иконка

Также одна база данных может состоять из нескольких таблиц. В таком случае запрос SHOW TABLES in employees позволит увидеть полный их список. Визуально это выглядит примерно так:

+———————-+

| Tables_in_employees |

+———————-+

| engineering |

| product |

| marketing |

| sales |

+———————-+

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

Структура базы данных
Структура базы данных

Увидеть их можно с помощью выполнения SQL-запроса Describe engineering. Допустим, таблица содержит столбцы, в которых определен один конкретный признак, к примеру, employee_id, first_name, last_name, email, country и salary.

+————+——————-+—————+

| Name | Null | Type |

+————+——————-+—————+

|EMPLOYEE_ID| NOT NULL | INT(6) |

|FIRST_NAME | NOT NULL |VARCHAR2(20) |

|LAST_NAME | NOT NULL |VARCHAR2(25) |

|EMAIL | NOT NULL |VARCHAR2(255) |

|COUNTRY | NOT NULL |VARCHAR2(30) |

|SALARY | NOT NULL |DECIMAL(10,2) |

+————+——————-+—————+

Строки таблицы, в которых отражена основная информация, называются записями. То есть, они содержат сведения, соответствующие наименованию столбцов (employee_id, first_name, last_name, e-mail, salary и country). Другими словами, в нашем примере строки определяют и выводят информацию об одном сотруднике из группы.

Механизм работы SQL-запроса

Чтобы правильно сформировать SQL-запрос и получить ожидаемый результат, следует четко понимать процесс его выполнения.

Итак, первое действие, которые совершает программа – это грамматическая разбивка и построение синтаксического дерева запроса. Анализ необходим для того, чтобы определить соответствие SQL-запроса требованиям синтаксиса и семантики. С помощью парсера формируется внутреннее определение команды, которое далее поступает обработчику кода.

После этого оптимизатор выстраивает оптимальный план выполнения запроса, который помогает выявить алгоритм, использующийся для проведения каждой операции, а также контролирует их исполнение.

Прежде чем оптимальный план будет найден, оптимизатор просчитывает все допустимые варианты выполнения, дает оценку качеству и стоимости каждого из возможных планов, анализирует информацию об актуальном состоянии базы данных. Разумеется, работа оптимизатора не всегда может стать идеальной. Именно по этой причине, пользователи и администраторы баз данных нередко вынуждены производить проверку и настройку предложенного плана вручную. Это необходимо для повышения производительности выполнения SQL-запроса.

Дарим скидку от 60%
на обучение «Разработчик» до 23 июня
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

Так какой же план может считаться идеальным и пригодным для выполнения?

Повторим, что одним из критериев отбора становится оценка стоимости, в частности, мы говорим о таких аспектах, как число дисковых операций ввода-вывода, стоимость процессора, время, требующееся на отклик и выполнение процесса в целом. Специалисты определяют это как временные сложности.

Механизм работы SQL-запроса
Механизм работы SQL-запроса

Результатом обработки запроса данных SQL становится запуск в работу выбранного оптимального плана, после чего пользователь может ознакомиться с результатами.

Виды SQL-запросов

Существуют следующие виды запросов в SQL:

  • DDL (Data Definition Language). Это язык определения данных, с помощью которого создается база данных и дается описание ее структуры. DDL запрос позволяет настроить правила размещения различной информации в таблице базы данных.
  • DML (Data Manipulation Language) запрос – это язык работы с данными. Как правило, применяемые команды нужны для внесения изменений в уже существующие данные, их удаления и сохранения, обновления записей и т.д.
  • DCL (Data Control Language) запрос или язык управления данными. К ним относятся команды, при помощи которых могут быть внесены изменения в настройки расширений, доступа и другие элементы системы управления базой данных.
  • TCL (Transaction Control Language) – это язык управления транзакциями. TCL запрос используется, когда необходимо объединить несколько команд DML, направленных на изменение данных, в наборы транзакций.

Примеры SQL-запросов

Ключевые слова

Они используются при составлении запросов:

  • WHERE. С помощью этого ключевого слова можно сделать выборку из записей. Например:

SELECT (Column2, Column3) FROM Table1 WHERE Column1 = 1

  • GROUP BY. Осуществляется группировка отфильтрованных записей согласно значениям определенных столбцов. Применяется после WHERE.
  • AND, OR и BETWEEN. Ключевые слова AND и OR помогают расширить границы выборки, сделанной с помощью WHERE, либо, наоборот, уменьшить при введении требуемых значений. BETWEEN используется в случаях, когда для создания выборки необходимо указать диапазон значений.
  • LIMIT. Устанавливает допустимые пределы значений. К примеру, пользователь получил 100 записей из выборки, а ему нужно только первые 20. В этом случае он использует ключевое слово LIMIT20.
Только до 24.06
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

Команды

Команда – это то, с чего начинается любой SQL-запрос.

Команды
Команды

Например, наша цель – создание базы данных, в которую будет внесена информация о прочитанных книгах. Кроме этого, нам потребуется изменять или удалять некоторые сведения. В качестве примера мы будем использовать простейшую систему управления базой данных sqlite3 в среде Linux. Создаем объект при помощи команды sqlite3 demo.db и переходим в командную строку в SQL-запросе:

sqlite3 demo.db

SQLite version 3.27.2 2019-02-25 16:06:06

Enter «.help» for usage hints.

sqlite>

Для формирования таблицы, вводим команду CREATE TABLE. В нашем примере мы будем работать с тремя столбцами: id, название книги, автор.

sqlite> CREATE TABLE Books (id INTEGER PRIMARY KEY, title CHAR(255), author CHAR(255));

sqlite> .tables

Books

Команда .tables показывает список таблиц.

Создаем три новые записи в таблице путем команды INSERT:

sqlite> INSERT INTO Books(title, author) VALUES

…> («Язык SQL», «Неизвестный автор»),

…> («SQL. Унесенные ветром», «Маргарет Митчелл»),

…> («Книга №3», «Без автора»);

Далее нам следует указать, в какие столбцы нужно вставить данные. При этом поле id мы не учитываем. Этот столбец выступает в качестве первичного ключа, который производит автоматическую генерацию уникальных значений. Итак, в одном запросе формируем серию записей.

Команда SELECT позволяет извлечь их из таблицы:

sqlite> SELECT * FROM Books;

1|Язык SQL|Неизвестный автор

2|SQL. Унесенные ветром|Маргарет Митчелл

3|Книга №3|Без автора

Мы видим, что каждой записи соответствует своя строка, вертикальные линии означают разделение на столбцы. Предположим, что нам нужны только конкретные из полей, в этом случае меняем звездочку на название полей, прописывая их через запятую. Выглядит это так:

sqlite> SELECT title, author FROM Books;

Язык SQL|Неизвестный автор

SQL. Унесенные ветром|Маргарет Митчелл

Книга №3|Без автора

Команда UPDATE в запросе SQL способствует изменению записей в таблице. Применяя ее, следует указать уникальную характеристику элемента, который должен быть изменен, чтобы программа смогла идентифицировать одну или несколько записей, объединенных в группу. Так, следуя нашему примеру, мы обновляем сведения об авторе в первой и второй книгах:

sqlite> UPDATE Books

…> SET author = «Unknown»

…> WHERE id = 1 OR id = 3;

sqlite>

sqlite> SELECT title, author FROM Books;

Язык SQL|Unknown

SQL. Унесенные ветром|Маргарет Митчелл

Книга №3|Unknown

Требуется удалить записи из таблицы базы данных? Выполнение SQL-запроса осуществляем с использованием команды DELETE. Нам нужно извлечь запись о книге с id, который равен 2:

sqlite> DELETE FROM Books WHERE id = 2;

sqlite>

sqlite> SELECT * FROM Books;

1|Язык SQL|Unknown

3|Книга №3|Unknown

Удаление таблицы полностью из базы данных производится командой DROP TABLE:

sqlite> CREATE TABLE Demo (id INTEGER PRIMARY KEY, text TEXT);

sqlite>

sqlite> .tables

Books Demo

sqlite>

sqlite> DROP TABLE Demo;

sqlite>

sqlite> .tables

Books

Команды
Команды

ALTER TABLE. С одновременным использованием ключевых слов эта команда позволяется добавить новые столбцы в таблицу или изменить ее название. Например, мы хотим переименовать нашу таблицу с Books на Books that I read:

sqlite> ALTER TABLE Books RENAME TO Books that I read;

sqlite>

sqlite> .tables

Books that I read

А также добавить новый столбец is_finished с булевым типом значения (истина или ложь):

sqlite> ALTER TABLE Books that I read ADD COLUMN is_finished BOOLEAN;

sqlite> UPDATE Books that I read

…> SET is_finished = True;

sqlite>

sqlite> SELECT * FROM Books that I read;

1|Язык SQL|Unknown|1

3|Книга №3|Unknown|1

Агрегатные функции

Данные опции используются, когда требуется произвести дополнительные действия в полученной по запросу SQL выборке:

  • COUNT (наименование_столбца). Определяет и возвращает количество строк в выборке, в которых значение столбца не нулевое (NULL).
  • SUM (наименование_столбца). Вычисляет и возвращает сумму значений в определенном столбце.
  • AVG (наименование_столбца). Определяет среднее значение по столбцу.
  • MIN (наименование_столбца). Возвращает минимальное значение выбранного столбца.
  • MAX (наименование_столбца). Возвращает максимальное значение выбранного столбца.
Откройте для себя захватывающий мир IT! Обучайтесь со скидкой до 61% и получайте современную профессию с гарантией трудоустройства. Первый месяц – бесплатно. Выбирайте программу прямо сейчас и станьте востребованным специалистом.

Вложенные подзапросы

Представляют собой один SQL-запрос, расположенный внутри другого запроса SQL. Такой механизм используется, если выборка производится по значениям, к которым тоже можно применить фильтр. Предположим, что нам нужно выбрать хоккейные команды, которые становились участниками соревнований в период с 2010 по 2020 год.

SELECT DISTINCT club_name

FROM clubs

WHERE game_year = 2010 AND club_id IN

(SELECT club_id

FROM clubs

WHERE game_year = 2020);

Внедрение в запрос ключевого слова DISTINCT способствует извлечению из выборки повторяющихся результатов.

Итак, мы рассмотрели некоторые примеры SQL-запросов, которые могут быть простыми или сложными, в зависимости от результата, который требуется получить. Разумеется, информацию, представленную в данной статье, не стоит рассматривать как единственный верный источник всех возможностей в данной области. Однако мы надеемся, что изложенный материал поможет новичкам быстрее и успешнее освоить эту технологию и не совершать ошибки в SQL-запросах.

Оцените статью
Рейтинг: 4
( голосов 3 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...