Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Как часто нам приходится получать значение в каком-нибудь диапазоне? На самом деле очень часто, например, сетевой инженер может вывести на экран программы мониторинга все коммутаторы, находящие в одной подсети или кластере. Экономист, считающий зарплату, может получить значение в диапазоне, например, выбрав сотрудника из какого-нибудь отдела, примеров можно привести массу, это первое, что пришло в голову.  Поскольку такая операция (получение данных из диапазона) выполняется очень часто, нам нужно научиться это делать — получать данные в заданном диапазоне из базы данных, естественно, на примере баз данных под управлением SQLite.

Получить значение из базы данных в диапазоне: BETWEEN и SELECT в SQL и базах данных SQLite

Получить значение из базы данных в диапазоне: BETWEEN и SELECT в SQL и базах данных SQLite

Для целей, описанных выше, в SQL и в базах данных SQLite есть специальный оператор BETWEEN. Оператор BETWEEN как раз-таки и позволяет нам сделать выборку данных в диапазоне. Из этой записи вы узнаете о том, как работает оператор BETWEEN и команда SELECT в SQL и базах данных SQLite, попробуете написать несколько запросов с использованием BETWEEN и команды SELECT и в заключение мы поговорим о том, с какими еще SQL командами можно использовать оператор BETWEEN.

Выборка данных в диапазоне при помощи BETWEEN и SELECT в SQL и базах данных SQLite

Делать SQL запросы SELECT более точными мы можем не только при помощи логических операторов AND и OR, в SQL и SQLite3 есть еще логический оператор BETWEEN (между). Логический оператор BETWEEN делает простые выборки данных из базы данных более сложными. Например, представьте, что у вас есть ежедневник, в который вы записываете все события, произошедшие с вами. И по каким-то причинам вы захотите уточнить, что с вами происходило с 5 сентября 2012 года по 12 декабря 2013 года.

В базе данных такую выборку вы бы реализовали при помощи команды SELECT и SQL оператора BETWEEN. А обычный ежедневник вы бы открыли на странице 5 сентября 2012 и посмотрели бы все страницы до 12 декабря 2013 включительно.

В принципе, вот так легко мы разобрались на словах с тем, как работает оператор BETWEEN и SELECT. Давайте сделаем несколько уточнений: BETWEEN используется с командой SELECT в том случае, когда мы хотим задать условие выборки данных клаузулой WHERE или, когда мы хотим сделать дополнительную фильтрацию данных клаузулой HAVING, после того, как была сделана группировка данных (GROUP BY).

Перейдем к примерам использования SQL команды SELECT с оператором BETWEEN, чтобы понять, как это всё реализовано в СУБД SQLite3.

Примеры BETWEEN и SELECT в  SQL и базе данных SQLite: получаем значение из диапазона

BETWEEN и SELECT очень часто используют вместе, давайте и мы попробуем это сделать. Создадим таблицу в базе данных, воспользовавшись командой CREATE TABLE:

[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]

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

[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]

А теперь воспользуемся SQL оператором BETWEEN и SELECT и сделаем выборку данных в диапазоне:

[php]

SELECT * FROM table1

WHERE id BETWEEN 3 AND 7;

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

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

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

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

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

[/php]

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

[php]

SELECT * FROM table1

WHERE id NOT BETWEEN 3 AND 7;

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

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

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

[/php]

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

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

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

Оператор BETWEEN и команды манипуляции данными:

  1. Оператор BETWEEN может быть использован с командой INSERT в том случае, когда мы хотим добавить строки в таблицу базы данных  при помощи подзапроса SELECT.
  2. Оператор BETWEEN мы так же можем использовать вместе с командой DELETE, если мы хотим удалить строки из таблицы в каком-то определенном диапазоне.
  3. Оператор BETWEEN используется с командой UPDATE в том случае, когда есть необходимость изменять значения строк в диапазоне.

Оператор BETWEEN и команды определения данных:

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

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

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


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

This article has 1 comment

  1. Pingback: Влад

Leave a Comment

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

Loading Disqus Comments ...