Обычно запросы в 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
используется для получения и отправки всех данных из базы данных. Его синтаксис:
Результат:
Чтобы выбрать все столбцы, имеющиеся в таблице, вы должны использовать *
. Так вы покажите, что вам нужна вся возможная возвращаемая информация. Также укажите ключевое слово FROM
, чтобы получить данные из таблицы базы данных. Никогда не забывайте заканчивать выражение точкой с запятой ;
для правильного оформления запроса.
2. SELECT
Чтобы получить данные из определенных столбцов, а не из всех, вы должны просто указать имя поля вместо использования звездочки *
.
Код:
Результат:
При выборе нескольких столбцов из базы данных, они должны быть разделены запятой. Вот так:
3. WHERE
При использовании WHERE
в запросе SELECT
записи данных будут фильтроваться, а в качестве результата извлекаться записи, соответствующие условию (условиям).
Код:
Результаты:
В предложении WHERE
может быть несколько условий, которые можно разделить с помощью ключевого слова AND
.
4. CREATE
Этот запрос можно использовать для создания новой таблицы с определенным набором столбцов. При добавлении имен столбцов обязательно укажите тип данных.
Код:
Ожидаемые результаты таблицы:
EmployeeID | Department | Department |
NULL | NULL | NULL |
После того как вы выполните команду CREATE TABLE
и заполните ее заголовками столбцов, приведенный выше запрос создаст в базе данных таблицу EmployeeInfo
. Каждый столбец вернет NULL
, потому что мы не вставили какое-либо конкретное значение. Это приводит нас к следующему запросу INSERT INTO
.
5. INSERT INTO
Это наиболее распространенный запрос для вставки значений в одну или несколько строк новых записей в таблице. Мы можем заполнить таблицу EmployeeInfo
некоторыми примерами данных:
Код:
Результаты таблицы:
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 |
Код:
Результаты таблицы:
EmployeeInfo
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 22 |
1004 | IT | 39 |
После команды UPDATE
используйте ключевое слово SET
, чтобы указать, какие столбцы вы хотите изменить, и ГДЕ вам нужно применить обновленные данные.
7. DELETE FROM
Чтобы удалить записи из таблицы на основе одного или нескольких условий, вам потребуется использовать оператор DELETE FROM
. При использовании условий он ограничивает количество строк, на которые влияет запрос.
Код:
Результаты таблицы:
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 |
Код:
Результаты:
9. Агрегатные функции (SUM, AVG и COUNT)
Существуют три распространенные агрегатные функции, которые позволяют интерпретировать данные из таблицы или выполнять вычисления.
COUNT
: возвращает количество строк, соответствующих указанному столбцу.AVG
: возвращает среднее значение столбца.SUM
: возвращает сумму всех значений в выбранном столбце.
EmployeeInfo
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 21 |
1004 | IT | 39 |
Код для COUNT
:
Результаты:
Код для AVG
:
Результаты:
Код для SUM
:
Результаты:
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
код:
Результаты:
FULL JOIN
код:
Результаты:
Будет захватывать все строки и столбцы из обеих таблиц, включая дубликаты, и объединять их в одну целую таблицу.
LEFT JOIN
код:
Результаты:
Столбец EmployeeID
в таблице Employee ссылается на EmployeeID
в таблице EmployeeInfo. По сути, столбец EmployeeID является связью между обеими таблицами. Джойны могут оказаться сложными, но в то же время чрезвычайно полезными при работе с большой базой данных.
Комментарии