Условный оператор WHERE

Ситуация, когда требуется сделать выборку по определённому условию, встречается очень часто. Для этого в операторе SELECT существует оператор WHERE, после которого следуют условия для ограничения строк. Если запись удовлетворяет этому условию, то попадает в результат, иначе отбрасывается.

Общая структура запроса с оператором WHERE

MySQL
SELECT [DISTINCT] поля_таблиц FROM наименование_таблицы
WHERE условие_на_ограничение_строк
[логический_оператор другое_условие_на_ограничение_строк];

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

MySQL
SELECT * FROM Student
WHERE first_name = "Grigorij" AND YEAR(birthday) > 2000;
idfirst_namemiddle_namelast_namebirthdayaddress
33GrigorijGennadevichKapustin2001-12-13T00:00:00.000Zul. Pervomajskaya, d. 45, kv. 6
65GrigorijKirillovichKolobov2003-07-17T00:00:00.000Zul. CHernova, d. 9, kv. 34

В нем используются:

  • два оператора сравнения
    first_name = "Grigorij" и YEAR(birthday) > 2000;
  • один логический оператор AND

Как результат, в выборке мы получаем данные студентов, которые имеют имя «Grigorij» и в тоже время чей год рождения больше 2000.

Операторы сравнения

Операторы сравнения служат для сравнения 2 выражений, результатом которого может являться:

  • true (что эквивалентно 1)
  • false (что эквивалентно 0)
  • NULL
ОператорОбозначениеОписание
Равенство=Если оба значения равны, то результат будет равен 1, иначе 0
Эквивалентность<=>Аналогичен оператору равенства, за исключением того, что результат будет равен 1 в случае сравнения NULL с NULL и 0, когда идёт сравнение любого значения с NULL
Неравенство<> или !=Если оба значения не равны, то результат будет равен 1, иначе 0
Меньше<Если одно значение меньше другого, то результат будет равен 1, иначе 0
Меньше или равно<=Если одно значение меньше или равно другому, то результат будет равен 1, иначе 0
Больше>Если одно значение больше другого, то результат будет равен 1, иначе 0
Больше или равно>=Если одно значение больше или равно другому, то результат будет равен 1, иначе 0

Результатом сравнения любого значения с NULL является NULL. Исключением является оператор эквивалентности.

Попробуйте выполнить запрос и самостоятельно поиграться с этими операторами в песочнице:

MySQL
SELECT
    2 = 1,
	'a' = 'a',
	NULL <=> NULL,
	2 <> 2,
	3 < 4,
	10 <= 10,
	7 > 1,
	8 >= 10;
2 = 1'a' = 'a'NULL <=> NULL2 <> 23 < 410 <= 107 > 18 >= 10
01101110

Логические операторы

Логические операторы необходимы для связывания операторов сравнения.

ОператорОписание
NOTМеняет значение оператора сравнения на противоположный
ORВозвращает общее значение выражения истинно, если хотя бы одно из них истинно
ANDВозвращает общее значение выражения истинно, если они оба истинны
XORВозвращает общее значение выражения истинно, если один и только один аргумент является истинным

Давайте для примера выведем все полёты, которые были совершены на самолёте «Boeing», но, при этом, вылет был не из Лондона:

MySQL
SELECT * FROM Trip
WHERE plane = 'Boeing' AND NOT town_from = 'London';