Примеры
Пример 1
Дано: Отношение Студенты(ФИО, Номер_зк); и Группы (Номер_зк, Группа). Обозначим Студенты – R1, а Группы - R2.
Считаем, что R2(Номер_зк) – внешний ключ на одноименный атрибут в отношении R1.
Отношения R1 и R2 содержат следующие кортежи:
R1 (студенты)
| ФИО | Номер з.к.
| | Бек А.Е. | 030303
| | Бец А.Т. | 040404
| | Тхо Н.Х. | 050505
|
R2 (группы)
| Номер з.к. | АА21
| | 030303 | АА31
| | 040404 | АА41
| | 050505 | ВИ11
|
Надо: Написать запрос SQL выбирающий номера зачетных книжек тех студентов, которые обучались хотя бы в одной группе.
Решение:
SELECT r1.Номер_зк FROM r1,r2 WHERE r1.Номер_зк = r2.Номер_зк;
Результат выполнения запроса:
| Номер з.к.
| | 030303
| | 040404
| | 050505
|
Пример 2
Дано: Отношение Оценки(ФИО, Дисциплина, Оценки); Группы (ФИО, Группа); и Дисциплины (Группа, Дисциплина). Обозначим Оценки – R3, Группы – R4, Дисциплины – R5.
R3 (оценки)
| ФИО | Дисциплина | Оценка
| | Петров Ф.И. | Базы данных | 5
| | Сидоров К.А.td>Базы данных | 4
| | Миронов А.В. | Базы данных | 2
| | Петров Ф.И. | Моделирование | 5
| | Миронов А.В. | Моделирование | Null
| | Трофимов П.А. | Сети ЭВМ | 4
| | Уткина Н.В. | Сети ЭВМ | 5
|
R4 (группы)
| ФИО | Группа
| | Петров Ф.И. | АИ21
| | Сидоров К.А. | АИ21
| | Миронов А.В. | АИ21
| | Трофимов П.А. | АИ22
| | Уткина Н.В. | АИ22
|
R5 (дисциплины)
| Группа | Дисциплина
| | АИ21 | Базы данных
| | АИ21 | Моделирование
| | АИ22 | Сети ЭВМ
| | АИ22 | Базы данных
|
Надо: Вывести все оценки студентов в алфавитном порядке по убыванию ФИО.
Решение:
SELECT r3.ФИО, r3.Оценка FROM r3 ORDER BY r3.ФИО DESC;
Пример 3
Надо: Вывести оценки студентов (отношение R3 из примера 2), не проходивших итоговую аттестацию (NULL – значения), либо получивших неудовлетворительную оценку. Сортировка по полю ФИО по возрастанию.
Решение:
SELECT r3.ФИО, r3.Оценка FROM r3 WHERE (r3.Оценка IS NULL) OR (r3.Оценка < 3) ORDER BY r3.ФИО;
В примере 3 скобки не являются обязательными.
|