Фильтрация данных. Оператор WHERE

Поділитись

Зачастую необходимо извлекать не все данные из БД, а только те, которые соответствуют определенному условию. Для фильтрации данных в команде SELECT применяется оператор WHERE, после которого указывается условие:

1WHERE условие

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

  • =: сравнение на равенство
  • !=: сравнение на неравенство
  • <>: сравнение на неравенство
  • <: меньше чем
  • >: больше чем
  • <=: меньше чем или равно
  • >=: больше чем или равно

К примеру, выберем всех товары, производителем которых является компания Samsung:

12SELECT * FROM Products
WHERE Manufacturer = 'Samsung';
Оператор WHERE в MySQL

Стоит отметить, что для MySQL не важен регистр символов, и, к примеру, строка «Samsung» будет эквивалентна строке «SAMSUNG» или «sumSunG».

Другой пример — найдем все товары, количество которых меньше 3:

1
2
SELECT * FROM Products
WHERE ProductCount < 3;

Критерий фильтрации может представлять и более сложное составное выражение. Например, найдем все товары, у которых совокупная стоимость больше 100 000:

1
2
SELECT * FROM Products
WHERE Price * ProductCount > 100000;
Фильтрация данных с помощью WHERE в MySQL

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

Логические операторы позволяют объединить несколько условий. В MySQL можно использовать следующие логические операторы:

  • AND: операция логического И. Она объединяет два выражения:1выражение1 AND выражение2Только если оба этих выражения одновременно истинны, то и общее условие оператора AND также будет истинно. То есть если и первое условие истинно, и второе.
  • OR: операция логического ИЛИ. Она также объединяет два выражения:1выражение1 OR выражение2Если хотя бы одно из этих выражений истинно, то общее условие оператора OR также будет истинно. То есть если или первое условие истинно, или второе.
  • NOT: операция логического отрицания. Если выражение в этой операции ложно, то общее условие истинно.1NOT выражение

Например, выберем все товары, у которых производитель Samsung и одновременно цена больше 50000:

1
2
SELECT * FROM Products
WHERE Manufacturer = 'Samsung' AND Price > 50000
Логические операторы в MySQL

Теперь изменим оператор на OR. То есть выберем все товары, у которых либо производитель Samsung, либо цена больше 50000:

1
2
SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Price > 50000
Операторы AND и OR в MySQL

Применение оператора NOT — выберем все товары, у которых производитель не Samsung:

1
2
SELECT * FROM Products
WHERE NOT Manufacturer = 'Samsung';
Оператор NOT в MySQL

Приоритет операций

В одном условии при необходимости мы можем объединять несколько логических операций. Однако следует учитывать, что самой приоритетной операцией, которая выполняется в первую очередь, является NOT, менее приоритетная — AND и операция с наименьшим приоритетом — OR. Например:

1
2
SELECT * FROM Products
WHERE Manufacturer ='Samsung' OR NOT Price > 30000 AND ProductCount > 2;

В данном случае сначала вычисляется выражение NOT Price > 30000, то есть цена должна быть меньше или равна 30000.

Затем вычисляется выражение NOT Price > 30000 AND ProductCount > 2, то есть цена должна быть меньше или равна 30000 и одновременно количество товаров должно быть больше 2.

В конце вычисляется оператор OR — либо цена должна быть меньше или равна 30000 и одновременно количество товаров должно быть больше 2, либо производителем должен быть Samsung.

Приоритет логических операций в MySQL

С помощью скобок можно переопределить приоритет операций:

1
2
SELECT * FROM Products
WHERE Manufacturer ='Samsung' OR NOT (Price > 30000 AND ProductCount > 2);

В данном случае находим товары, у которых либо производитель Samsung, либо одновременно цена товара меньше или равна 30000 и количество товаров меньше 3.

логические операции AND, OR, NOT в MySQL

Поділитись