English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

WHERE-пredложение SQL

В этом руководстве вы узнаете, как использовать SQL для выбора специфических записей из таблицы.

Выбор записей по условиям

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

WHERE-пredложение используется сSELECT,UPDATEиDELETE.Но вы увидите в следующих главах, как использовать это предложение вместе с другими.

Синтаксис

WHERE-пredложение используется вместе с SELECT-запросом, чтобы извлечь только те записи, которые соответствуют заданным условиям.Основной синтаксис можно представить следующим образом:

SELECT column_list FROM table_name WHERE condition;

Здесь,column_listявляется столбцом/полем базы данных, из которого вы хотите получить значениеНазваниенапримерname,age,countryи т.д. Но если вам нужно получить значения всех доступных столбцов таблицы, вы можете использовать следующий синтаксис:

SELECT * FROM table_name WHERE condition;

Теперь давайте посмотрим на несколько примеров, чтобы продемонстрировать его реальный принцип работы.

Предположим, что у нас в базе данных есть таблица с именемemployeesТаблица, которая содержит следующие записи:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 | NULL |
+--------+--------------+------------+--------+---------+

Следующие SQL команды будут фильтровать записи с использованием WHERE предложенияemployeesВ таблице возвращаются все employee с зарплатой более 7000. WHERE предложение просто фильтрует данные, которые не нужны.

SELECT * FROM employees
WHERE salary > 7000;

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

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Как вы видите, вывод содержит только сотрудников с зарплатой более 7000. Таким образом, вы можете получить записи из определённых столбцов, например:

SELECT emp_id, emp_name, hire_date, salary
FROM employees
WHERE salary > 7000;

После выполнения上面的 команды вы получите следующий вывод:

+--------+--------------+------------+--------+
| emp_id | emp_name     | hire_date  | salary |
+--------+--------------+------------+--------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |
+--------+--------------+------------+--------+

Следующие команды будут получить запись сотрудника с ID сотрудника 2.

SELECT * FROM employees
WHERE emp_id = 2;

Эта команда будет генерировать следующий вывод:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

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

WHERE предложение разрешает операторы

SQL поддерживает множество операторов, которые можно использовать в подзапросе WHERE. В таблице ниже приведен список самых важных операторов.

ОператорОписаниеОнлайн примеры
=РавенствоWHERE id = 2
>Лучше...WHERE age > 30
<МеньшеWHERE age < 18
>=Больше или равноWHERE rating >= 4
<=Меньше или равноWHERE price <= 100
LIKEПростое совпадение шаблоновWHERE name LIKE 'Dav'
INПроверка того, соответствует ли указанное значение любому значению из списка или подзапросаWHERE country IN ('USA', 'UK')
BETWEENПроверка того, находится ли указанное значение в диапазоне значенийWHERE rating BETWEEN 3 AND 5