Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Эта запись последняя в теме работа с таблицами в SQLite3. И эта запись предназначена для того, чтобы разобраться с тем, как можно удалить строки и данные из таблиц баз данных под управлением SQLite. Конечно, есть еще команда SELECT, которая позволяет сделать выборку из базы данных, но для SELECT у нас есть отдельная тема, которая будет состоять из десяти частей, в которых мы подробно рассмотрим эту мощную и важную SQL команду и особенности ее работы.
Часть 10.5: Удаление данных и строк из таблицы базы данных SQLite
Мы уже рассмотрели всевозможные операции с таблицами, которые можно делать при помощи языка запросов SQL. Нам осталось только разобраться с удалением данных и строк из таблиц. Из этой записи вы узнаете: как удалить данные из таблицы базы данных SQLite, как отфильтровать данные, а затем удалить строки из таблицы, как отсортировать строки в таблице, а затем их удалить с учетом выполненной сортировки, как сделать выборку данных командой SELECT, а затем удалить выбранные строки.
И, как всегда, если что-то непонятно или, на ваш взгляд, не точно — пишите комментарии, обсудим вместе.
Удаление данных и строк из таблицы базы данных SQLite
Первое, что стоит сказать: удалять данные из таблиц базы данных можно только за счет удаления строк, пожалуйста, не путайте удаление данных из таблицы с удалением таблиц, для удаления таблиц используется SQL запрос, который начинается с команды DROP TABLE. А также не стоит путать SQL команды с SQL операторами.
Давайте разберемся, как в SQLite можно удалять данные и строки из таблицы базы данных. За удаление строк из таблицы базы данных SQLite3 отвечает команда DELETE. Команда DELETE позволяет удалять данные по условию, которое указывается после клаузулы WHERE, если условие выполняется, то SQLite удалит строку из таблицы базы данных, если условие не выполняется, то данные не будут удалены, а если опустить ключевое слово WHERE, то все строки из таблицы базы данных SQLite3 будут удалены. Общий синтаксис для удаления данных из таблицы в SQLite показан на рисунке ниже.
Синтаксис удаления строк из таблицы базы данных SQLite. Синтаксис удаления данных из таблицы базы данных SQLite3
Сперва идет ключевая конструкция DELETE FROM, затем указывается имя таблицы или квалификатор (полное имя таблицы), из которой необходимо удалить строку, после чего идет необязательная клаузула WHERE, которая указывает условия, по которым будут выбраны данные для удаления из таблицы. Давайте посмотрим, как удалять строки из таблиц SQLite. Обратите внимание: команда DELETE удаляет всю строку целиком, а не конкретные значения, либо она может удалить все данные из таблицы.
Простой пример удаления данных из таблицы базы данных SQLite3
Начнем с простейшего примера удаления данных из таблицы базы данных в SQLite. Попробуем удалить все данные из таблицы. Для того чтобы удалить все строки из таблицы, как вы помните, нам не нужно использовать ключевое слово WHERE. Но для начала давайте создадим таблицу в базе данных при помощи команды CREATE и добавим данные в таблицу при помощи команды INSERT.
[php]
— Создание таблицы с четырьмя столбцами: a, b, c, d
CREATE TABLE table1 (a, b, c, d);
— Добавление данных в таблицу
INSERT INTO table1
VALUES (1, ‘Петр’, 45, ‘Директор’);
INSERT INTO table1
VALUES (2, ‘Алексей’, 15, ‘Школьник’);
INSERT INTO table1
VALUES (3, ‘Иван’, 25, ‘Инженер’);
INSERT INTO table1
VALUES (4, ‘Владимир’, 33, ‘Безработный’);
INSERT INTO table1
VALUES (5, ‘Михаил’, 17, ‘Студент’);
[/php]
Мы создали таблицу table1 и добавили в нее пять строк. Давайте удалим все строки из таблицы table1.
[php]
— Данная команда удалит все строки из таблицы
DELETE FROM table1;
[/php]
Мы удалили все данные из таблицы table1. В этом можно убедиться, сделав выборку из базы данных при помощи команды SELECT:
[php]
— Проверяем, что строки были удалена
SELECT * FROM table1;
[/php]
Действительно, все строки удалены из таблицы. Если у вас подключено две и более базы данных и при этом в этих базах данных есть таблицы с одинаковыми именами, то используйте для удаления данных из таблицы квалификатор или иначе – полное имя таблицы:
[php]
— Удаление таблицы с использование квалификатора
DELETE FROM dbname.table1;
[/php]
Таким образом мы можем удалить данные из таблицы в конкретной базе данных. Думаю, вы разобрались с тем, как удалить все строки из таблицы базы данных SQLite, давайте теперь перейдем к более сложным примерам удаления строк из таблицы.
Фильтрация данных и удаление строк из таблицы базы данных в SQLite
Часто бывает так, что есть необходимость удалять не все данные из таблицы, а какие-то конкретные строки, для того чтобы выбрать строки, которые мы хотим удалить из таблицы в SQLIte используется ключевое слово WHERE. Если вы хотите повторить примеры по удалению данных из таблицы, воспользуйтесь листингом выше. Давайте рассмотрим примеры по удалению строк из таблицы SQLite в порядке их усложнения.
Первый пример заключается в том, что для удаления строк из таблицы базы данных мы будем использовать клаузулу WHERE.
[php]
— Фильтруем данные перед удалением строк
DELETE FROM table1
WHERE b = ‘Владимир’;
[/php]
Данное SQL предложение позволит нам удалить строку из таблицы SQLite с номером 4, в которой хранится информация о безработном Владимире. Все довольно просто: для удаления данных с применением клаузулы WHERE вам необходимо задать какое-то условие, по которому SQLite определит строку, которую нужно удалить. Но условия могут быть гораздо сложнее.
Давайте усложним пример удаления строк из таблицы, добавив туда несколько новых строк:
[php]
INSERT INTO table1
VALUES (6, ‘Михаил’, 22, ‘Подсобныйрабочий’);
INSERT INTO table1
VALUES (7, ‘Михаил’, 12, ‘Живет в Тайланде’);
[/php]
Теперь у нас в таблицы три Михаила и два из них несовершеннолетних. Допустим, я хочу удалить из таблицы все строки, содержащие данные о Михаилах, которым нет еще 18 лет, WHERE b< 18 сработает, но тогда будут удалены данные о Алексее, которые нам пока еще нужны. Для того чтобы расширить условие на удаление мы можем использовать различные SQL операторы, которые позволят более точно выбрать строки, которые нужно удалить из таблицы базы данных SQLite. Давайте посмотрим пример удаления данных с использованием оператора AND:
[php]
— Удаление строк с условиями
DELETE FROM table1
WHERE b = ‘Михаил’ AND c < 18;
[/php]
В данном случае из таблицы будут удалены все Михаилы, не достигшие 18 лет. Но SQLite дает возможность для более широкого выбора строк, которые мы хотим удалить.
Выполнение сортировки перед удалением данных из базы данных
Если вам кажется, что вышеперечисленного мало для удаления данных из таблицы, то SQLite дает вам возможность сортировать данные, а только потом удалять. Замечу, что сортировка строк для их удаления данных не имеет смысла, если не ограничивать количество строк, поэтому в SQLite вы можете ограничить и отсортировать данные при удалении. Давайте разберем пример такого удаления строк из таблицы. Давайте добавим еще несколько строк в нашу таблицу, чтобы пример заработал:
[php]
— Добавим несколько строк в таблицу
INSERT INTO table1
VALUES (8, ‘Евгений’, 40, ‘Слесарь’);
INSERT INTO table1
VALUES (9, ‘Александр’, 23, ‘Электрик’);
INSERT INTO table1
VALUES (10, ‘Мария’, 55, ‘Адвокат’);
INSERT INTO table1
VALUES (11, ‘Алла’, 45, ‘Врач’);
[/php]
В нашу таблицу для экспериментов с удалением строк мы добавили несколько записей. И теперь посмотрим, как нам поможет сортировка и упорядочивание при удалении данных. Допустим, мне нужно удалить данные о тех людях, кому больше 23 лет и чья профессия до буквы Д включительно, таких в моей таблице четверо. Давайте напишем запрос на удаление строк из таблицы, используя LIMIT и ORDER BY:
[php]
— Сортировка и ограничение при удалении
DELETE FROM table1
WHERE c > 23
ORDER BY d COLLATE RTRIM ASC
LIMIT 4;
[/php]
Конечно, этот пример удаления строк из таблицы базы данных SQLite притянут за уши и его можно было реализовать более изящно при помощи оператора LIKE или регулярными выражения, но регулярных выражений в SQLite нет – это вам не MySQL. Регулярных выражений в SQLite нет, а вот оператором LIKE можно было бы и попробовать удалить данные из таблицы.
Удаление строк из таблицы базы данных с использование подзапроса SELECT
Еще одним способом удаления данных из таблиц баз данных SQLite является применение клаузулы EXISTS после WHERE. После EXISTS вы можете написать сорока этажный SELECT, который будет выбирать вам нужные строки, но этот пример мы попробуем рассмотреть тогда, когда разберем детально SELECT.
Что же, мы рассмотрели все способы удаления данных и строк из таблиц баз данных SQLite и можем приступать к другим темам.
Выберете удобный для себя способ, чтобы оставить комментарий