Условие WHERE в операторе SELECT используется для фильтрации данных, которые оператор извлекает из таблицы. WHERE содержит условие поиска, применяемое оператором в качестве фильтра. Именно это условие поиска обеспечивает механизм, необходимый для выбора только требуемых строк или для удаления ненужных. СУБД применяет это условие поиска к каждой строке в логической таблице, определенной условием FROM.
Условие поиска содержит один или более предикатов, каждый из которых является выражением, которое тестирует одно или несколько типизированных выражений и возвращает в ответе True, False или Unknown. Несколько предикатов можно объединять в условие поиска, используя булевы операторы AND или OR. Когда условие поиска оказывается равным True для конкретной строки, эта строка будет присутствовать в окончательном наборе результата. Когда условие поиска содержит только один предикат, термины “условие поиска” и “предикат” являются синонимами.
Типизированное выражение может содержать имена столбца, значения литерала, функции или другие типизированные выражения. При построении предиката обычно включается по крайней мере одно типизированное выражение, которое указывает столбец из таблиц, определенных в условии FROM.
Самый простой и, возможно, наиболее распространенный предикат сравнивает одно типизированное выражение (столбец) с другим (литерал). Например, если нужны только те строки из таблицы Customers, в которых значение столбца фамилии клиента — “Smith”, то записывается предикат, который сравнивает столбец фамилии со значением литерала “Smith”.
SELECT CustLastName FROM Customers
WHERE CustLastName = ‘Smith’
Предикат в условии WHERE эквивалентен обращению с вопросом к каждой строке в таблице Customers: “Совпадает ли фамилия клиента со ’’Smith"?" Когда ответ положительный (True) для произвольной строки в таблице Customers, эта строка появляется в наборе результатов.