Классика баз данных - статьи

       

Средства манипулирования данными


Средства манипулирования данными позволяют изменять значения непосредственно в базе данных. Эти средства разделяются на категории вставки, удаления, модификации и присваивания.

Средство вставки позволяет пользователю вставлять в отношение новый кортеж или множество кортежей. Вставка одного кортежа иллюстрируется примером М1. Атрибутам, которые не определены оператором вставки, присваиваются null-значения. Если у кортежа, который должен быть вставлен, все атрибуты приведены в правильном порядке, список имен атрибутов может быть опущен.

М1. Вставить нового служащего по имени 'Jones' с номером 535 и отделом 51 с неопределенными остальными атрибутами.

INSERT INTO EMP(EMPNO,NAME,DNO): <535,'JONES',51>

Оператор вставки языка SEQUEL может также вычислять запрос и вставлять результирующее множество кортежей в некоторое существующее отношение. Предположим, что база данных содержит отношение CANDIDATES, которое содержит столбцы номера служащего, его имени, номера отдела и зарплаты. Тогда можно использовать оператор М2 для выбора множества значений из отношения EMP и их вставки в CANDIDATES.

М2. Добавить в таблицу CANDIDATES всех тех служащих, комиссионное вознаграждение которых составляет больше половины их зарплаты.

INSERT INTO CANDIDATES: SELECT EMPNO,NAME,DNO,SAL FROM EMP WHERE COMM > 0.5 * SAL

Удаление – это процесс спецификации кортежей, которые должны быть удалены из базы данных. Эти кортежи указываются с помощью раздела WHERE, который синтаксически идентичен разделу WHERE запроса, как показано в примере М3.

М3. Удалить из EMP служащего с номером 561. DELETE EMP WHERE EMPNO = 561

Иногда может быть полезно придумать метку для кортежей, которые должны быть удалены, и затем использовать эту метку для определения свойств кортежей. Это аналогично использованию меток в средствах запросов языка. Удаление с использованием метки иллюстрируется примером М4.

М4. Удалить из таблицы DEPT все отделы, в которых нет служащих.

DELETE DEPT X WHERE (SELECT COUNT (*) FROM EMP WHERE DNO = X.DNO) = 0



Содержание  Назад  Вперед