Часть 12.11: Определение набора значений в базах данных SQLite: оператор IN и SELECT

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В этой записи мы поговорим про использование SQL оператора IN и команды SELECT в базах данных SQLite. Оператор IN позволяет делать выборку данных, при этом строки будут выбраны на основе сравнения значений столбцов с заранее определенным набором, который указывается в операторе IN. Часто вы можете встретить подзапросы SELECT с использование оператора IN, но об этом мы поговорим в другой записи.

Определение набора значений в базах данных SQLite: оператор IN и SELECT

Определение набора значений в базах данных SQLite: оператор IN и SELECT

Из этой записи вы узнаете:

  • как SQL оператор IN позволяет определить набор значений, с которым будут сравнивать строки при запросе к базе данных;
  • посмотрите пример использования IN и SELECT в базах данных SQLite3;
  • и в завершении статьи найдете информацию о том, с какими командами, помимо SELECT, можно использовать оператор IN.


Как определить набор значений в базах данных SQLite при помощи оператора IN и команды SELECT

Бывают ситуации, когда нам нужно сделать выборку данных из базы данных SQLite не в каком-то диапазоне, а по заранее известному набору значение. Такой набор значений нам позволяет определить SQL оператор IN вместе с командой SELECT. SQL запрос SELECT может использовать оператор IN не только для определения заранее известного набора значений, но для создания подзапроса, когда значения неизвестны, но об этом в другой части темы.

SQL оператор IN и команда SELECT дают иногда интересные и полезные результаты. Так же вам стоит понимать, что оператор IN в SQL запросах следует использовать вместе с клаузулой WHERE, когда необходимо задать условие выборки данных или же с клаузулой HAVING, когда нужно отфильтровать строки после группировки данных, реализуемой клаузулой GROUP BY.

SQL оператор IN – это логический оператор, он относится к той же группе операторов, что и AND и OR, а так же оператор LIKE, который реализует поиск по шаблону в базах данных. Оператор IN в левой части принимает значения столбца, а в правой части определяется набор значений, с которыми сравниваются значения столбца в процессе выполнения команды SELECT.

Пожалуй, это всё что нужно знать про использование оператора IN и команды SELECT, теперь можем попрактиковаться в составление запрос SELECT с оператором IN и попробовать определить свои наборы значений.

Примеры использования оператора IN и SELECT в базах данных SQLite3

IN и SELECT часто используются вместе, обычно оператор IN используется для создания подзапроса SELECT, но в данном случае мы рассмотрим пример простого использования оператора IN с командой SELECT, а в следующей части мы посмотрим, как сделать подзапрос. Давайте попробуем определить набор значений IN. Для этого создадим таблицу в базе данных SQLite при помощи команды CREATE:

Ничего необычного в созданной таблице нет: мы обеспечили целостность данных при помощи ограничений уровня таблицы и ограничения уровня столбца, а также мы создали индекс таблицы при помощи ограничения первичного ключа PRIMARY KEY. Теперь давайте наполним таблицу данными, для этого есть команда INSERT:

Для примера оператора IN и команды SELECT у нас всё готово, давайте напишем SQL предложение, которое будет показывать строки только из определенного набора значений:

В данном случае наш определенный набор значений – это нечетные строки, в правом операнде оператора IN это видно, так легко и просто можно определить набор значений в базе данных при помощи связки оператора IN и команды SELECT.

Но мы можем использовать логическое отрицание NOT вместе с оператором IN и командой SELECT, тогда мы получим строки, которые не входят в определенный набор значений, давайте это посмотрим:

Теперь комбинация NOT IN и SELECT дала нам четные строки, потому что они не входят в определенный набор значений.

Использование оператора IN с другими командами SQLite3

Мы можем использовать SQL оператор IN не только с командой SELECT, но и с другими командами библиотеки SQLite. Мы не будем говорить про операторы управления транзакциями и команды определения доступа к данным, так внутри первых можно писать какие угодно SQL предложения, а вторых в SQLite нет.

Команды манипуляции данными в SQLite и оператор IN:

  1. Вы можете выполнить операцию добавления строк в таблицу базы данных при помощи команды INSERT и подзапроса SELECT, поэтому можно утверждать, что INSERT и IN можно использовать вместе.
  2. Когда вы удаляете строки из таблицы базы данных, то используете клаузулу WHERE, чтобы выбрать строки для удаления, поэтому можете использовать оператор IN и команду DELETE.
  3. Если у вас есть необходимость изменить данные в базе данных, то вы используете команду UPDATE и клаузулу WHERE, чтобы точно определить строки, требующие модификации, соответственно, вы можете использовать оператор IN.

Команды определения данных в SQLite и оператор IN:

  1. Мы можем создавать таблицы на основе подзапроса SELECT, следовательно мы можем использовать оператор IN.
  2. Для удаления таблиц и других объектов базы данных есть команда DROP, а оператор IN манипулирует данными, поэтому использовать их вместе мы не можем.
  3. Для изменения таблиц и других объектов базы данных существует команда ALTER, опять же, команда ALTER работает на уровне объектов, а оператор IN на уровне значений.

Оператор IN и команда SELECT позволяют определить набор значений, которые будут отражены в результате выборки, не забывайте о том, что оператор IN бинарный и производит сравнение значений столбца с заданными значениями. Будьте аккуратны используя оператор IN и SELECT, ведь SQLite – это СУБД с динамической типизацией данных, в которой нет типов данных, а есть классы данных и аффинированные типы данных столбцов.

Текст комментария: