stringtranslate.com

Где (SQL)

Предложение WHEREв SQL указывает, что оператор языка манипулирования данными SQL (DML) должен влиять только на строки , соответствующие указанным критериям. Критерии выражаются в виде предикатов. WHEREПредложения не являются обязательными предложениями операторов SQL DML, но могут использоваться для ограничения количества строк, на которые влияет оператор SQL DML или возвращаемых запросом. Вкратце, предложение SQL WHERE используется для извлечения только тех результатов из оператора SQL, например: SELECT, INSERT, UPDATEили DELETEоператор. [1]

Обзор

WHEREявляется зарезервированным словом SQL .

Это WHEREпредложение используется вместе с операторами SQL DML и принимает следующую общую форму:

SQL DML Оператор FROM table_name WHERE, предикат   

все строки, для которых предикат в предложении WHEREимеет значение True, затрагиваются (или возвращаются) оператором или запросом SQL DML. Строки, для которых предикат имеет значение False или Unknown ( NULL ), не затрагиваются оператором или запросом DML.

Следующий запрос возвращает только те строки из таблицы mytable , где значение в столбце mycol больше 100.

ВЫБРАТЬ * ИЗ mytable ГДЕ mycol > 100     

Следующий DELETEоператор удаляет из таблицы mytable только те строки , в которых столбец mycol имеет значение NULL или значение, равное 100.

УДАЛИТЬ ИЗ mytable , ГДЕ mycol НУЛЕВОЙ ИЛИ mycol = 100        

Предикаты

Простые предикаты используют один из операторов =, <>, >, >=, <, <=, , , или IN.BETWEENLIKEIS NULLIS NOT NULL

При желании предикаты можно заключать в круглые скобки. Ключевые слова ANDи ORможно использовать для объединения двух предикатов в новый. Если применяется несколько комбинаций, для группировки комбинаций можно использовать круглые скобки, чтобы указать порядок оценки. Без круглых скобок ANDоператор имеет более сильную привязку, чем OR.

В следующем примере удаляются строки из mytable , где значение mycol больше 100, а значение item равно строковому литералу Hammer:

УДАЛИТЬ ИЗ mytable ГДЕ mycol > 100 И item = 'Hammer'        

В

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

ВЫБЕРИТЕ ename ГДЕ ename IN ( «Монреаль» , «Квебек» )      

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

ВЫБЕРИТЕ ename WHERE ename = 'value1' ИЛИ ​​ename = 'value2'     

за исключением того, что последний может позволить сравнивать несколько столбцов, чего INнет в каждом предложении. Для большего числа кандидатов INменее многословен.

МЕЖДУ

BETWEENнайдет любые значения в пределах диапазона.

ВЫБЕРИТЕ ename ГДЕ ename МЕЖДУ «значением1» И «значением2»       
ВЫБЕРИТЕ зарплату из emp ГДЕ зарплата МЕЖДУ 5000 ДО 10000         

Все строки соответствуют предикату, если их значение находится между значениями «значение1» и «значение2» включительно.

НРАВИТЬСЯ

LIKEнайдет строку, соответствующую определенному описанию.

Предикат LIKE обычно выполняет поиск без обычного повышения производительности индексов. Вместо этого использование '=', '<>' и т. д. повысит производительность. Чувствительность к регистру (например, «S» или «s») может различаться в зависимости от продукта или конфигурации базы данных.

ПОХОЖИЙ НА

Он используется в PostgresSQL , который поддерживает регулярные выражения со следующим синтаксисом: [3]

строка [ НЕ ] ПОХОЖЕ НА шаблон [ ESCAPE escape - символ ]      

Он работает аналогично оператору LIKE, упомянутому выше.

Рекомендации

  1. ^ «Предложение SQL WHERE – что должны знать новички» .
  2. ^ Microsoft Technet , дата обращения 21 ноября 2013 г.
  3. ^ «9.7. Сопоставление с образцом» . Документация PostgreSQL . 11 мая 2023 г. Проверено 10 июня 2023 г.

Внешние ссылки