В этом примере применен предикат IN, сравнивающий выражение слева от него (поле “Преподаватель” из таблицы “Экзаменаторы”) со списком значений, выдаваемых подчиненным запросом. В результате главный запрос выдает название предмета и дату экзаменов, которые проводят профессора ( математика, 8.01.99 ).
В главном запросе введен псевдоним Э для таблицы “Экзаменаторы”. Для каждой таблицы и каждого запроса можно при желании определить альтернативное имя. Это имя можно использовать как псевдоним вместо полного имени таблицы при задании имен столбцов в списке выбора, в предложении WHERE или в подчиненных предложениях. Если имя таблицы или имя запроса совпадает с зарезервированным словом языка SQL (например ORDER), такое имя нужно заключить в квадратные скобки.
Пример(запрос11)
Предикат EXISTS проверяет не значения отдельных полей, а наличие или отсутствие в подчиненном запросе записей, удовлетворяющих условиям отбора в предложениях WHERE и HAVING. Поскольку отдельные поля не возвращаются, в подчиненном запросе список полей представлен звездочкой. В данном примере запрос выдает список предметов, по которым нет двоек, и даты экзаменов (математика 8.01.99, кибернетика 12.01.99).
Внутренний запрос содержит ссылку на поле внешней таблицы (псевдоним Э). В таких случаях подчиненный запрос выполняется для каждой записи внешнего запроса.
UPDATE
Инструкция UPDATE позволяет производить изменения сразу во всех полях таблицы. Синтаксис:
UPDATE таблицы SET присваивания WHERE условие
Таблицы - отдельная таблица или объединение таблиц, как в предложении FROM.
Присваивания - последовательность присваиваний, разделенных запятыми. Каждое присваивание имеет вид “поле=выражение”.
В указанной таблице для всех записей, удовлетворяющих условию, производятся присваивания.
Пример(запрос12)
Даты всех экзаменов по информатике сдвигаются на один день вперед.
Особенно удобно использовать инструкцию UPDATE, если требуется изменить сразу много записей или записи, подлежащие изменению, находятся в разных таблицах.