🐬 ТОП-10 самых часто используемых запросов MySQL

Из этой статьи вы узнаете о 10 наиболее часто используемых запросах в MySQL, которыми пользуются новички и эксперты в области управления базами данных.

Данная статья является переводом. Ссылка на оригинал.

Обычно запросы в MySQL пишутся один раз в теле функции класса, чтобы свести к минимуму повторение кода. Запрос позволяет получить информацию из таблицы базы данных или комбинации таблиц.

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

На примере демонстрационных баз данных рассмотрим, как работает каждый запрос.

EmployeeID Name Title
1002 Webster W. Executive
1003 Lizzy S. Manager
1004 Oliver T. Software Engineer
EmployeeID Department Age
1002 HR 36
1003 Sales 21
1004 IT 39

1. SELECT All

Простой запрос SELECT используется для получения и отправки всех данных из базы данных. Его синтаксис:

SELECT *
FROM Employees;

Результат:

1002       Webster W.     Executive
1003       Lizzy S.       Manager
1004       Oliver T.      Software Engineer

Чтобы выбрать все столбцы, имеющиеся в таблице, вы должны использовать *. Так вы покажите, что вам нужна вся возможная возвращаемая информация. Также укажите ключевое слово FROM, чтобы получить данные из таблицы базы данных. Никогда не забывайте заканчивать выражение точкой с запятой ; для правильного оформления запроса.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

2. SELECT

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

Код:

SELECT Title
FROM Employees;

Результат:

Title
Executive
Manager
Software Engineer

При выборе нескольких столбцов из базы данных, они должны быть разделены запятой. Вот так:

SELECT Title, Name
FROM Employees;

3. WHERE

При использовании WHERE в запросе SELECT записи данных будут фильтроваться, а в качестве результата извлекаться записи, соответствующие условию (условиям).

Код:

SELECT *
FROM Employees
WHERE EmployeeID = 1004 ;

Результаты:

1004       Oliver T.          Software Engineer

В предложении WHERE может быть несколько условий, которые можно разделить с помощью ключевого слова AND.

4. CREATE

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

Код:

CREATE TABLE EmployeeInfo (

EmployeeId INT,
Department VARCHAR(25),
Age NUMBER

);

Ожидаемые результаты таблицы:

EmployeeID Department Department
NULL NULL NULL

После того как вы выполните команду CREATE TABLE и заполните ее заголовками столбцов, приведенный выше запрос создаст в базе данных таблицу EmployeeInfo. Каждый столбец вернет NULL, потому что мы не вставили какое-либо конкретное значение. Это приводит нас к следующему запросу INSERT INTO.

5. INSERT INTO

Это наиболее распространенный запрос для вставки значений в одну или несколько строк новых записей в таблице. Мы можем заполнить таблицу EmployeeInfo некоторыми примерами данных:

Код:

INSERT INTO EmployeeInfo (EmployeeID,Department,Age)
VALUES 
(1002, HR , 46),
(1003, Finance , 28),
(1004, IT , 39);

Результаты таблицы:

EmployeeInfo

EmployeeID Department Age
1002 HR 46
1003 Finance 28
1004 IT 39

В запросе INSERT INTO команда VALUES должна быть частью полного оператора.

6. UPDATE

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

EmployeeInfo

EmployeeID Department Age
1002 HR 36
1003 Sales 21
1004 IT 39

Код:

UPDATE EmployeeInfo
SET Age = 22
WHERE EmployeeID = 1003;

Результаты таблицы:

EmployeeInfo

EmployeeID Department Age
1002 HR 36
1003 Sales 22
1004 IT 39

После команды UPDATE используйте ключевое слово SET, чтобы указать, какие столбцы вы хотите изменить, и ГДЕ вам нужно применить обновленные данные.

7. DELETE FROM

Чтобы удалить записи из таблицы на основе одного или нескольких условий, вам потребуется использовать оператор DELETE FROM. При использовании условий он ограничивает количество строк, на которые влияет запрос.

Код:

DELETE FROM Employees
WHERE Name = ‘Lizzy’;

Результаты таблицы:

Employees

EmployeeID Name Title
1002 Webster W. Executive
1004 Oliver T. Software Engineer

Как уже говорилось в статье, использование условия WHERE определяет, где именно вы запрашиваете данные для фильтрации и выполнения. Этот запрос должен удалить каждую запись из таблицы сотрудников, которая соответствует имени Lizzy.

8. Использование GROUP BY, HAVING

GROUP BY в основном всегда используется с агрегатными функциями. Использование данного ключевого слова сгруппирует набор результатов по одному или нескольким столбцам.

Ключевое слово HAVING используется для фильтрации этого набора результатов. В идеале вы могли бы подумать, что вместо этого следует использовать предложение WHERE, однако предложение HAVING вводит условие для агрегации.

EmployeeInfo

EmployeeID Department Age
1002 HR 36
1003 Sales 21
1004 IT 39

Код:

SELECT COUNT(Age), EmployeeID
FROM EmployeeInfo
GROUP BY EmployeeID
HAVING COUNT(Age) > 21;

Результаты:

COUNT(Age)  EmployeeID
39   1004
36   1002  

9. Агрегатные функции (SUM, AVG и COUNT)

Существуют три распространенные агрегатные функции, которые позволяют интерпретировать данные из таблицы или выполнять вычисления.

  1. COUNT: возвращает количество строк, соответствующих указанному столбцу.
  2. AVG: возвращает среднее значение столбца.
  3. SUM: возвращает сумму всех значений в выбранном столбце.

EmployeeInfo

EmployeeID Department Age
1002 HR 36
1003 Sales 21
1004 IT 39

Код для COUNT:

SELECT 
COUNT(Department)
FROM EmployeeInfo;

Результаты:

COUNT(Department):
3

Код для AVG:

SELECT AVG(Age)
FROM EmployeeInfo;

Результаты:

AVG(Age):
32

Код для SUM:

SELECT SUM(Age)
FROM EmployeeInfo;

Результаты:

SUM(Age):
96

10. JOIN

JOIN используется для объединения строк как минимум из двух таблиц на основе связанного столбца между таблицами. Наиболее распространенными соединениями являются INNER, FULL и LEFT.

  • INNER Join – объединяет строки из разных таблиц, если условие соединения истинно.
  • FULL Join — возвращает все строки, если есть совпадение в левой или правой записях таблицы.
  • LEFT Join — извлекает все строки из левой таблицы и соответствующие записи из правой таблицы.

Employees — Таблица №1 (слева)

EmployeeID Name Title
1002 Webster W. Executive
1003 Lizzy S. Manager
1004 Oliver T. Software Engineer

EmployeeInfo — таблица № 2 (справа)

EmployeeID Department Age
1002 HR 36
1003 Sales 21
1004 IT 39

INNER JOIN код:

SELECT Employees.Title, EmployeeInfo.Department
FROM Employees 
INNER JOIN EmployeeInfo 
ON Employees.EmployeeID = Employees.EmployeeID;

Результаты:

Title          Department
Executive      HR     
Manager        Sales     
Software       Engineer  IT

FULL JOIN код:

SELECT * 
FROM Employees  
FULL JOIN EmployeeInfo  
ON Employees.EmployeeID = Employees.EmployeeID;

Результаты:

Будет захватывать все строки и столбцы из обеих таблиц, включая дубликаты, и объединять их в одну целую таблицу.

LEFT JOIN код:

SELECT Employees.Name, EmployeeInfo.Age
FROM Employees  
LEFT JOIN EmployeeInfo  
ON Employees.EmployeeID = Employees.EmployeeID;

Результаты:

Name              Age
Webster W.        36    
Lizzy S.          21   
Oliver T.         39

Столбец EmployeeID в таблице Employee ссылается на EmployeeID в таблице EmployeeInfo. По сути, столбец EmployeeID является связью между обеими таблицами. Джойны могут оказаться сложными, но в то же время чрезвычайно полезными при работе с большой базой данных.

***

Материалы по теме

Источники

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

eFusion
08 января 2020

11 типов современных баз данных: краткие описания, схемы и примеры БД

Любые данные где-то хранятся. Будь это интернет вещей или пароли в *nix. По...
admin
23 февраля 2017

SQL за 20 минут

Предлагаем вашему вниманию статью с кричащим названием "SQL за 20 минут". К...