|
FROM СТУДЕНТ
WHERE NOT EXISTS
(SELECT*
FROM ЗАНЯТИЯ
WHERE NOT EXISTS
(SELECT*
FROM ЗАПИСЬ
WHERE ЗАНЯТИЯ.НазваниеПредмета = ЗАПИСЬ.НазваниеПредмета
AND ЗАПИСЬ.НомерСтудента = СТУДЕНТ.ЛичныйНомер))
Этот запрос состоит из трех частей. В нижней части ведется поиск предметов, на которые записан студент. Средняя часть определяет, есть ли такие предметы, на которые студент не записан. Если нет, то студент записан на все предметы, и его имя отображается в результатах.
Этот запрос может оказаться сложным для понимания. Если у вас есть проблемы с этим, используйте данные, представленные на рис. 9.2, и следуйте инструкциям. Для этих данных ответ состоит в том, что нет ни одного студента, который был бы записан на все предметы. Вы можете попытаться изменить данные таким образом, чтобы какой-либо студент был записан на все предметы. Еще один способ уяснить себе суть этого запроса — попробовать представить его в другом виде, без применения ключевого слова NOT EXISTS. Проблемы, с которыми вы при этом столкнетесь, помогут вам понять, почему оператор NOT EXISTS необходим.
Изменение данных
В SQL предусмотрены средства для изменения данных в таблицах путем вставки новых строк, удаления строк и модификации значений в существующих строках. SQL позволяет также менять структуру данных, хотя мы не будем затрагивать эту тему до глав 12 и 13.
Вставка данных
Строки можно вставлять в таблицы по одной или группами. Чтобы вставить одну строку, мы пишем следующее:
INSERT INTO ЗАПИСЬ
VALUES (400, 'BD445', 44)
После ключевого слова INSERT INTO указывается имя таблицы, а после ключевого слова VALUES — вставляемые значения.
Если мы знаем не все данные (например, нам неизвестно значение атрибута ПорядковыйНомер), можно поступить следующим образом:
INSERT INTO ЗАПИСЬ
(НомерСтудента. НазваниеПредмета)
VALUES (400, 'BD445', 44)
Атрибут ПорядковыйНомер может быть добавлен позже. Обратите внимание, что в результате этого запроса поле Позиция в новой строке будет иметь нулевое значение.
Можно также копировать группы строк из одной таблицы в другую. Пусть, например, нам нужно заполнить таблицу ТРЕТЬЕКУРСНИК, показанную на рис. 9.1.
INSERT INTO ТРЕТЬЕКУРСНИК
VALUES
(SELECT ЛичныйНомер, Имя, Специальность
FROM СТУДЕНТ
WHERE Курс = 'С3')
Вложенный оператор SELECT, как и все выражения SELECT, описанные в предыдущих двух разделах, позволяет указывать строки для копирования. Это свойство предоставляет весьма широкие возможности.
Дата добавления: 2015-07-08; просмотров: 218 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
FROM ЗАПИСЬ В | | | Удаление данных |