Примеры. Пусть таблица department имеет следующую структуру: имя колонки deptno deptname mgrno admrdept тип данных char(3) NOT NULL

Пусть таблица DEPARTMENT имеет следующую структуру:

Имя колонки DeptNo DeptName MgrNo AdmrDept
Тип данных CHAR(3) NOT NULL VARCHAR(29) NOT NULL CHAR(6) CHAR(3) NOT NULL
Описание Номер отдела Название, определяющее направление деятельности отдела Номер сотрудника – руководителя отдела Номер отдела, которому подчиняется данный отдел

Пример 1. Вставить в таблицу DEPARTMENT следующую информацию о новом отделе: номер отдела – ‘E31’, название – ‘ARCHITECTURE’, номер руководителя отдела – ‘00390’, вышестоящий отдел – ‘E01’.

INSERT INTO DEPARTMENT

VALUES ( ’E31’, ’ARCHITECTURE’, ’00390’, ’E01’ )

Пример 2. Вставить в таблицу DEPARTMENT ту же информацию, что и в примере 1, за исключением номера руководителя отдела.

INSERT INTO DEPARTMENT ( DeptNo, DeptName, AdmrDept )

VALUES ( ’E31’, ’ARCHITECTURE’, ’E01’ )

или, что то же самое,

INSERT INTO DEPARTMENT

VALUES ( ’E31’, ’ARCHITECTURE’, NULL, ’E01’ )

Пример 3. Вставить в таблицу DEPARTMENT в одном предложении INSERT информацию о двух отделах, для которых не назначены руководители.

INSERT INTO DEPARTMENT ( DeptNo, DeptName, AdmrDept )

VALUES ( ’B11’, ’PURCHASING’, ’B01’ ),

( ’E41’, ’DATABASE ADMINISTRATION’, ’E01’ )

Пример 4.

Таблица EMP_ACT имеет следующую структуру:

Имя колонки EmpNo ProjNo ActNo EmpTime EmStDate EmEnDate
Тип данных CHAR(6) NOT NULL CHAR(6) NOT NULL SMALLINT NOT NULL DEC(5,2) DATE DATE
Описание Номер сотрудника Номер проекта Номер задания Доля времени, затрачиваемая сотрудником на выполнение задания Дата начала работы над заданием Дата завершения задания

Необходимо создать временную таблицу MA_EMP_ACT, имеющую такую же структуру, и загрузить в нее те строки из таблицы EMP_ACT, для которых номер проекта (ProjNo) начинается буквами ‘MA’.

CREATE TABLE MA_EMP_ACT (

EmpNo CHAR( 6 ) NOT NULL,

ProjNo CHAR( 6 ) NOT NULL,

ActNo SMALLINT NOT NULL,

EmpTime DEC( 5,2 ),

EmStDate DATE,

EmEnDate DATE)

INSERT INTO MA_EMP_ACT

SELECT * FROM EMP_ACT

WHERE ProjNo LIKE ’MA%’

Предложение DELETE

Предложение DELETE позволяет удалять из таблицы все или некоторые строки.

В общем случае предложение DELETE имеет следующий синтаксис:

DELETE FROM имя_таблицы [ WHERE условие_поиска ]

имя_таблицы – должно указывать существующую таблицу базы данных.

условие_поиска – определяет условие отбора удаляемых строк. Если конструкция WHERE опущена, удаляются все строки таблицы.

В условии поиска в конструкции WHERE могут быть использованы только колонки таблицы, указанной в предложении DELETE. Условие поиска применяется к каждой строке таблицы, и удаляются те строки, для которых результатом условия поиска является значение true. Если условие поиска содержит подзапрос, можно считать, что подзапрос будет выполняться каждый раз, когда условие поиска применяется к строке, и результаты подзапроса используются в условии поиска. Если подзапрос ссылается на таблицу, указанную в этом же предложении DELETE, или на зависимые таблицы по правилу удаления CASCADE или SET NULL, подзапрос выполняется полностью, прежде чем будет удалена хотя бы одна строка.

При удалении строк из родительской таблицы проверяются ограничения ссылочной целостности и правила удаления, определенные в дочерних таблицах. Если для какой-либо из дочерних таблиц определено правило удаления RESTRICT, строки из родительской таблицы не удаляются, и предложение DELETE завершается с ошибкой. Если операция удаления не защищена правилом удаления RESTRICT, выбранные строки удаляются. Кроме того, оказывается воздействие на строки дочерних таблиц, зависящие от удаляемых строк:

– колонкам внешнего ключа любых строк, зависящих по связям с правилом удаления SET NULL, присваивается значение NULL;

– любые строки, зависящие по связям с правилом удаления CASCADE, также удаляются, и правила удаления применяются, в свою очередь, и к этим строкам.

Правило удаления NO ACTION проверяется, чтобы гарантировать, что любой not-null внешний ключ ссылается на существующую родительскую строку после того, как будут удовлетворены другие ссылочные ограничения.

Если при выполнении предложения DELETE, удаляющего несколько строк, возникла ошибка, никакие изменения в базе данных не происходят.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: