In в sql: Оператор SQL IN: примеры, синтаксис
Содержание
SQL — выражения — CoderLessons.com
Выражение представляет собой комбинацию одного или нескольких значений, операторов и функций SQL, которые оценивают значение. Эти выражения SQL похожи на формулы и написаны на языке запросов. Вы также можете использовать их для запроса базы данных для определенного набора данных.
Синтаксис
Рассмотрим основной синтаксис оператора SELECT следующим образом:
SELECT column1, column2, columnN FROM table_name WHERE [CONDITION|EXPRESSION];
Существуют различные типы выражений SQL, которые упомянуты ниже:
- логический
- числовой
- Дата
Давайте теперь обсудим каждый из них в деталях.
Логические выражения
Булевы выражения SQL извлекают данные на основе сопоставления одного значения. Ниже приводится синтаксис –
SELECT column1, column2, columnN FROM table_name WHERE SINGLE VALUE MATCHING EXPRESSION;
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
SQL> SELECT * FROM CUSTOMERS; +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000. 00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+ 7 rows in set (0.00 sec)
Следующая таблица представляет собой простой пример, показывающий использование различных логических выражений SQL:
SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 10000; +----+-------+-----+---------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+-------+-----+---------+----------+ | 7 | Muffy | 24 | Indore | 10000.00 | +----+-------+-----+---------+----------+ 1 row in set (0.00 sec)
Числовое выражение
Эти выражения используются для выполнения любой математической операции в любом запросе. Ниже приводится синтаксис –
SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION] ;
Здесь числовое выражение используется для математического выражения или любой формулы. Ниже приведен простой пример использования числовых выражений SQL:
SQL> SELECT (15 + 6) AS ADDITION +----------+ | ADDITION | +----------+ | 21 | +----------+ 1 row in set (0.00 sec)
Существует несколько встроенных функций, таких как avg (), sum (), count () и т. Д., Которые выполняют так называемые вычисления совокупных данных для таблицы или определенного столбца таблицы.
SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS; +---------+ | RECORDS | +---------+ | 7 | +---------+ 1 row in set (0.00 sec)
Выражения даты
Выражения даты возвращают текущие системные значения даты и времени –
SQL> SELECT CURRENT_TIMESTAMP; +---------------------+ | Current_Timestamp | +---------------------+ | 2009-11-12 06:40:23 | +---------------------+ 1 row in set (0.00 sec)
Другое выражение даты показано ниже:
Использование операторов IN, NOT и LIKE в SQL
SQL становится сложным, когда у вас есть несколько бизнес-правил, которые управляют возвратом наборов записей. Как программист, вы собираете бизнес-правила, которые затем определяют, как структурировать операторы SQL, чтобы гарантировать точность возвращаемых результатов для отчетов и приложений. Эти операторы становятся сложными, когда у вас есть несколько бизнес-требований, которые необходимо использовать для возврата набора данных, который помогает компаниям принимать решения. Некоторые ключевые слова SQL, помогающие создавать сложные операторы, включают IN, NOT и LIKE. LIKE использует подстановочные знаки, которые используются для запроса похожих значений, но IN и NOT возвращают точные наборы записей на основе конкретных значений.
Условие IN
Условие IN позволяет вам установить список значений, которые должны соответствовать значениям в ваших таблицах. Условие IN перечисляет значения в скобках, и это лучше, чем работать с несколькими условиями OR. Вот примерная таблица.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
321 | Фрэнк | Лоэ | Даллас | ТХ |
455 | Эд | Томпсон | Атланта | Г. А. |
456 | Эд | Томпсон | Атланта | Г.А. |
457 | Джо | Смит | Майами | FL |
458 | Фрэнк | Доу | Даллас | ТХ |
Предположим, вы хотите вернуть значения для клиентов, которые находятся только в Атланте и Майами. Вы можете написать оператор ИЛИ, который выглядит следующим образом.
ВЫБЕРИТЕ * ОТ Заказчика
ГДЕ Город = «Майами» ИЛИ Город = «Атланта»
Представьте, что вам нужно найти 10 таких городов. Оператор OR становится длинным и сложным. Вы можете объединить эти операторы ИЛИ в оператор IN. Следующий оператор SQL делает то же самое, что и приведенный выше оператор.
SELECT * FROM Customer
WHERE City IN («Майами», «Атланта»)
Результат обоих операторов одинаков. Следующий результат отображается SQL.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
455 | Эд | Томпсон | Атланта | Г.А. |
456 | Эд | Томпсон | Атланта | Г.А. |
457 | Джо | Смит | Майами | FL |
Пункт НЕ
Вы можете вернуть 1000 записей, но хотите исключить некоторые записи из набора данных. До сих пор мы создавали только операторы SQL, в которые вы хотите включать записи. Иногда вам нужно исключить записи из ваших результатов. Предположим, вы хотите включить записи со значениями городов Атланты и Майами, но хотите исключить записи, в которых имя пользователя — Джо. В SQL есть оператор НЕ, который исключает эти записи, но при этом включает другие, соответствующие исходному запросу IN. Следующий запрос дает вам пример оператора NOT.
ВЫБЕРИТЕ * ОТ Клиента
ГДЕ Город В (‘Майами’, ‘Атланта’) И Имя НЕ В (‘Джо’)
В приведенном выше заявлении говорится: «Дайте мне все записи, которые имеют значения городов Майами и Атланты, но исключают любая из этих записей, в которой есть имя Джо». Результирующий набор записей выглядит следующим образом.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
455 | Эд | Томпсон | Атланта | Г. А. |
456 | Эд | Томпсон | Атланта | Г.А. |
Обратите внимание, что результаты похожи на запрос для оператора IN. Единственное отличие состоит в том, что исключается запись «Джо». Поскольку «Джо» соответствует оператору NOT, он исключен из результатов. Этот оператор основан на логике И. Поскольку используется И, результирующий набор должен соответствовать обоим условиям со значением true, чтобы быть включенным в результаты.
Язык SQL позволяет комбинировать NOT и LIKE для устранения результатов поиска, используя логику того же типа, за исключением того, что записи удаляются из набора данных, а не добавляются. Например, вместо поиска клиентов в городах, названия которых начинаются с «Да», вы можете исключить клиентов, расположенных в этих городах. Следующая инструкция SQL использует ключевое слово NOT с ключевым словом LIKE.
SELECT * FROM Customer
WHERE City NOT LIKE ‘da%’
Результатом являются следующие результаты данных.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
455 | Эд | Томпсон | Атланта | Г.А. |
456 | Эд | Томпсон | Атланта | Г.А. |
457 | Джо | Смит | Майами | FL |
Оператор NOT работает со всеми вашими ключевыми словами SQL, чтобы отрицать результаты. Думайте об операторе NOT как об отменяющей фразе. При использовании оператора IN язык SQL сначала получает все совпадающие значения. В данном случае параметрами являются любые записи, начинающиеся с символов «да». Затем SQL видит оператор NOT и исключает результаты. Вы можете комбинировать оператор NOT с другими фразами.
Например, предположим, что вы хотите получить все записи, начинающиеся с «да», но хотите удалить все записи, начинающиеся с «дал». Следующая инструкция SQL исключит из ваших результатов города «дал».
SELECT * FROM Customer
ГДЕ City LIKE ‘da%’ AND City NOT LIKE ‘dal%’
Обратите внимание на оператор AND в приведенном выше выражении. Если вместо этого вы поместите OR в свое заявление, вы снова получите всех клиентов, находящихся где угодно. С помощью оператора AND вы указываете SQL выдавать только те результаты, которые возвращают true для обеих фраз. Таким образом, значения должны иметь «да» в качестве первых двух символов, но SQL также исключает все города, которые начинаются с «дал». В этом примере не возвращаются никакие записи, поскольку все записи не соответствуют обеим фразам.
Предположим, вы поместили в оператор оператор ИЛИ вместо оператора И. В следующем операторе используется ИЛИ вместо И.
SELECT * FROM Customer
WHERE City LIKE ‘da%’ OR City NOT LIKE ‘dal%’
Условие ИЛИ изменит ваш оператор SQL на «возврат всех записей, начинающихся с ‘da’ ИЛИ записей, которые не начинай с «дал». Эта логика немного сложнее. В результате возвращаются все записи с «da», что означает, что возвращаются ваши клиенты «dallas». Затем вторая фраза указывает SQL вернуть все записи, которые не начинаются с «dal». В таблице вашего примера все записи не начинаются с символов «даль», поэтому SQL возвращает все записи. Первая фраза не имеет значения, потому что используется ИЛИ, и все ваши записи соответствуют второй фразе.
В результате SQL возвращает следующий набор данных.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
321 | Фрэнк | Лоэ | Даллас | ТХ |
455 | Эд | Томпсон | Атланта | Г. А. |
456 | Эд | Томпсон | Атланта | Г.А. |
457 | Джо | Смит | Майами | FL |
458 | Фрэнк | Доу | Даллас | ТХ |
Понимание различий между операторами ИЛИ и И и их использование с оператором НЕ поможет вам создавать сложные операторы SQL, которые дают вам точный набор данных, который вам нужен для отображения в ваших приложениях и создания отчетов.
Оператор LIKE
Оператор LIKE уже немного обсуждался, но оператор LIKE имеет несколько других вариантов синтаксиса, которые вы можете использовать. Оператор LIKE использует подстановочный знак %. Символ % может быть помещен в начало, конец или внутри строкового значения. Обратите внимание, что оператор % предназначен для строковых или varchar-значений.
В приведенных выше примерах используется символ процента для возврата значений, начинающихся с определенной строки (в приведенных выше примерах строка была «da»). Что делать, если вам нужно найти значения, которые просто содержат значение? Например, вы можете захотеть вернуть всех клиентов, которые содержат только строку «ia». Опять же, мы начинаем с таблицы базы данных клиентов.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
321 | Фрэнк | Лоэ | Даллас | ТХ |
455 | Эд | Томпсон | Атланта | Г. А. |
456 | Эд | Томпсон | Атланта | Г.А. |
457 | Джо | Смит | Майами | ФЗ |
458 | Фрэнк | Доу | Даллас | ТХ |
Следующая инструкция SQL ищет любого клиента в городе, который содержит значение «ia».
ВЫБЕРИТЕ * ОТ Заказчика
WHERE City LIKE ‘%ia%’
Приведенное выше утверждение переводится как «дайте мне все записи, в которых значение города содержит значение «ia» в любом месте строки. Обратите внимание на символ процента в начале и в конце. Это отличается от предыдущих примеров, в которых использовалось только «da%.» «da%» сообщает SQL, что строка должна начинаться с «da» и не может включать никаких префиксных символов. Оператор «%ia%» сообщает SQL, что « ia» могут находиться в любом месте строки.
Результат набора данных следующий.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
457 | Джо | Смит | Майами | FL |
Символ подчеркивания (_ ) — это еще один подстановочный знак, используемый для указания SQL, что только один символ может иметь префикс или заканчиваться определенной строковой последовательностью. Например, следующая инструкция SQL возвращает только те записи, в которых перед «iami» есть один символ.
ВЫБЕРИТЕ * ОТ Заказчика
ГДЕ Город НРАВИТСЯ ‘_iami’
Разница между символом процента и символом подчеркивания заключается в том, что символ процента сообщает SQL, что любое количество символов может предшествовать заданной последовательности или следовать за ней, а символ подчеркивания означает, что только один символ может предшествовать или следовать за последовательностью. Возвращается тот же набор записей, что и выше. Однако предположим, что у вас есть город со значением «Hmiami» в таблице Customer. Эта запись будет исключена, поскольку заданной последовательности предшествует более одного символа.
Используя первую таблицу данных о клиентах, указанную в этой статье, вы снова получите следующий результирующий набор из приведенного выше оператора SQL.
идентификатор клиента | Имя | Фамилия | Город | Состояние |
457 | Джо | Смит | Майами | FL |
Операторы NOT, LIKE и IN — это мощные способы запроса более сложных записей в ваших операторах SQL. Эти операторы могут помочь вам вернуть более точный набор записей, чем более простые фразы предложения WHERE.
Работа с операторами SQL И, ИЛИ и НЕ
Поиск
В предыдущем руководстве мы узнали, как работать с предложением WHERE в SQL, которое разработчики баз данных могут использовать, когда они хотят получить группу записей, которые соответствуют определенным критериям или состояние. Например, администратор базы данных может захотеть найти в базе данных каждый экземпляр, где имя пользователя равно «Ронни» или, что более вероятно, , не равному 9.0872 «Ронни». Каким бы мощным ни было предложение WHERE в SQL, мы можем сделать его еще сильнее, если применим SQL-операторы NOT , AND и OR .
В этом руководстве по разработке баз данных администраторам и программистам баз данных показано, как использовать операторы NOT , AND и OR в SQL с синтаксисом, примерами кода и вариантами использования.
Прежде чем мы начнем, вы можете просмотреть наше руководство: Как использовать предложение SQL WHERE.
Что такое оператор И в SQL?
Оператор AND в SQL используется для отображения данной записи, если каждое условие, разделенное оператором AND , равно TRUE . Он используется вместе с предложением WHERE для фильтрации записей на основе двух или более условий.
SQL AND Syntax
Синтаксис оператора AND в SQL следующий:
SELECT columnA, columnB ИЗ table_example ГДЕ условие А и условие Б…;
Пример кода SQL AND
Для нашего примера кода оператора SQL AND давайте представим, что у нас есть база данных с именем Nakamura Industries и в этой базе данных есть таблица с именем сотрудников , которая, как вы можете себе представить, содержит информацию относящиеся к учетным записям сотрудников. Далее предположим, что наша таблица имеет следующие столбцы:
- firstName : содержит имя сотрудника
- lastName: Содержит фамилию сотрудника
- employeeID: Содержит уникальный номер, представляющий идентификационный номер сотрудника
.
Предположим, что эта таблица содержит следующую информацию:
имя фамилия идентификатор сотрудника Ронни Пейн 001 Донни Лейн 002 Ронни Донни 003
Как использовать SQL И для извлечения записи
Используя приведенную выше примерную таблицу, чтобы получить запись из базы данных с помощью SQL И , мы напишем следующий SQL-запрос:
ВЫБЕРИТЕ имя, фамилию, идентификатор сотрудника ОТ сотрудников ГДЕ firstName="Ронни" AND lastName="Пейн";
В этом примере запроса мы ищем в базе данных сотрудника с именем Ронни и фамилией Пейн . Если не существует записей, отвечающих и из этих требований, никакие записи не будут возвращены. Поскольку у нас действительно есть запись, в которой соответствует обоим наборам критериев, мы получаем результат:
Ронни Пейн 001
, когда мы выполняем наш запрос.
Запрос нескольких критериев И в SQL
Конечно, мы можем запросить более двух наборов критериев в SQL, используя оператор И . В этих случаях должны быть соблюдены все критерии. Вот пример, показывающий запрос, в котором должны быть выполнены три условия:
SELECT fiRead: rstName, lastName, employeeID ОТ сотрудников ГДЕ firstName="Ронни" AND lastName="Payne" AND employeeID=007;
В этом примере SQL-запроса мы просим базу данных вернуть каждую запись, которая имеет имя Ronnie , фамилию Payne и идентификатор сотрудника, соответствующий 007 .
Внимательные наблюдатели заметят, что сотрудник Ронни Пейн имеет идентификатор сотрудника 001 ; поскольку его идентификатор сотрудника не 007 и, следовательно, не , все три условия выполнены, запрос вернет пустой результат.
Если бы мы переписали наш SQL-запрос, чтобы отразить следующее, вместо этого он вернул бы желаемый результат:
SELECT имя, фамилия, идентификатор сотрудника ОТ сотрудников ГДЕ firstName="Ронни" AND lastName="Payne" AND employeeID=001;
Используя этот обновленный SQL-запрос и оператор AND , мы получим следующий вывод:
Ronnie Payne 001
Прочитано: Лучшие онлайн-курсы для изучения SQL
Что такое оператор SQL ИЛИ?
Подобно оператору SQL AND , оператор OR работает в сочетании с предложением WHERE для запроса информации в таблицах базы данных, где еще одно или условие равно TRUE .
В отличие от оператора И , где все условия должны быть ИСТИНА , в сценариях, где используется ИЛИ , только одно условие должно оцениваться как ИСТИНА .
Синтаксис оператора SQL OR
Синтаксис оператора SQL OR следующий:
SELECT columnA, columnB ИЗ table_example ГДЕ условиеA ИЛИ условиеB…;
SQL ИЛИ Пример кода
В следующем примере мы будем использовать тот же пример базы данных, что и раньше, и на этот раз создадим запрос, в котором мы ищем значений firstName , которые равны либо Ted , либо Larry :
ВЫБЕРИТЕ имя, фамилию, идентификатор сотрудника ОТ сотрудников ГДЕ firstName="Тед" ИЛИ firstName="Ларри";
Выполнение приведенного выше SQL-запроса не вернет результатов, поскольку таблица сотрудников не содержит записей firstName , содержащих Ted или Larry .
Рассмотрим следующий пример SQL:
SELECT имя, фамилия, идентификатор сотрудника ОТ сотрудников ГДЕ firstName="Тед" ИЛИ firstName="Ронни";
В этом примере мы устанавливаем наши критерии для поиска в столбце firstName для либо Тед или Ронни . Так как один из критериев оператора OR выполнен, то получаем результат:
Ronnie Payne 001 Ронни Донни 003
Использование оператора SQL OR для запроса нескольких критериев
Подобно оператору AND , программисты и администраторы баз данных могут использовать оператор OR для извлечения данных из таблицы с использованием нескольких критериев. Вот пример того, как использовать оператор ИЛИ с 9Предложение 0869 WHERE для запроса данных на основе трех наборов критериев:
SELECT имя, фамилия, идентификатор сотрудника ОТ сотрудников ГДЕ firstName="Тед" ИЛИ firstName="Ронни" ИЛИ firstName="Донни";
Здесь мы ищем значение Ronnie , Donnie , или Ted — если любой из этих критериев будет выполнен, результаты будут возвращены. Ниже приведены результаты выполнения этого запроса:
Ronnie Payne 001. Донни Лейн 002 Ронни Донни 003
Что такое оператор SQL NOT
Оператор SQL NOT может немного сбивать с толку, и вам потребуется некоторое время, чтобы привыкнуть к его правильному использованию. Вместо того, чтобы использовать его для поиска критериев TRUE , программисты баз данных используют его для поиска данных, где набор критериев равен NOT TRUE , что технически отличается от FALSE .
Поскольку в SQL есть значения, равные null , оператор NOT иногда используется для запросов к базам данных. Значение null не является ни TRUE , ни FALSE — также известен как не 0 или 1 . Таким образом, если вы хотите запросить таблицу, в которой есть нулевых значений , вы можете использовать оператор NOT для поиска таких значений.
Синтаксис оператора SQL NOT
Ниже приведен синтаксис для использования оператора NOT в запросах SQL:
SELECT columnA, columnB ИЗ table_example ГДЕ НЕ условиеA …;
Пример кода оператора SQL NOT
Конечно, оператор SQL NOT также может просто извлекать из таблицы значения, которые не равны TRUE .