Привет, посетитель сайта 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:

[php]

CREATE TABLE table1 (

id INTEGER PRIMARY KEY,

name TEXT NOT NULL,

pro TEXT NOT NULL,

sex TEXT NOT NULL,

sal REAL CHECK (sal > 15000)

);

[/php]

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

[php]

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Пупкин Матвей’, 'Дантист', ‘м’, 55000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Cумкин Денис’, 'Юрист', ‘м’, 35040.90);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Иванов Иван’, 'Младший юрист', ‘м’, 16000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Маркова Ирина’, 'Бухгалтер', ‘ж’, 31200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Петрова Алина’, 'Менеджер продаж', ‘ж’, 21200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Секретарь', ‘ж’, 16200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Сидорова Инна’, 'Руководитель отдела обслуживания', ‘ж’, 66200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Документооборотчик', ‘ж’, 21200.10);

[/php]

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

[php]

SELECT * FROM table1

WHERE id IN (1,3, 5, 7);

1|Пупкин Матвей|Дантист|м|55000.0

3|Иванов Иван|Младший юрист|м|16000.0

5|Петрова Алина|Менеджер продаж|ж|21200.1

7|Сидорова Инна|Руководитель отдела обслуживания|ж|66200.1

[/php]

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

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

[php]

SELECT * FROM table1

WHERE id NOT IN (1,3, 5, 7);

2|Cумкин Денис|Юрист|м|35040.9

4|Маркова Ирина|Бухгалтер|ж|31200.1

6|Михайлова Любовь|Секретарь|ж|16200.1

8|Михайлова Любовь|Документооборотчик|ж|21200.1

[/php]

Теперь комбинация 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 – это СУБД с динамической типизацией данных, в которой нет типов данных, а есть классы данных и аффинированные типы данных столбцов.

Возможно, эти записи вам покажутся интересными


Выберете удобный для себя способ, чтобы оставить комментарий

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Loading Disqus Comments ...