Управл_данными / 13-update
.pdf
Оператор SELECT INTO
Можно использовать любые опции и предложения оператора SELECT, включая WHERE и GROUP BY.
Для добавления данных из нескольких таблиц можно использовать объединения.
Данные можно добавить только в одну таблицу независимо от того, из скольких таблиц они были извлечены.
Оператор SELECT INTO является прекрасным средством создания копий таблиц для экспериментов с новыми для вас операторами SQL.
Создав копию, вы получите возможность проверить возможности SQL на этой копии, а не на таблицах реальной базы данных.
11
В СУБД MySQL и Oracle используется несколько иной синтаксис:
CREATE TABLE CustCopy AS
SELECT *
FROM Client
12
Обновление данных. Оператор UPDATE
Для обновления (модификации) данных какой-либо таблицы используется оператор UPDATE.
Этот оператор можно использовать двумя способами:
1)для обновления определенной строки таблицы;
2)для обновления нескольких строк таблицы
13
Синтаксис UPDATE
Оператор UPDATE очень прост в использовании, он состоит из трех основных частей:
1)имени таблицы, подлежащей обновлению;
2)имен столбцов и их новых значений;
3)условий фильтрации, определяющих, какие именно строки должны быть обновлены.
UPDATE Имя_Таблицы
SET Список_полей WHERE Условие
UPDATE Студент
SET
Фамилия = ’Иванов’, Имя = ’Иван’
WHERE id = 124
14
Пример
У студента Иванова (id=193) появился адрес электронной почты: iii@mail.ru , поэтому его запись нужно исправить
|
Если выполнить |
|
|
|
|
|
UPDATE Студент |
|
|
|
запрос: |
|
SET email = ’iii@mail.ru’ |
|
|
То у всех студентов с |
|
WHERE Фамилия = ’Иванов’ |
|
|
|
|
|
|
|
|
|
|
|
|
фамилией “Иванов” появится один и тот же адрес: iii@mail.ru |
|||
|
Правильный вариант |
|
|
|
|
|
|
||
|
UPDATE Студент |
|
||
|
запроса должен |
|
SET email = ’iii@mail.ru’ |
|
|
использовать ключ: |
|
|
|
|
|
|
WHERE id = 193 |
|
|
|
|
|
|
Если же условие вообще не указывать, то этот адрес будет вписан во все строки таблицы Студент
15
Удаление данных. Оператор DELETE
Для удаления строк из таблицы применяется оператор DELETE
Применять оператор DELETE следует с особой осторожностью, потому что можно ошибочно удалить все строки таблицы.
Оператор DELETE удаляет из таблицы отдельные строки или даже все строки за один раз, но никогда не удаляет саму таблицу.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DELETE |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
DELETE FROM |
Студент |
|
|||||
|
|
FROM |
Имя_Таблицы |
|
|
|
WHERE id = |
193 |
|
|
||
|
|
WHERE |
Условие |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
- удаляет все строки |
|||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||||
|
|
DELETE FROM Студент |
|
|
|
|
||||||
|
|
|
|
|
|
Таблицы Студент |
||||||
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
16
Быстрое удаление всех строк. Оператор TRUNCATE
Если необходимо удалить значения из всех строк таблицы, не используйте оператор DELETE. Вместо него нужно применить оператор TRUNCATE TABLE, который выполняет то же самое, но делает это намного быстрее
TRUNCATE TABLE Студент
17
Правила использования DELETE и UPDATE
Никогда не выполняйте оператор UPDATE или DELETE без предложения WHERE, если только вы на самом деле не хотите обновить или удалить каждую строку.
Используйте первичный ключ в предложении WHERE всякий раз, когда это оказывается возможным. (Вы можете указать отдельные первичные ключи, несколько значений или диапазоны значений.)
Прежде чем использовать предложение WHERE с оператором UPDATE или DELETE, сначала проверьте его с оператором SELECT, чтобы убедиться в том, что оно правильно фильтрует записи.
Используйте средства принудительного обеспечения ссылочной целостности данных, чтобы СУБД не позволяла удалять строки, для которых в других таблицах имеются связанные с ними данные.
Некоторые СУБД позволяют администраторам БД устанавливать ограничения, препятствующие выполнению операторов UPDATE или DELETE без предложения WHERE. Используйте это.
18
