Наиболее часто используемые SQL-запросы специалистами по данным
21 февраля 2023 г.База данных большого размера может оказаться обременительной, если у вас нет надежного метода организации, управления и поиска необходимых данных. Та же база данных может стать приятным и практичным ресурсом, если вы знакомы с наиболее частыми и простыми SQL-запросами. п
SQL (язык структурированных запросов) – это инструмент или язык программирования, который широко используется учеными, занимающимися данными, и другими специалистами, работающими с данными, для извлечения информации из баз данных и управления ею. Являясь специалистом по обработке и анализу данных, необходимо понимать SQL для извлечения и анализа данных, необходимых для принятия обоснованных решений для вашей организации.
SQL является декларативным языком, что означает, что вы указываете, что вы хотите, чтобы база данных делала, а не говорите ей, как это сделать. Используемые вами SQL-запросы — это, по сути, инструкции, которые сообщают базе данных, какие данные следует извлекать, как их фильтровать и как их организовывать. Так же, как поисковая система использует сложные алгоритмы, но нам не нужно знать об этом, чтобы использовать их. п
Существует множество различных типов SQL-запросов, и каждый из них имеет свои особенности использования. Некоторые из наиболее часто используемых SQL-запросов специалистами по данным включают SELECT, JOIN, GROUP BY, WHERE, COUNT, SUM, UPDATE, DELETE и INSERT. Каждый из этих запросов играет определенную роль в процессе анализа данных, и понимание того, как и когда их использовать, является ключом к эффективной работе с данными. п
В этой статье мы обсудим часто используемые SQL-запросы специалистами по данным и рассмотрим различные способы использования этих запросов для извлечения и анализа данных. К концу статьи у вас будет четкое представление о том, как использовать SQL для извлечения и анализа данных, и вы сможете использовать эти запросы для получения ценной информации из ваших данных.
Запросы
Обратите внимание, что для демонстрации запросов мы воспользуемся помощью следующего образца базы данных. Этот пример базы данных содержит две таблицы: «СОТРУДНИКИ» и «ОТДЕЛЫ». Таблица «СОТРУДНИКИ» содержит информацию о сотрудниках, такую как их идентификатор, имя, возраст и отдел. Таблица "ОТДЕЛЫ" содержит информацию об отделах, такую как их идентификатор, название отдела и местонахождение.
ТАБЛИЦА СОТРУДНИКОВ
| Идентификатор | ИМЯ | ВОЗРАСТ | ОТДЕЛ | |----|----|----|----| | 1 | Абхинав | 25 | ИТ | | 2 | Вайшнави | 30 | HR | | 3 | Шубханги | 35 | ИТ | | 4 | Друвин | 40 | HR | | 5 | Адити | 45 | Финансы |
n ТАБЛИЦА ОТДЕЛОВ
| Идентификатор | ОТДЕЛ | МЕСТО | |----|----|----| | 1 | ИТ | Хайдарабад | | 2 | HR | Калькутта | | 3 | Финансы | Пуна |
ВЫБРАТЬ
оператор SELECT является наиболее фундаментальным и часто используется SQL-запрос. Он используется для выбора определенных столбцов из таблицы и извлечения из них данных. Оператор SELECT имеет следующий синтаксис:
ВЫБЕРИТЕ столбец1, столбец2,…
ОТ table_name;
Например, в таблице EMPLOYEES для выбора имени и возраста запрос будет таким:
ВЫБЕРИТЕ имя, возраст ОТ сотрудников;
При этом будут извлечены столбцы имени и возраста из таблицы сотрудников. Вывод для вышеуказанного запроса будет:
| ИМЯ | ВОЗРАСТ | |----|----| | Абхинав | 25 | | Вайшнави | 30 | | Шубханги | 35 | | Друвин | 40 | | Адити | 45 |
Чтобы отобразить все столбцы, вы можете использовать звездочку «*», а не упоминать все столбцы в операторе SELECT.
Например,
ВЫБРАТЬ * ОТ сотрудников;
Вывод для приведенного выше запроса будет
| ИМЯ | ВОЗРАСТ | ОТДЕЛ | |----|----|----| | Абхинав | 25 | ИТ | | Вайшнави | 30 | HR | | Шубханги | 35 | ИТ | | Друвин | 40 | HR | | Адити | 45 | Финансы |
n ГДЕ
Предложение WHERE используется для фильтрации данных на основе определенного условия. Он часто используется в сочетании с оператором SELECT для получения подмножества данных, удовлетворяющих определенным критериям. Предложение WHERE имеет следующий синтаксис:
SELECT column1, column2 FROM table_name WHERE условие;
Например, если вы хотите выбрать столбцы «имя» и «возраст» из таблицы «сотрудники», но только для сотрудников старше 30 лет, запрос будет таким:
ВЫБЕРИТЕ имя, возраст FROM сотрудников, WHERE age > 30;
Этот запрос выбирает столбцы имени и возраста из таблицы сотрудников, но только для сотрудников старше 30 лет. Вывод будет таким:
н
| ИМЯ | ВОЗРАСТ | |----|----| | Шубханги | 35 | | Друвин | 40 | | Адити | 45 |
ПРИСОЕДИНЯЙТЕСЬ
Данные из многих таблиц объединяются с помощью предложения JOIN. Он часто используется для извлечения данных из нескольких таблиц, связанных друг с другом через общий столбец. Предложение JOIN имеет следующий синтаксис:
ВЫБРАТЬ столбец1, столбец2 ИЗ таблицы1 ПРИСОЕДИНИТЬСЯ к таблице2 В таблице1.столбец = таблица2.столбец;
Например, следующий запрос может использоваться для выбора столбцов «имя», «отдел» и «местоположение» из таблицы «сотрудники» и столбца «местоположение» из таблицы «отделы»:
ВЫБЕРИТЕ сотрудников.имя, сотрудников.отдел, отделы.расположение ОТ сотрудников ПРИСОЕДИНЯЙТЕ отделы к сотрудникам.отдел = отделы.отдел;
В этом запросе используется предложение JOIN для объединения данных из таблиц сотрудников и отделов. Он выбирает столбцы имени и отдела из таблицы сотрудников и столбец местоположения из таблицы отделов, где значения отдела в обеих таблицах совпадают. Результат будет таким:
| ИМЯ | ОТДЕЛ | МЕСТО | |----|----|----| | Абхинав | ИТ | Хайдарабад | | Вайшнави | HR | Хайдарабад | | Шубханги | ИТ | Калькутта | | Друвин | HR | Калькутта | | Адити | Финансы | Пуна |
ОБЪЕДИНЕННЫЕ ФУНКЦИИ
Агрегированные функции используются для выполнения вычислений с набором данных и возврата одного значения. Вот некоторые из наиболее часто используемых агрегатных функций в SQL:
* COUNT: возвращает количество строк в таблице или количество строк, соответствующих определенному условию. * SUM: возвращает сумму всех значений в определенном столбце. * AVG: возвращает среднее значение всех значений в определенном столбце. * MIN: возвращает минимальное значение в определенном столбце. * MAX: возвращает максимальное значение в определенном столбце.
Например, если вы хотите найти среднюю зарплату сотрудников в таблице "employees", запрос будет таким:
ВЫБРАТЬ AVG(возраст) ОТ сотрудников;
Вывод: 32,4
Этот запрос выбирает средний возраст всех сотрудников в таблице сотрудников. Он использует агрегатную функцию AVG() для расчета среднего возраста всех сотрудников.
ГРУППИРОВАТЬ ПО И ПОЛУЧИТЬ
Предложение GROUP BY используется для группировки данных на основе определенного столбца. Он часто используется в сочетании с агрегатными функциями, такими как COUNT, SUM и AVG, для получения сводной информации о данных. Оператор GROUP BY имеет следующий синтаксис:
ВЫБЕРИТЕ столбец1, COUNT(столбец2) ИЗ имя_таблицы СГРУППИРОВАТЬ ПО столбцу1;
Например, если вы хотите подсчитать количество сотрудников в каждом отделе, запрос будет таким:
ВЫБЕРИТЕ отдел, COUNT(*) FROM сотрудников СГРУППИРОВАТЬ ПО отделу;
В этом запросе используется предложение GROUP BY для группировки сотрудников по отделам и функция COUNT() для подсчета количества сотрудников в каждом отделе. Результат будет таким:
| ОТДЕЛ | COUNT(*) | |----|----| | ИТ | 2 | | HR | 2 | | ФИНАНСЫ | 1 |
Предложение HAVING используется для фильтрации данных на основе агрегатных функций. Оно похоже на предложение WHERE, но используется вместе с предложением GROUP BY для фильтрации данных после их группировки. Предложение HAVING, использующее агрегатную функцию COUNT, будет иметь следующий синтаксис:
<код>ВЫБЕРИТЕ столбец1, СЧЕТЧИК(столбец2) ИЗ имя_таблицы ГРУППИРОВАТЬ ПО столбцу1, ИМЕЮЩЕМУ СЧЕТЧИК(столбец2) > номер;
Например, если вы хотите подсчитать количество сотрудников в каждом отделе, но только для отделов с более чем 5 сотрудниками, запрос будет таким:
ВЫБЕРИТЕ отдел, COUNT() ОТ сотрудников СГРУППИРОВАТЬ ПО отделу, ИМЕЮЩЕМУ COUNT() > 5;
В этом запросе используется предложение GROUP BY для группировки сотрудников по отделам, функция COUNT() для подсчета количества сотрудников в каждом отделе и предложение HAVING для фильтрации только тех отделов, в которых работает более 5 сотрудников. Поскольку ни в одном отделе не работает более 5 сотрудников, этот запрос вернет пустой набор.
ЗАКАЗАТЬ ПО
Предложение ORDER BY используется для сортировки данных на основе определенного столбца. Он часто используется в сочетании с оператором SELECT для получения данных в определенном порядке. Предложение ORDER BY имеет следующий синтаксис:
ВЫБЕРИТЕ столбец1, столбец2 ИЗ table_name ORDER BY column1 ASC/DESC;
Например, если вы хотите выбрать столбцы «имя» и «возраст» из таблицы «сотрудники» и отсортировать их по возрасту в порядке убывания, запрос будет таким:
ВЫБЕРИТЕ имя, возраст ОТ сотрудников ORDER BY age DESC;
Этот запрос выбирает столбцы имени и возраста из таблицы сотрудников и упорядочивает строки по возрасту в порядке убывания. Результат будет таким:
| ИМЯ | ВОЗРАСТ | |----|----| | Адити | 45 | | Друвин | 40 | | Шубханги | 35 | | Вайшнави | 30 | | Абхинав | 25 |
ВСТАВИТЬ
Инструкция INSERT используется для вставки новых данных в таблицу. Оператор INSERT имеет следующий синтаксис:
ВСТАВИТЬ В имя_таблицы (столбец1, столбец2, столбец3) ЗНАЧЕНИЯ (значение1, значение2, значение3);
Например, если вы хотите вставить нового сотрудника в таблицу «Сотрудники» с именем «Джон Смит», возрастом 30 лет и зарплатой 50 000 долларов США, запрос будет таким:
ВСТАВЬТЕ В ЦЕННОСТИ сотрудников (имя, возраст, отдел) («Рахул Ганди», 30 лет, PR);
Выводом запроса будет вставка новой строки в таблицу сотрудников со следующими значениями:
| Идентификатор | ИМЯ | ВОЗРАСТ | ОТДЕЛ | |----|----|----|----| | 6 | Рахул | 30 | PR |
Оператор INSERT INTO используется для добавления новой строки в таблицу сотрудников.
Вставляемые значения указываются в предложении VALUES в том порядке, в котором они соответствуют столбцам в таблице. В этот запрос вставляются следующие значения: "Рахул Ганди", 30 и "PR" для имени столбца, возраста и отдела.
Идентификатор автоматически увеличивается, поэтому он будет назначен автоматически.
Если синтаксис правильный и указанные столбцы и значения совпадают, этот запрос вставит новую строку в таблицу сотрудников с указанными значениями.
ОБНОВЛЕНИЕ
Инструкция UPDATE используется для изменения существующих данных в таблице. Оператор UPDATE имеет следующий синтаксис:
UPDATE имя_таблицы SET столбец1 = значение1, столбец2 = значение2 ГДЕ условие;
Например, если вы хотите обновить возраст всех сотрудников в таблице «сотрудники», у которых есть отдел «ИТ», до 18, запрос будет таким:
ОБНОВИТЬ возраст сотрудников SET = 18, ГДЕ отдел = "ИТ";
Этот запрос обновит возраст всех сотрудников в отделе "ИТ" до 18 лет. Запрос на обновление может быть полезен в таких ситуациях, как установка оклада группы сотрудников на определенное значение.
УДАЛИТЬ
Инструкция DELETE используется для удаления существующих данных в таблице. Оператор DELETE имеет следующий синтаксис:
УДАЛИТЬ ИЗ столбца
ГДЕ условие;
н
Например,
УДАЛИТЬ ОТ сотрудников
ГДЕ отдел = 'ИТ';
Этот запрос удалит все строки из таблицы сотрудников, где отделом является «ИТ». Важно использовать предложение WHERE в запросе DELETE, чтобы предотвратить случайное удаление всех строк в таблице.
Расширенный запрос: ТРИГГЕРЫ
Триггеры — это особые типы хранимых процедур, которые автоматически выполняются в ответ на определенные события в определенной таблице или представлении в базе данных. Триггеры можно использовать для обеспечения целостности данных, обеспечения согласованности данных или аудита изменений в данных.
Триггеры определяются с помощью оператора CREATE TRIGGER и указывают событие, которое запускает выполнение триггера, например операторы INSERT, UPDATE или DELETE для конкретной таблицы, а также действия, которые будут выполняться при выполнении триггера. .
Например, можно создать триггер для автоматического обновления поля «updated_at» таблицы при каждом изменении данных в таблице. Синтаксис этого триггера будет примерно таким:
СОЗДАТЬ ТРИГГЕР update_date
ПОСЛЕ ОБНОВЛЕНИЯ СОТРУДНИКОВ
ДЛЯ КАЖДОЙ СТРОКИ
НАЧАЛО
ОБНОВИТЬ сотрудников
SET updated_at = CURRENT_TIMESTAMP
ГДЕ id = OLD.id;
КОНЕЦ;
В этом примере триггер называется «update_date», и он настроен на срабатывание после оператора обновления в таблице «employees». Предложение FOR EACH ROW указывает, что триггер должен срабатывать один раз для каждой строки, затронутой оператором обновления.
Ключевые слова "BEGIN" и "END" определяют тело триггера, которое содержит инструкцию, обновляющую поле "updated_at" текущей меткой времени.
Триггеры также можно использовать для обеспечения ссылочной целостности путем каскадного обновления или удаления связанных таблиц или для предотвращения выполнения определенных действий, если определенные условия не выполняются.
Важно иметь в виду, что триггеры могут оказывать значительное влияние на производительность, особенно если они написаны или используются неправильно. Их следует использовать с осторожностью и только в случае крайней необходимости.
Заключение
В этой статье мы обсудили различные запросы в SQL, которые обычно используются в области науки о данных.
* SQL — это мощный язык для управления и запросов к реляционным базам данных. * SELECT, INSERT, UPDATE и DELETE — это основные команды SQL для чтения и изменения данных в базе данных. * Агрегированные функции, предложения JOIN и GROUP BY позволяют выполнять расширенные операции с данными и их анализ. * Триггеры можно использовать для автоматического выполнения определенных действий в ответ на определенные события в базе данных. * Эти команды и функции SQL предоставляют широкий спектр инструментов для эффективной работы и понимания данных в базе данных. * Хорошее понимание SQL может значительно помочь в анализе данных и задачах управления. * SQL может использоваться для реализации операций CRUD в базе данных и позволяет разработчику выполнять сложные операции с данными и их анализ.
Оригинал