Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db-shpora.doc
Скачиваний:
14
Добавлен:
08.11.2018
Размер:
1.44 Mб
Скачать
  1. Основы языка sql: средства модификации данных языка sql

Модификация данных подразумевает три возможных операции: вставка, изменение и удаление. Посмотрим, как выполняются эти операции средствами языка SQL.

Для вставки данных в таблицы служит SQL-оператор INSERT. Этот оператор имеет две формы, в зависимости от того, всем ли столбцам таблицы присваиваются значения. Если указываются значения всех столбцов, то оператор имеет следующий вид:

INSERT INTO ПРОЕКТ VALUES

(1600, 'КВ4 Подготовка налогового отчет', 'Бухгалтерия', 100)

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

INSERT INTO ПРОЕКТ (Название, ИдПроекта) VALUES

('KB4 Подготовка налогового отчета', 1700);

Вспомните, однако, что при создании таблицы ПРОЕКТ в операторе CREATE TABLE Для столбца МаксТрудозатраты было задано начальное значение 100, поэтому несмотря на то, что в операторе INSERT значение этому столбцу не присваивалось, СУБД все равно установит его равным 100. Столбец Отдел будет иметь пустое значение.

Есть несколько дополнительных замечаний, которые следует сделать по поводу второй формы оператора INSERT. Во-первых, порядок, в котором перечисляются значения столбцов, должен соответствовать порядку следования их имен.Во-вторых, чтобы вставка была выполнена, необходимо задать значения всех столбцов, определенных как NOT NULL.В-третьих, в обеих формах INSERT, если первичный ключ является суррогатным ключом, его значение указывать не нужно: это за вас сделает СУБД. Следовательно, если ИдПроекта является суррогатным ключом, то вставку строки можно произвести следующим образом:

INSERT INTO СОТРУДНИК1 (Имя, ТабельныйНомер)

SELECT Имя. ТабельныйНомер FROM СОТРУДНИК;

Обратите внимание, что в этом случае ключевое слово VALUES не входит в оператор SELECT.

Значения существующих данных могут быть изменены с помощью SQL-оператора UPDATE. Имейте в виду, что это мощная команда, и ее следует использовать с осторожностью. Рассмотрим следующий пример:

UPDATE СОТРУДНИК

SET Телефон = '287-1435'

WHERE Имя = 'Джеймс Нестор';

С помощью оператора UPDATE можно обновлять и несколько столбцов за один прием. Это демонстрирует следующий пример:

UPDATE СОТРУДНИК

SET Телефон = '287-1435', Отдел = 'Производство'

WHERE ТабельныйНомер = 200;

Для удаления строк служит SQL-оператор DELETE. К нему относятся те же самые предостережения, что и к оператору UPDATE. Он обманчиво прост в использовании, и неосторожное его применение может привести к самым неожиданным п­следствиям. Следующий оператор удаляет из таблицы ПРОЕКТ данные обо всех проектах, спонсируемых бухгалтерией:

DELETE

FROM ПРОЕКТ

WHERE Отдел = 'Бухгалтерия';

В связи с ограничением ссылочной целостности ON DELETE CASCADE эта опера­ция удаляет не только строки таблицы ПРОЕКТ, но и все связанные с ними строки в таблице НАЗНАЧЕНИЕ. Для данных из табл. 1-3 этот оператор удаляет пятую и седьмую строки таблицы НАЗНАЧЕНИЕ.

Если вы забудете указать предложение WHERE, последствия будут катастрофическими. Например, следующий оператор удаляет все строки из отношения ПРОЕКТ (а вместе с ними, ввиду ограничения ON DELETE CASCADE, и все связанные с ними строки отношения НАЗНАЧЕНИЕ):

DELETE

FROM ПРОЕКТ;

Обратите внимание на различия в процедурах обеспечения ссылочной целостности между таблицами ПРОЕКТ и СОТРУДИК. Если мы попытаемся выполнить следующую команду, нас постигнет неудача, поскольку указанная строка таблицы СОТРУДНИК имеет дочерние строки в таблице НАЗНАЧЕНИЕ:

DELETE

FROM СОТРУДНИК

WHERE ТабельныйНомер=100;

Если требуется удалить строку этого сотрудника, необходимо сначала переназначить или удалить соответствующие строки в таблице НАЗНАЧЕНИЕ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]