Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными.doc
Скачиваний:
46
Добавлен:
11.03.2015
Размер:
1.51 Mб
Скачать

Содержание работы.

1. Выполните следующий запрос и объясните его смысл:

SELECT дисциплины.название

FROM дисциплины

WHERE дисциплины.код IN

(SELECT код_дисц

FROM

группы INNER JOIN группы_дисциплины

ON группы.код = группы_дисциплины.код_группы

WHERE группы.название = [введите название группы])

2. Создайте следующие запросы:

а) получить список студентов с указанием группы, которые не сдавали ни одного экзамена.

б) вывести Фамилии студентов-задолжников и названия дисциплин, по которым они не сдали экзамен.

в) показать фамилии преподавателей, преподающих в группе “Гр1” (без использования подзапроса).

г) сделать предыдущее задание с использованием подзапроса.

Содержание отчета

  1. Напишите текст созданных запросов

  2. Приведите ответы на контрольные вопросы

Контрольные вопросы

1. Можно ли запрос из примера 5 записать следующим образом:

SELECT *

FROM студенты

WHERE код_группы IN

( SELECT код FROM Группы WHERE название = ‘Гр2’ )

AND EXISTS

(SELECT *

FROM сессия

WHERE студенты.код = сессия.код_студ AND оценка >3 )

  1. В каких случаях вложенный подзапрос выполняется один раз, а в каких несколько?

  2. Можно ли вкладывать одну агрегатную функцию в другую?

Лабораторная работа № 6.

Запросы на изменение

Цель работы: Получить представление о способах использования запросов на изменение

Основные понятия

Вставка записей в таблицу

Все стоки в SQL вводятся при помощи команды обновления INSERT. В простейшем случае команда INSERT имеет синтаксис:

INSERT INTO <имя таблицы> (<поле1>, <поле2>…)

Values (<значение>, <значение>… );

Пример 1.

Добавить нового студента.

INSERT INTO студенты (код, фамилия, имя, отчество, телефон, код_группы)

VALUES ( 11, "Сидоров", "Олег", "Петрович", “34-56-78”, 2)

Вставка записей из другой таблицы

Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом. Для этого достаточно заменить предложение VALUES на соответствующий запрос.

Пример 2.

Физика читается у всех групп преподавателем Мироновым (его код = 2). Внести соответствующие записи в таблицу Группы_Дисциплины.

INSERT INTO Группы_Дисциплины (код_дисц,код_группы,код_преп)

SELECT дисциплины.код,группы.код , 2

FROM Дисциплины,Группы

WHERE Дисциплины.название = 'Физика' AND Группы.N_курса=1

Обновление таблиц

По команде UPDATE можно изменять некоторые или все значения в существующей строке. Эта команда содержит предложение UPDATE, позволяющее указать имя таблицы, для которой выполняется операция, и SET предложение, определяющее изменение, которое необходимо выполнить для определенного столбца.

Прямое обновление

Пример 3.

Студента Иванова перевести из группы Гр1 в группу Гр2.

UPDATE студенты

SET студенты.код_группы = 2

WHERE студенты.фамилия = "Иванов" AND студенты.код_группы =1

Обновление с подзапросом

Источником данных для команды UPDATE может быть результат, возвращаемый подзапросом.

Пример 4.

Студентам, сдавшим сессию без троек, назначить стипендию (предполагается, что нужно сдать 4 экзамена)

UPDATE студенты SET стипендия = YES

WHERE 4 = ( SELECT count(*) FROM сессия WHERE сессия.код_студ = студенты.код) AND

NOT EXISTS

(SELECT * FROM сессия WHERE студенты.код = сессия.код_студ AND (сессия.оценка < 4 OR сессия.оценка IS NULL) );

В первом подзапросе проверяем, все ли экзамены сдавал студент. Во втором – не получил ли студент хоть одну оценку < 4 или по всем ли экзаменам проставлены оценки.