Условие where в sql запросе

Изучаем SQL

  • 1. Введение в SQL
  • 2. Запросы на выборку
  • 3. Условия в запросах
  • 4. Cортировка данных
  • 5. Вставка записи
  • 6. Вставка нескольких записей
  • 7. Изменение записи

Условия позволяют указать какие строки таблицы нужно вывести в результате выполнения запроса. Задаются они после указания необходимых столбцов и таблиц командой WHERE.

Условие на выборку добавляется при составлении большинства запросов. Они позволяют отсеять не нужные строки, путем указания тех или иных параметров отбора. В результате можно из больших таблиц быстро выбрать необходимые строки. Именно это и была основная задумка при создании языка запросов для БД.

Таблицу для примеров используем ту же, что и в предыдущей главе:

num
(номер товара)
title
(название)
price
(цена)
1 Чайник 300
2 Чашка 100
3 Ложка 25
4 Тарелка 100

Пример. Чтобы выбрать товыры стоимостью 100 рублей, нужно задать условие:

SELECT * FROM goods WHERE price = 100

Здесь, раздел SELECT и FROM указывают, какие столбцы из каких таблиц выводить.

WHERE – команда указывающая, что задается условие выбора.

price = 100 – критерий выбора строк.

Такой запрос отбросит все строки, не удовлетворяющие условию. В результате будет получен следующий набор данных:

num title price
2 Чашка 100
4 Тарелка 100

Таким же образом можно использовать другие условные операторы для разных столбцов. Например, номер товара должен быть меньше 3:

SELECT * FROM goods WHERE num 3

Цена товара от 100 рублей:

SELECT * FROM goods WHERE price >= 100

Оператор Значение
= равенство
> больше
= больше либо равно
SELECT * FROM goods WHERE num > 2 AND price 100

Здесь, команда AND – это логический оператор И, который указывает что должны быть выбраны строки, где верно первое условие И так же верно второе условие. Под эти условия попадает только одна строка из таблицы.

Читайте также:  Тип лицензии retail что это
num title price
3 Ложка 25

Кроме, логического оператора И (AND), существуют еще ИЛИ (OR) и НЕ (NOT). OR указывает, что должно быть верно или первое условие или второе.

SELECT * FROM goods WHERE num > 2 OR price > 100

Под такие условия попадает следующие строки:

num title price
1 Чайник 300
3 Ложка 25
4 Тарелка 100

Товар под номером 1 удовлетворяет условию price > 100, товары номер 3 и 4 – условию num > 2. В таком случае, если хотя бы одно из условий верно, строка таблицы будет включена в результат запроса.

Оператор NOT добавляет отрицание в условие:

SELECT * FROM goods WHERE NOT num > 2

Такое условие означает, что нужно выбрать строки, где условие не верно.

num title price
1 Чайник 300
2 Чашка 100

NOT в отличие от AND и OR, располагается не между двух других условий, а является отрицанием того условия, перед которым он установлен.

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

В следующей главе рассматривается сортировка данных в запросах.

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

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

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

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

SELECT * FROM Sumproduct WHERE Product = ‘Bikes’

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

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

SELECT * FROM Sumproduct WHERE Amount > 40000 ORDER BY Amount

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

Читайте также:  Таблица с оценками учеников

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

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

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

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

SELECT * FROM Sumproduct WHERE Amount BETWEEN 1000 AND 2000

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

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

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

SELECT * FROM Sumproduct WHERE Amount IS NULL

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

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

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

SELECT * FROM Sumproduct WHERE Amount > 40000 AND City = ‘Toronto’

SELECT * FROM Sumproduct WHERE Month= ‘April’ OR Month= ‘March’

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

SELECT * FROM Sumproduct WHERE Product = ‘Bikes’ OR Product = ‘Skates’ AND Month= ‘March’

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

Читайте также:  Уход за ребенком на андроид

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

SELECT * FROM Sumproduct WHERE (Product = ‘Bikes’ OR Product = ‘Skates’) AND Month= ‘March’

5. Расширенная фильтрация (оператор IN).

SELECT * FROM Sumproduct WHERE >IN (4, 12, 58, 67)

Оператор IN выполняет ту же функцию, что и OR, однако имеет ряд преимуществ:

  • При работе с длинными списками, предложение с IN легче читать;
  • Используется меньшее количество операторов, что ускоряет обработку запроса;
  • Самое важное преимущество IN в том, что в его конструкции можно использовать дополнительную конструкцию SELECT, что открывает большие возможности для создания сложных подзапросов.

6. Расширенная фильтрация (оператор NOT).

SELECT * FROM Sumproduct WHERE NOT City IN (‘Toronto’, ‘Montreal’)

Ключевое слово NOT позволяет убрать ненужные значения из выборки. Также его особенностью является то, что оно проставляется перед названием столбца, участвующего в фильтровании, а не после.

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

Синтаксис WHERE

Пример предложения WHERE

Следующий оператор SQL выбирает всех пользователей с именем «name» в таблице «users»:

Пример:

Текстовые и числовые поля

SQL требует одинарных кавычек вокруг текстовых значений (большинство систем баз данных также допускают двойные кавычки). Однако числовые поля не должны быть заключены в кавычки. Например, нужно выбрать пользователей у которых баланс «balance» в таблице «users» равен 500

Пример:

Операторы в разделе WHERE

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

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

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