- •Язык определения данных
- •Модификация структуры таблицы
- •Язык манипулирования данными
- •Insert into Факультет (аббревиатура, название)
- •Обновление данных
- •Простые запросы
- •Естественное соединение
- •Задания. Модификация структуры таблицы(1)
- •Задания. Ввод (добавление) данных в таблицу(2)
- •Insert into Студент (рег_номер, номер, фамилия)
- •Insert into Специальность (номер, направление, шифр)
- •Values ('11.11.11', 'Новая специальность', 'ис'); задания. Обновление данных. (5)
- •Задания. Простые запросы(13)
- •Задания. Естественное соединение
- •Задание. Декартово произведение
- •Задания. Запросы с подзапросами
Задания. Естественное соединение
Задание. Вывести данные о том, на каких факультетах и кафедрах, по каким специальностям обучаются студенты. Запрос выполнить как естественное соединение таблиц «Кафедра», «Специальность» и «Студент».
SELECT *
FROM Кафедра
NATURAL JOIN Специальность
NATURAL JOIN Студент;
Задание. Вывести данные о том, на каких факультетах и кафедрах, по каким специальностям обучаются студенты. Запрос выполнить как естественное соединение таблиц «Кафедра», «Специальность» и «Студент» на основе команды INNER JOIN.
SELECT *
FROM Кафедра
INNER JOIN Специальность ON Кафедра.шифр = Специальность.шифр
INNER JOIN Студент ON Специальность.номер = Студент.номер;
Задание. Вывести все данные о преподавателях: «Сотрудник. таб_номер», «шифр», «фамилия», «должность», «зарплата», «звание», «степень» — как запрос на естественное соединение таблиц «Сотрудник» и «Преподаватель», связанных категориальной связью.
SELECT Сотрудник.таб_номер, Сотрудник.шифр, Сотрудник.фамилия, Сотрудник.должность, Сотрудник.зарплата, Преподаватель.звание, Преподаватель.степень
FROM Сотрудник
NATURAL JOIN Преподаватель;
Задание. Вывести данные о том, какие дисциплины преподают разным специальностям. Вывести «Специальность.номер», «Специальность.шифр», «Дисциплина.код», «Дисциплина.название». Запрос оформить как естественное соединение таблиц «Специальность» и «Дисциплина», связанных ассоциативной таблицей «Заявка».
SELECT Специальность.номер, Специальность.шифр, Дисциплина.код, Дисциплина.название
FROM Специальность
NATURAL JOIN Заявка
NATURAL JOIN Дисциплина;
Задание. Вывести данные («факультет», «Кафедра.шифр», «Ка- федра.название», «код», «Дисциплина.название», «объем») о кафедрах и читаемых ими курсах. Запрос оформить на основе естественного соединения таблиц «Кафедра» и «Дисциплина» по полям «Кафедра, шифр» и «Дисциплина.исполнитель». Здесь «исполнитель» — имя роли, которую играет атрибут «шифр» в таблице «Дисциплина».
SELECT Факультет, Кафедра.шифр, Кафедра.название, Дисциплина.код, Дисциплина.название AS Название_Дисциплины, Дисциплина.объем
FROM Кафедра
NATURAL JOIN Дисциплина;
Задание. Вывести из таблиц «Кафедра» и «Сотрудник» шифр («шифр»), название («название») кафедр, а также среднюю зарплату и количество сотрудников с соответствующими заголовками только для тех кафедр, у которых средняя зарплата не меньше заданного значения.
SELECT Кафедра.шифр, Кафедра.название, AVG(Сотрудник.зарплата) AS Средняя_Зарплата, COUNT(Сотрудник.таб_номер) AS Количество_Сотрудников
FROM Кафедра
JOIN Сотрудник ON Кафедра.шифр = Сотрудник.шифр
GROUP BY Кафедра.шифр, Кафедра.название
HAVING AVG(Сотрудник.зарплата) >= [Ваше заданное значение];
Задание. Декартово произведение
Задание. Вывести декартово произведение трех таблиц «Кафедра», «Специальность» и «Студент».
SELECT *
FROM Кафедра
CROSS JOIN Специальность
CROSS JOIN Студент;
Задания. Запросы с подзапросами
Задание. Вывести данные из таблицы «Студент» о студентах, которые обучаются по той же специальности, что и студент с заданным номером (столбец «рег_номер»).
SELECT S.*
FROM Студент S
JOIN Специальность Sp1 ON S.номер = Sp1.номер
JOIN Специальность Sp2 ON Sp1.шифр = Sp2.шифр
WHERE S.рег_номер <> 'заданный_номер' -- Замените 'заданный_номер' на конкретный номер студента
AND Sp2.номер = (SELECT номер FROM Студент WHERE рег_номер = 'заданный_номер');