Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Язык SQL.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Insert into имя таблицы [(список столбцов)]

SELECT … (запрос на выборку из других таблиц)

Например:

INSERT INTO marks (cod_st, cod_sub)

SELECT students.cod_st, subject.cod_sub

FROM students, subject WHERE cod_sub=5

В данном примере в таблицу оценок будут добавлены все студенты, а в качестве предмета будет помещен предмет с кодом 5 (команда SELECT будет подробно рассмотрена в следующих лекциях). Теперь преподавателю этого предмета достаточно только проставить оценки в уже созданных строках.

При выполнении команды ограничения проверяются для каждой вставляемой строки и в случае их нарушения хотя бы для одной из строк все данные не будут добавлены. Например, если кто-либо из студентов уже имеет оценку по предмету с кодом 5, автоматически выполнится команда ROLLBACK - откат.

Команда не выполнилась бы и в том случае, если бы на столбец mark было наложено ограничение NOT NULL.

4.3.2 Команда delete

Общий вид команды:

DELETE FROM имя_таблицы

[WHERE условие_отбора_строк_для_удаления]

Например:

Удалить всех студентов с фамилией Иванов

DELETE FROM students

WHERE name_st=’Иванов’

Более подробно фраза WHERE будет рассмотрена в следуюшем разделе при изучении команды выборки.

Полностью очистить таблицу students

DELETE FROM students

Нельзя удалить строку родительской таблицы, если есть связанные строки в подчиненной таблице и действует правило обеспечения ссылочной целостности ON DELETE RESTRICT. В приведенных выше примерах при определении внешнего ключа cod_st в таблице marks (оценки) было определено правило ON DELETE CASCADE, поэтому вместе со студентами будут каскадом удалены и все их оценки. Последняя команда, таким образом, очистит сразу две таблицы – students и marks.

Зато команда

DELETE FROM subjects

не удалит ничего, если в таблице marks имеется хотя бы одна строка, поскольку при возникновении ошибки будут автоматически отклонены все изменения, сделанные этой командой. Если на момент выполнения этой команды таблица оценок была пуста, таблица предметов будет благополучно очищена.

Надо заметить, что для полной очистки таблицы существует более эффективная команда

TRUNCATE TABLE имя_таблицы

Например:

TRUNCATE TABLE marks

4.3.3 Команда update

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

Общий вид команды:

Update имя_таблицы set столбец1=значение [, столбец2=значение …]

[where условие_отбора_строк]

Например:

Прибавим всем студентам по одному баллу к каждой оценке

Update marks set mark= mark+1

При выполнении команды Update автоматически проверяются все ограничения столбца. В приведенном примере столбец mark имеет ограничение CHECK, которое задает диапазон оценок от 2 до 5. Следовательно, если в таблице имеется хотя бы одно значение оценки, равное 5, при увеличении на единицу оно выйдет за пределы диапазона, а все действия, выполненные командой, будут отменены.

Чтобы гарантированно увеличить все оценки, кроме пятерок, изменим команду:

Update marks set mark= mark+1

Where mark<5