Где (SQL)

редактировать

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

Содержание
  • 1 Обзор
  • 2 Предикаты
    • 2.1 IN
    • 2.2 МЕЖДУ
    • 2.3 КАК
  • 3 Ссылки
  • 4 Внешние ссылки
Обзор

ГДЕ- зарезервированное слово SQL.

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

SQL-DML-Statement FROM table_name WHERE predicate

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

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

SELECT * FROM mytable WHERE mycol>100

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

DELETE FROM mytable WHERE mycol IS NULL OR mycol = 100
Предикаты

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

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

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

DELETE FROM mytable WHERE mycol>100 AND item = 'Hammer'

IN

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

SELECT ename WHERE ename IN ('Montreal', 'Quebec')

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

SELECT ename WHERE ename = 'value1' OR ename = 'value2'

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

BETWEEN

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

SELECT ename WHERE ename BETWEEN 'value1' AND 'value2'
SELECT salary from emp WHERE salary BETWEEN 5000 AND 10000

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

LIKE

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

  • Окончание Подстановочный знак
    • Найдите любую строку, которая начинается с буквы 'S'
      ВЫБРАТЬ ename FROM emp WHERE ename LIKE 'S%';
  • Ведущий подстановочный знак
    • Найдите любую строку, которая заканчивается буквой 'S'
      SELECT ename FROM emp WHERE ename LIKE '% S';
  • Множественные подстановочные знаки
    • Найдите любую строку, содержащую в любом месте букву 'S'
      SELECT ename FROM emp WHERE ename LIKE '% S%';
  • Подстановочный знак из одного символа
    • Найдите любую строку, содержащую букву «A», за которой следует любой отдельный символ, за которым следует буква «E»
      SELECT ename FROM emp WHERE ename LIKE '% A_E % ';
  • Классы символов
    • Найдите любую строку, которая начинается с буквы или цифры или символа '_'
      ВЫБРАТЬ ename FROM emp WHERE ename LIKE '[a-zA-Z0-9_] % ';

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

Ссылки
  1. ^«Предложение SQL WHERE - вещи, которые должны знать новички».
  2. ^Microsoft Technet Дата обращения 21 ноября 2013 г.
Внешние ссылки
Последняя правка сделана 2021-06-20 13:48:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте