Часть 5.1: Общая информация о типах данных в SQLite3
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Ранее…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В этой записи мы поговорим про использование SQL оператора IN и команды SELECT в базах данных SQLite. Оператор IN позволяет делать выборку данных, при этом строки будут выбраны на основе сравнения значений столбцов с заранее определенным набором, который указывается в операторе IN. Часто вы можете встретить подзапросы SELECT с использование оператора IN, но об этом мы поговорим в другой записи.
Из этой записи вы узнаете:
Содержание статьи:
Бывают ситуации, когда нам нужно сделать выборку данных из базы данных 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 часто используются вместе, обычно оператор 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 дала нам четные строки, потому что они не входят в определенный набор значений.
Мы можем использовать SQL оператор IN не только с командой SELECT, но и с другими командами библиотеки SQLite. Мы не будем говорить про операторы управления транзакциями и команды определения доступа к данным, так внутри первых можно писать какие угодно SQL предложения, а вторых в SQLite нет.
Команды манипуляции данными в SQLite и оператор IN:
Команды определения данных в SQLite и оператор IN:
Оператор IN и команда SELECT позволяют определить набор значений, которые будут отражены в результате выборки, не забывайте о том, что оператор IN бинарный и производит сравнение значений столбца с заданными значениями. Будьте аккуратны используя оператор IN и SELECT, ведь SQLite – это СУБД с динамической типизацией данных, в которой нет типов данных, а есть классы данных и аффинированные типы данных столбцов.
Выберете удобный для себя способ, чтобы оставить комментарий