Часть 11.2: Ограничения уровня таблицы в базах данных SQLite3
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Поиск по шаблону — довольно мощное средство в любом языке программирования, но поиск по шаблону можно еще и выполнять средствами СУБД. Любая реляционная СУБД поддерживает работу SQL оператора LIKE, который осуществляет сравнение строк в базе данных или как еще говорят поиск по шаблону в базе данных. Нужно отметить, что оператор LIKE становится мощным средством поиска строк в базе данных в том случае, когда система управления базами данных поддерживает регулярные выражения, к сожалению, SQLite3 не поддерживает регулярные выражения, из-за чего оператор LIKE и его шаблоны выглядят неполноценно.
В этой записи мы поговорим о том, как работает оператор LIKE и командах SELECT в базах данных под управлением SQLite. Также мы рассмотрим пример SQL запроса, использующего команду SELECT и оператор LIKE и в завершении публикации мы рассмотрим то, с какими SQL командами может работать оператор LIKE помимо SELECT.
Содержание статьи:
Продолжим усложнять простую выборку данных из базы данных SQLite3 при помощи логических операторов, ранее мы рассмотрели связку AND, OR и SELECT, а также комбинацию SELECT и BETWEEN. Теперь давайте сделаем серьезный SQL запрос SELECT с использованием SQL оператора LIKE. Оператор LIKE и SELECT чаще всего используются, когда в программе (на сайте, в мобильном приложении или где-либо еще) нужно реализовать простейшую форму поиска.
Так что LIKE и SELECT можно считать простейшим поисковым алгоритмом, который вы можете реализовать на своём сайте. Оператор LIKE бинарный. В левой части LIKE указывается столбец, по которому будет осуществлен поиск, а в правой части указывается шаблон, по которому будет сделан поиск.
В SQLite3 есть два способа задать шаблон поиска оператору LIKE и затем найти значение в таблице командой SELECT:
При составлении шаблонов поиска никто не запрещает использовать описанные выше конструкции несколько раз, например з_ма% или %м__ра% . Обратите внимание: чтобы успешно делать сравнение строк при выборке данных из базы данных вы должны понимать, как SQLite3 сравнивает значение и что такое аффинированный тип данных, иначе результаты работы SELECT и LIKE иногда будут для вас непредсказуемы, особенно, если учесть, что SQLite – это СУБД с динамической типизацией данных.
Так же нужно учесть, что сравнение строк или поиск по шаблону в базах данных под управлением SQLite3 мы можем реализовать только с использованием клаузулы WHERE, когда мы составляем условие выборки данных или с использованием HAVING, когда мы делаем дополнительную фильтрацию данных после группировки данных (GROUP BY).
В общем, вы уже, наверное, поняли, что оператор LIKE реализует поиск по шаблону и используется он для сравнения строк с заданными шаблонами.
Слова словами, а примеры никто не отменял, давайте реализуем поиск по шаблону в базе данных под управлением SQLite3. И посмотрим, как SQLite сравнивает строки, когда мы используем оператор LIKE и команду SELECT. Для начала создадим таблицу в базе данных при помощи команды 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]
Таблица создана, у таблицы четыре столбца с ограничениями уровня столбца и ограничением уровня таблицы. У таблицы есть внутренний индекс 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]
Давайте реализуем поиск по шаблону в базе данных SQLite, воспользовавшись оператором LIKE и командой SELECT:
[php]
SELECT * FROM table1
WHERE name LIKE '%ин%';
1|Пупкин Матвей|Дантист|м|55000.0
2|Cумкин Денис|Юрист|м|35040.9
4|Маркова Ирина|Бухгалтер|ж|31200.1
5|Петрова Алина|Менеджер продаж|ж|21200.1
[/php]
Результат сравнения строк вы можете увидеть выше, в данном случае оператор LIKE позволил нам найти все строки, где есть вхождение «…ин…». Поиск по шаблону в SQLite – не самая мощная функция, так как SQLite не поддерживает регулярных выражений.
Мы разобрались с тем, как работает оператор LIKE и команда SELECT в базах данных SQLite, теперь вы сможете самостоятельно осуществлять сравнение строк во время выборки данных и делать поиск по шаблону из базы данных.
Вы можете использовать SQL оператор LIKE не только вместе с SELECT, но и при составление других SQL запросов к базе данных под управлением SQLite3. Мы не берем в расчет команды управления транзакциями и не берем в расчет команды определения доступа к данным по известным причинам.
Оператор LIKE и команды определения данных в базах данных SQLite:
SQL оператор LIKE и команды манипуляции данными в базах данных SQLite3:
Итак, мы разобрались с оператором LIKE и командой SELECT, теперь вы спокойно можете осуществлять поиск по шаблону в своих базах данных под управлением SQLite. Помните, что LIKE сравнивает строки с шаблонами и помните про правила составления шаблонов в базах данных SQLite, тогда у вас не возникнет трудностей с использованием SELECT и LIKE.
Выберете удобный для себя способ, чтобы оставить комментарий