Что такое where в sql
Перейти к содержимому

Что такое where в sql

  • автор:

Предложение WHERE (Transact-SQL)

Определяет условия поиска строк, возвращаемых запросом.

Синтаксис

[ WHERE ] 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

search_condition> Определяет условия, которые должны быть выполнены для всех возвращаемых строк. Количество предикатов, которое может содержать условие поиска, не ограничено. Дополнительные сведения об условиях поиска и предикатах см. в статье Условие поиска (Transact-SQL).

Примеры

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

А. Нахождение строки с помощью простого равенства

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE LastName = 'Smith' ; 

B. Нахождение строк, содержащих значение как часть строки

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE LastName LIKE ('%Smi%'); 

C. Нахождение строк с использованием оператора сравнения

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE EmployeeKey  

D. Нахождение строк, удовлетворяющих любому из трех условий

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE EmployeeKey = 1 OR EmployeeKey = 8 OR EmployeeKey = 12; 

Д. Нахождение строк, которые должны удовлетворять нескольким условиям

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE EmployeeKey  

F. Нахождение строк, находящихся в списке значений

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE LastName IN ('Smith', 'Godfrey', 'Johnson'); 

G. Нахождение строк, содержащих значение, расположенное между двумя значениями

-- Uses AdventureWorksDW SELECT EmployeeKey, LastName FROM DimEmployee WHERE EmployeeKey Between 100 AND 200; 

Оператор SQL WHERE

Оператор SQL WHERE служит для задания дополнительного условия выборки, операций вставки, редактирования и удаления записей.

Оператор SQL WHERE имеет следующий синтаксис:

WHERE condition

Условие (condition) может включать в себя предикаты AND, OR, NOT, LIKE, BETWEEN, IS, IN, ключевое слово NULL, операторы сравнения и равенства (, =).

Примеры оператора SQL WHERE. Имеется следующая таблица Planets :

ID PlanetName Radius SunSeason OpeningYear HavingRings Opener
1 Mars 3396 687 1659 No Christiaan Huygens
2 Saturn 60268 10759.22 Yes
3 Neptune 24764 60190 1846 Yes John Couch Adams
4 Mercury 2439 115.88 1631 No Nicolaus Copernicus
5 Venus 6051 243 1610 No Galileo Galilei

Пример 1. Используя оператор SQL WHERE вывести записи, значение радиуса (Radius) которых находится в пределах от 3000 до 9000:

SELECT * FROM Planets WHERE Radius BETWEEN 3000 AND 9000
ID PlanetName Radius SunSeason OpeningYear HavingRings Opener
1 Mars 3396 687 1659 No Christiaan Huygens
5 Venus 6051 243 1610 No Galileo Galilei

Пример 2. Используя оператор SQL WHERE вывести название планеты (PlanetName), год ее открытия (OpeningYear) и имя первооткрывателя (Opener), планет, чье название не начинается или не заканчивается на букву «s»:

SELECT PlanetName, OpeningYear, Opener FROM Planets WHERE PlanetName NOT LIKE '%s' AND PlanetName NOT LIKE 'S%'
PlanetName OpeningYear Opener
Neptune 1846 John Couch Adams
Mercury 1631 Nicolaus Copernicus

SQL-Урок 4. Фильтрация данных (WHERE)

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

1. Простая фильтрация оператором WHERE.

Давайте из нашей таблицы, например, отберем записи, относящиеся только к определенному товару. Для этого мы укажем дополнительный параметр отбора, который будет фильтровать значение по колонке Product.

Пример запроса для отбора текстовых значений:

Run SQLSELECT * FROM Sumproduct WHERE Product = 'Bikes' 

Try it Yourself

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

Пример запроса для отбора числовых значений:

Run SQLSELECT * FROM Sumproduct WHERE Amount > 40000 ORDER BY Amount 

Try it Yourself

В этом примере мы отобрали записи, в которых выручка от реализации составляла более 40 тыс.$ и, вдобавок, все записи рассортировали по росту по полю Amount.

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

Знак операции Значение
= Равняется
<> Не равно
Больше
>= Большее или ровное
BETWEEN Между двумя значениями
IS NULL Отсутствует запись

2. Фильтрация по диапазону значений (BETWEEN)

Для отбора данных, лежащих в определенном диапазоне, используется оператор BETWEEN. В следующем запросе будут отобраны все значения, лежащие в пределах от $1000 до $2000 включительно, в поле Amount.

Run SQLSELECT * FROM Sumproduct WHERE Amount BETWEEN 1000 AND 2000 

Try it Yourself

Очередность сортировки будет зависеть от порядка расположения полей в запросе. То есть, в нашем случае сначала данные будут рассортированы по колонке Amount, а затем по City.

3. Выборка пустых записей (IS NULL)

В SQL существует специальный оператор для выборки пустых записей (называется NULL). Пустой записью считается любая ячейка в таблице, в которую не введен ни один символ. Если в ячейку введено 0 или пробел, то считается, что поле заполнено.

SELECT * FROM Sumproduct WHERE Amount IS NULL 

В примере выше мы умышленно удалили два значения в поле Amount, чтобы продемонстрировать работу оператора NULL.

4. Расширенная фильтрация (AND, OR)

Язык SQL не ограничивается фильтрацией по одному условию, для собственных целей вы можете использовать достаточно сложные конструкции для выборки данных одновременно по многим критериям. Для этого в SQL есть дополнительные операторы, расширяющие возможности оператора WHERE. Такими операторами являются: AND, OR, IN, NOT. Приведем несколько примеров работы данных операторов.

Run SQLSELECT * FROM Sumproduct WHERE Amount > 40000 AND City = 'Toronto' 

Try it Yourself

Run SQLSELECT * FROM Sumproduct WHERE Month = 'April' OR Month = 'March' 

Try it Yourself

Давайте объединим операторы AND и OR. Для этого произведем выборку велосипедов (Bikes) и коньков (Skates), проданных в марте (March).

Run SQLSELECT * FROM Sumproduct WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March' 

Try it Yourself

Видим, что в нашу выборку попало много значений (кроме марта (March), также январь (January), февраль (February) и апрель (April)). В чем причина? А в том, что SQL имеет приоритеты выполнения команд. То есть оператор AND имеет более приоритет, чем оператор OR, поэтому сначала были отобраны записи с коньками, проданными в марте, а затем все записи, касающиеся велосипедов.

Итак, чтобы получить правильную выборку, нам нужно изменить приоритеты выполнения команд. Для этого используем скобки, как в математике. Тогда, сначала будут проработаны операторы в скобках, а затем – все остальные.

Run SQLSELECT * FROM Sumproduct WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March' 

SQL — Условие WHERE

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

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

Синтаксис

Основной синтаксис инструкции SELECT с условием WHERE приведен ниже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *