English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать 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уникальны для каждого сотрудника.
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 |