Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Изменение данных

В SQL предусмотрены средства для изменения данных в таблицах путем вставки новых строк, удаления строк и модификации значений в существующих строках. SQL позволяет также менять структуру данных, хотя мы не будем затрагивать эту тему до глав 12 и 13.

Вставка данных

Строки можно вставлять в таблицы по одной или группами. Чтобы вставить одну строку, мы пишем следующее:

Insert into запись

VALUES (400, 'BD445', 44)

После ключевого слова INSERT INTO указывается имя таблицы, а после ключе­вого слова VALUES — вставляемые значения.

Если мы знаем не все данные (например, нам неизвестно значение атрибута ПорядковыйНомер), можно поступить следующим образом:

Insert into запись

(НомерСтудента. НазваниеПредмета)

VALUES (400, 'BD445', 44)

Атрибут ПорядковыйНомер может быть добавлен позже. Обратите внимание, что в результате этого запроса поле Позиция в новой строке будет иметь нулевое значение.

Можно также копировать группы строк из одной таблицы в другую. Пусть, например, нам нужно заполнить таблицу ТРЕТЬЕКУРСНИК, показанную на рис. 9.1.

Insert into третьекурсник

VALUES

(SELECT ЛичныйНомер, Имя, Специальность

FROM СТУДЕНТ

WHERE Курс = 'С3')

Вложенный оператор SELECT, как и все выражения SELECT, описанные в предыдущих двух разделах, позволяет указывать строки для копирования. Это свойство предоставляет весьма широкие возможности.

Удаление данных

Как и в случае вставки, строки можно удалять по одной или группами. Следую­щий пример удаляет строку с данными о студенте 100:

DELETE FROM СТУДЕНТ

WHERE СТУДЕНТ.ЛичныйНомер = 100

Обратите внимание, что если студент 100 записан на какие-либо предметы, это удаление вызовет нарушение целостности, поскольку для строк таблицы ЗАПИСЬ, в которых НомерСтудента = 100, не будет соответствующей строки в таб­лице СТУДЕНТ.

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

DELETE FROM ЗАПИСЬ

WHERE ЗАПИСЬ.НомерСтудента IN

(SELECT СТУДЕНТ.ЛичныйНомер

FROM СТУДЕНТ

WHERE СТУДЕНТ.Специальность = 'Бухгалтерский учет')

DELETE FROM СТУДЕНТ

WHERE СТУДЕНТ.Специальность = 'Бухгалтерский учет'

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

Модификация данных

Строки можно также модифицировать — по одной или группами. Для изменения значения столбца предназначены ключевые слова UPDATE и SET. После SET указы­вается имя столбца, значение в котором требуется изменить, а затем новое значе­ние либо способ его вычисления. Рассмотрим два примера:

UPDATE ЗАПИСЬ

SET ПорядковыйНомер = 44

WHERE НомерСтудента = 400

и

UPDATE ЗАПИСЬ

SET ПорядковыйНомер = МАХ(ПорядковыйНомер) + 1

WHERE НомерСтудента = 400

Во втором операторе UPDATE значение столбца вычисляется с помощью встро­енной функции МАХ. Некоторые реализации SQL, однако, могут не допускать ис­пользования встроенных функций в качестве аргумента команды SET.

Для демонстрации массовых обновлений предположим, что название предмета поменялось с BD445 на BD564. В этом случае, чтобы предотвратить проблемы с це­лостностью, должны быть изменены как таблица ЗАПИСЬ, так и таблица ПРЕДМЕТ.

UPDATE ЗАПИСЬ

SET НазваниеПредмета = 'BD564'

WHERE НазваниеПредмета = 'ВD445'

UPDATE ЗАНЯТИЯ

SET НазваниеПредмета = 'BD564'

WHERE НазваниеПредмета = 'BD445'

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