Обычно запросы в 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)
Существуют три распространенные агрегатные функции, которые позволяют интерпретировать данные из таблицы или выполнять вычисления.
COUNT: возвращает количество строк, соответствующих указанному столбцу.AVG: возвращает среднее значение столбца.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 является связью между обеими таблицами. Джойны могут оказаться сложными, но в то же время чрезвычайно полезными при работе с большой базой данных.
Комментарии