ВУЗ:
Составители:
Рубрика:
41
лицы, не затронут таблицу ОТЛИЧНИК. Если вы хотите, чтобы в таблице
ОТЛИЧНИК поддерживался список отличников, следует использовать воз-
можности представления.
Замечание: При соблюдении условий первого замечания допускается
использование группировок в запросах оператора INSERT.
Удаление строк из таблицы
Общий синтаксис оператора удаления строк следующий.
Синтаксис:
DELETE FROM <имя_таблицы>
[WHERE clause]
Если условие не указано, то из таблицы удаляются все строки, но сама
таблица остается. В условие отбора стандартом SQL-92 допускается вставка
подзапросов.
Запрос: Удалить из таблицы СТУДЕНТ информацию о студентах, по-
лучивших более двух оценок «два».
Решение:
DELETE FROM СТУДЕНТ
WHERE 2 < (SELECT Count(*) FROM УСПЕВАЕМОСТЬ
WHERE СТУДЕНТ.ID_Stud = УСПЕВАЕМОСТЬ.ID_Stud
AND Оценка=2))
Замечание: В операторе DELETE, в отличие от оператора INSERT,
подзапрос предложения WHERE может быть кореллированным с таблицей,
указанной в предложении FROM оператора DELETE, т.е. можно ссылаться
на поле текущей записи таблицы, из которой удаляют. Однако по-прежнему
нельзя ссылаться на саму таблицу в предложении FROM подзапроса.
Запрет на использование списка таблиц, для которых ставится условие
отбора, для сложных условий неизбежно приводит к множеству вложенных
подзапросов. Некоторые платформы допускают указание такого списка перед
WHERE clause.
Синтаксис:
DELETE FROM <имя_таблицы>
FROM <список_таблиц>
WHERE clause
Замечание: В первом предложении FROM указывается одна таблица,
из которой будут удалены записи, а во втором – список таблиц, относящийся
к оператору условия. Второй список не должен содержать таблицу, из кото-
рой удаляют записи.
Запрос: Удалить из таблицы УСПЕВАЕМОСТЬ сведения о сдачах
Иванова И.И.
Решение:
DELETE FROM УСПЕВАЕМОСТЬ
FROM СТУДЕНТ
WHERE СТУДЕНТ.ID_Stud = УСПЕВАЕМОСТЬ. ID_Stud
42
AND СФам=’Иванов И.И.’
Изменения данных
Общий синтаксис оператора модификации уже существующих строк
следующий.
Синтаксис:
UPDATE <имя_таблицы>
SET <имя_поля> = <значение | выражение>
[{, <имя_поля> = <значение | выражение>}…]
[WHERE clause]
Замечание: Если предложение WHERE отсутствует, то изменения вно-
сятся во все строки таблицы.
Замечание: В отличиеот оператора INSERT при модификации данных
можно использовать вычисляемые выражения.
Замечание: Оператор UPDATE использует подзапросы так же, как и
оператор DELETE.
Запрос: Студенты, проживавшие по адресам ‘A2’ и ‘A3’, сменили их
на адрес ‘A10’. Внести соответствующие изменения в БД.
Решение:
UPDATE СТУДЕНТ
SET САдрес = ‘A10’
WHERE САдрес = ‘A2’OR САдрес = ‘A3’
Запрос: Изменить значение поля Консультант на NULL, если средний
балл студента больше или равен 4.
Решение:
UPDATE СТУДЕНТ
SET Консультант = NULL
WHERE 4<= (SELECT AVG(Оценка) FROM УСПЕВАЕМОСТЬ
WHERE СТУДЕНТ.ID_Stud = УСПЕВАЕМОСТЬ. ID_Stud)
В заключение отметим, что неспособность в подзапросах сослаться на
модифицируемую таблицу, вносит значительные ограничения в использова-
ние операторов изменения данных. Например, нельзя изменить значение по-
ля консультант на NULL, если средний балл студента больше или равен
среднему баллу его консультанта.
ЯЗЫК ОПИСАНИЯ ДАННЫХ
Создание таблиц
До сих пор мы обсуждали часть SQL, именуемую DML – Data Ma-
nipulation Language. Этот параграф кратко описывает основы другой состав-
ляющей SQL – DDL – Data Definition Language.
Общий синтаксис команды создания таблицы следующий.
Синтаксис:
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »