Самая простая операция изменения данных — вставка новой строки:
insert into <имя таблицы>(<список полей>) values (<список значений>)
Пример 53 Например, чтобы добавить в таблицу ball новую строку, нужно записать следующее:
insert into ball (stud._nom.er, dis, dat, form, res) values ('010001', 'Практикум на ЭВМ', '29.12.2003', 'Зачет', 85)
Если какой-либо столбец таблицы в списке полей не указан, то будет попытка вставить на его место значение по умолчанию, если оно есть, или NULL, если значение по умолчанию отсутствует.
Пример 54 Например, оператор
insert into ball(stud_nomer, dis, dat, res) values ('010001', 'Практикум на ЭВМ', '29.12.2003', 85)
приведет к вставке строки
010001 Практикум, на ЭВМ 04-01.2004 Экзамен 100
Оператор
insert into ball(stud_nomer, dis) values ('010001', 'Практикум на ЭВМ')
вставит
010001 Практикум на ЭВМ NULL Экзамен NULL
Л оператор
insert into ball(stud_nomer) values ('010001')
приведет к ошибке и не выполнится, т,ак как для поля dis значение по умолчанию не задано, а значение NULL это поле не допускает.
Задача 87 (Библиотека) Напишите оператор, добавляющий в базу данных информацию о выдаче читателю какой-либо книги.
Задача 88 (Супермаркет) Напишит,е оператор, добавляющий в базу данных информацию о покупке.
Задача 89 (CD) Напишите операторы для занесения в базу данных информации о новом альбоме.
Задача 90 (Банк) Напишите операторы необходимые для занесения в базу данных информации о новом, клиенте и об открытии им счета.
Более сложный оператор — удаление данных из таблицы:
delete from <имя таблицы> [where <условие>]
Если условие отсутствует, то удаляются все строки из таблицы. Если оно записано, то удаляются только строки, ему удовлетворяющие.
Пример 55 Например, чтобы удалить всю информацию из таблицы ball о студенте с номером '010001', следует, написать:
delete from ball where stud_nomer = '010001'
Правила написания условия такие же, как в инструкции where оператора select.
Задача 91 (Библиотека) Напишите оператор, удаляющий из базы данных информацию о какой-либо книге, и всю связанную с ней информацию (об авторах, о ее выдаче читателям).
Задача 92 (CD) Напишите операторы для удаления из базы данных информации об альбоме и связанной с ней информации.
Задача 93 (Банк) Напишите операторы, необходимые для закрытия счета клиентом.
Задача 94 (Банк) Напишите оператюры, которые для какого-либо клиента закрывают счета, единоличным владельцем котюрых он является, а для счетов, у котюрых есть совладельцы, клиент, удаляется из их числа.
Оператор изменения существующих строк:
update <имя таблицы>
set <имя поля> = <значение> [,<имя поля> = <значение> [,... ]] [where <условие>]
При выполнении оператора в указанные после слова set поля записываются соответствующие значения. Если присутствует инструкция where, то изменения касаются лишь строк, удовлетворяющих условию, иначе — всех строк таблицы.
Пример 56 Если, например, нужно изменить номер студента с '010001' на '010010', то следует, изменить таблицы student и ball:
update student set nomer = '010010' where nomer='010001'
update ball set stud_nomer = '010010' where stud_nomer='010001'
В качестве новых значений для полей могут использоваться выражения с участием полей.
Пример 57 Если нужно увеличить все баллы за экзамен по информатике на 5, то это можно сделать так:
update ball set res = res + 5 where dis = 'Информатика' and form = 'Экзамен'
Как и в операторе select, в инструкциях where операторов delete и update можно использовать подзапросы.
Пример 58 Например, чтобы студентам, набравшим, наибольшее число баллов на экзалчене по информатике, установить результат в 100 баллов, можно выполнить т.акой оператор:
update ball set res = 100
where dis = 'Информатика' and form = 'Экзамен' and res = any(select max(res) from ball
where dis = 'Информатика' and form = 'Экзамен')
Задача 95 (Библиотека) Напишите оператор, предназначенный для того, чтобы занести информацию о возвращении книги читателем.
Задача 96 (Супермаркет) Напишите оператюр, который снижает, цену на 5% на товары, цена которых превышает 1000.
Задача 97 (Банк) Напишите оператор, который заносит некоторую сумму на определенный счет.
Задача 98 (Банк) Напишите операторы, кот.орый заносит общую сумму в 10000 на счета, владельцем или совладельцем которых является г-н Иванов И.И., распределяя ее равномерно по всем таким счетам.
Задача 99 (Банк) Напишите оператор, который заносит сумму в 10000 на счет, единоличным владельцем которого является г-н Иванов И.И., и на котором находится наименьшая среди всех таких счетов сумма. Считать, что такой счет только один.