Наполнять таблицу данными задача для нас не такая сложная. А вот теперь, если какие-либо данные нужно, скажем, удалить из таблицы? Вопрос достаточно тривиален. Для этого в языке DML - есть оператор DELETE. Вот так выглядит его синтаксис:
---------------- DELETE FROM --- таблица --- * псевдоним * --------------------------------- -------------------------------- (имя столбца таблицы) ------------------------------------- ----------------- WHERE -------- условие ---------------------------------------------------
Как мы видим в операторе DELETE так же есть часть определения условия WHERE. То есть все, что мы использовали ранее для описания работы WHERE в операторе SELECT, применимо и здесь. Допустим нам нужно удалить запись с номером три. Записываем:
DELETE FROM PEOPLE WHERE ID = 3 / COMMIT /
Получаем:
SQL> DELETE FROM PEOPLE 2 WHERE ID = 3 3 / 1 строка удалена. SQL> COMMIT 2 / Фиксация обновлений завершена.
Оператор DML - DELETE как видим совершенно безукоризненно выполнил свою работу. Теперь давайте удалим все из таблицы PEOPLE. Записываем:
DELETE FROM PEOPLE / COMMIT /
Получаем:
SQL> DELETE FROM PEOPLE 2 / 5 строк удалено. SQL> COMMIT 2 / Фиксация обновлений завершена.
Теперь из таблицы PEOPLE удалены все записи, которые мы вводили ранее. Да! Давайте еще раз вернемся к NULL для того, чтобы посмотреть как он ведет себя здесь. Введем уже знакомым нам с вам способом, три записи в таблицу PEOPLE со значениями NULL:
INSERT INTO PEOPLE(ID, NM, FM, OT) VALUES(1, NULL, 'Godwin', 'Petrovich') / INSERT INTO PEOPLE(ID, NM, FM, OT) VALUES(2, 'Bob', NULL, 'Martovich') / INSERT INTO PEOPLE(ID, NM, FM, OT) VALUES(3, 'Frank', 'Black', NULL) / COMMIT /
Получаем:
SQL> INSERT INTO PEOPLE(ID, NM, FM, OT) 2 VALUES(1, NULL, 'Godwin', 'Petrovich') 3 / 1 строка создана. SQL> INSERT INTO PEOPLE(ID, NM, FM, OT) 2 VALUES(2, 'Bob', NULL, 'Martovich') 3 / 1 строка создана. SQL> INSERT INTO PEOPLE(ID, NM, FM, OT) 2 VALUES(3, 'Frank', 'Black', NULL) 3 / 1 строка создана. SQL> COMMIT 2 / Фиксация обновлений завершена.
Теперь в таблице PEOLPLE в трех разных записях присутствует значение NULL. Допустим вы хотите удалить записи со значением NULL в поле NM таблицы PEOPLE. Тогда записываем:
DELETE FROM PEOPLE WHERE NM IS NULL / COMMIT /
Получаем:
SQL> DELETE FROM PEOPLE 2 WHERE NM IS NULL 3 / 1 строка удалена. SQL> COMMIT 2 / Фиксация обновлений завершена.
Запись такого типа одна и она удалена оператором DELETE. Для закрепления пройденного давайте проделаем следующее. Очистим таблицу OLD_PEOPLE и заполним ее остатками записей в таблице PEOPLE. Записываем:
DELETE FROM OLD_PEOPLE / COMMIT /
Получаем:
SQL> DELETE FROM OLD_PEOPLE 2 / 6 строк удалено. SQL> COMMIT 2 / Фиксация обновлений завершена.
Таблица OLD_PEOPLE очищена и пуста. Вводим далее такое выражение:
INSERT INTO OLD_PEOPLE SELECT * FROM PEOPLE / COMMIT /
Получаем:
SQL> INSERT INTO OLD_PEOPLE 2 SELECT * FROM PEOPLE 3 / 2 строк создано. SQL> COMMIT 2 / Фиксация обновлений завершена.
Вот таким образом в обоих наших тренировочных табличках на текущий момент по две одинаковых записи. Вот так достаточно просто работает оператор DELETE. Можете попробовать еще раз все с самого начала для закрепления! :)