Эта статья требует дополнительных ссылок для проверки . ( сентябрь 2014 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Предложение 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 имя_таблицы WHERE предикат
все строки, для которых предикат в WHERE
предложении имеет значение True, затрагиваются (или возвращаются) оператором или запросом SQL DML. Строки, для которых предикат оценивается как False или Unknown ( NULL ), не затрагиваются оператором или запросом DML.
Следующий запрос возвращает только те строки из таблицы mytable, где значение в столбце mycol больше 100.
ВЫБРАТЬ * FROM туЬаОго WHERE Mycol > 100
Следующая DELETE
инструкция удаляет из таблицы mytable только те строки, в которых столбец mycol либо равен NULL, либо имеет значение, равное 100.
УДАЛИТЬ ИЗ туЬаЫе ГДЕ Mycol IS NULL ИЛИ Mycol = 100
Предикаты [ править ]
Простые предикаты использовать один из операторов =
, <>
, >
, >=
, <
, <=
, IN
, BETWEEN
, LIKE
, IS NULL
или IS NOT NULL
.
При желании предикаты можно заключить в круглые скобки. Ключевые слова AND
и OR
могут использоваться для объединения двух предикатов в новый. Если применяется несколько комбинаций, можно использовать круглые скобки для группировки комбинаций, чтобы указать порядок оценки. Без круглых скобок AND
оператор имеет более сильную привязку, чем OR
.
В следующем примере удаляются строки из mytable, где значение mycol больше 100, а значение item равно строковому литералу Hammer:
УДАЛИТЬ ИЗ туЬаЫе ГДЕ Mycol > 100 и пункт = «Молот»
IN [ править ]
IN
найдет любые значения, существующие в наборе кандидатов.
ВЫБЕРИТЕ эмаль, ГДЕ эмаль В ( 'Монреаль' , 'Квебек' )
Все строки соответствуют предикату, если их значение является одним из возможных наборов значений. Это то же поведение, что и
ВЫБЕРИТЕ ename WHERE ename = 'value1' OR ename = 'value2'
за исключением того, что последний может позволить сравнение нескольких столбцов, чего нет в каждом IN
предложении. Для большего числа кандидатов IN
менее подробный.
МЕЖДУ [ править ]
BETWEEN
найдет любые значения в пределах диапазона.
ВЫБЕРИТЕ ename WHERE ename МЕЖДУ 'значением1' И 'значением2'
ВЫБРАТЬ зарплату от ого КУДА зарплат МЕЖДУ 5000 И 10000
Все строки соответствуют предикату, если их значение находится в диапазоне от «значение1» до «значение2» включительно.
НРАВИТСЯ [ редактировать ]
LIKE
найдет строку, соответствующую определенному описанию.
- Конечный подстановочный знак
- Найдите любую строку, которая начинается с буквы "S"
ВЫБЕРИТЕ ename FROM emp WHERE ename LIKE 'S%' ;
- Найдите любую строку, которая начинается с буквы "S"
- Ведущий подстановочный знак
- Найдите любую строку, которая заканчивается буквой S
ВЫБЕРИТЕ ename FROM emp WHERE ename LIKE '% S' ;
- Найдите любую строку, которая заканчивается буквой S
- Множественные подстановочные знаки
- Найдите любую строку, содержащую в любом месте букву "S"
ВЫБЕРИТЕ ename FROM emp WHERE ename LIKE '% S%' ;
- Найдите любую строку, содержащую в любом месте букву "S"
- Подстановочный знак из одного символа
- Найдите любую строку, содержащую букву 'A', за которой следует любой одиночный символ, за которым следует буква 'E'
ВЫБРАТЬ ename FROM emp WHERE ename LIKE '% A_E%' ;
- Найдите любую строку, содержащую букву 'A', за которой следует любой одиночный символ, за которым следует буква 'E'
- Классы персонажей [2]
- Найдите любую строку, которая начинается с буквы, цифры или символа '_'
ВЫБЕРИТЕ ename ИЗ emp ГДЕ ename LIKE '[a-zA-Z0-9 _]%' ;
- Найдите любую строку, которая начинается с буквы, цифры или символа '_'
Программисты SQL должны знать, что предикат LIKE обычно выполняет поиск без обычного повышения производительности индексов. Использование '=', '<>' и т. Д. Вместо этого повысит производительность. Пользователи предиката LIKE должны знать, что чувствительность к регистру (например, «S» по сравнению с «s») может быть разной в зависимости от продукта или конфигурации базы данных.
Ссылки [ править ]
- ^ «Предложение SQL WHERE - вещи, которые должны знать новички» .
- ^ Microsoft Technet, последнее обращение 21 ноября 2013 г.
Внешние ссылки [ править ]
- PSOUG Home Puget Sound Группа пользователей Oracle приводит несколько примеров операторов SELECT с предложениями WHERE.