- •Введение
- •Лабораторное занятие № 1
- •Описание учебного примера.
- •Удаление таблиц
- •Создание таблиц
- •Имена ограничений
- •Ограничения null и not null
- •Ограничение primary key
- •IdSubject, idReport, nTerm));
- •Ограничение unique
- •Ограничение Foreign key
- •Ограничение check
- •Вопросы для самоконтроля к лабораторной работе № 1
- •Лабораторная работа № 2
- •Команда вставки - insert
- •Команда обновления - update
- •Команда удаления - delete
- •Вопросы для самоконтроля к лабораторной работе № 2
- •Лабораторная работа №3
- •Команда alter table
- •Модификация ограничений
- •Добавление ограничений с ограниченной областью проверки
- •Отключение и подключение ограничений
- •Правила для изменения и модификации описания столбцов
- •Добавление столбца
- •Модификация столбца
- •Удаление столбца
- •Удаление таблицы
- •Переименование таблицы
- •Вопросы для самоконтроля к лабораторной работе № 3
- •Лабораторная работа № 4
- •Выборка данных из нескольких таблиц
- •Определение условий выборки в предложении where.
- •Групповые функции и предложение group by
- •Наиболее часто встречающиеся ошибки при выполнении group by
- •Предложение order by
- •Вопросы для самоконтроля к лабораторной работе № 4
- •Лабораторная работа № 5
- •Подзапросы
- •Inner join Student s
- •Inner join Student s
- •Inner join
- •Inner join Student s
- •Вопросы для самоконтроля к лабораторной работе № 5
- •Лабораторная работа №6
- •Представления
- •Вопросы для самоконтроля к лабораторной работе № 6
- •Лабораторная работа №7
- •Хранимые процедуры
- •Оператор use
- •Оператор declare
- •Операторы set и select
- •Функция @@identity
- •Функция @@error
- •Объявление параметров
- •Изменение хранимых процедур
- •Удаление хранимой процедуры
- •Лабораторная работа №8
- •If exists
- •Вопросы для самоконтроля к лабораторной работе № 8
- •Задания в тестовой форме
- •Литература Оглавление
Наиболее часто встречающиеся ошибки при выполнении group by
Если вы сделаете попытку указать в предложении GROUP BY атрибут, которого нет в списке SELECT, то выдается сообщение об ошибке.
Пример 65
Задание.
Вывести названия всех дисциплин, по которым средняя оценка меньше 4.
Решение:
SELECT NameSubject, ROUND(AVG(Mark),1)
FROM Progress P,Subject S
WHERE P.IDSubject=S.IDSubject
GROUP BY P.IDSubject
HAVING AVG(Mark)<4
Результат реализации запроса:
Server: Msg 8120
Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Другая часто встречающаяся ошибка связана с тем, что в предложении SELECT указываются атрибуты, которые не являются параметрами группировки или агрегатной функции.
Пример 66
SELECT NameSubject, P.IDSubject, ROUND(AVG(Mark),1)
FROM Progress P,Subject S
WHERE P.IDSubject=S.IDSubject
GROUP BY P.IDSubject
HAVING AVG(Mark)<4
Результат реализации запроса:
Server: Msg 8120
Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Выходом из положения может быть группировка по атрибуту NameSubject.
Предложение order by
Предложение ORDERBYпозволяет выполнить сортировку результатов запроса, оно всегда ставится в конец команды SELECT. По умолчанию сортировка идет по возрастанию. Для изменения порядка сортировки используются опцииASC– возрастание или DESC – убывание. При сортировке по нескольким столбцам столбцы перечисляются через запятую.
Пример 67
Задача.
Вывести список имен студентов по возрастанию.
Решение.
SELECT StName ФИО
FROM Student
ORDER BY StName;
Результат реализации запроса:
Пример 68
Задача.
Вывести список имен и оценок студентов, расположив по возрастанию имена студентов, а также расположив для каждого студента его оценки по возрастанию.
Решение.
SELECT DISTINCT StName ФИО, Mark Оценка
FROM Student, Progress
WHERE Student.NRecordBook= Progress.NRecordBook
ORDER BY StName, Mark;
Результат реализации запроса:
Задание 17
Вывести имена и номера зачеток всех студентов, у которых нет ни одной оценки 3.
Задание 18
Вывести имена всех преподавателей, которые ведут дисциплину Базы данных.
Задание 19
Вывести все дисциплины, по которым сдается экзамен. Название дисциплин расположить в порядке возрастания.
Задание 20
Вывести имена преподавателей и название дисциплин, которые они ведут, если по этим дисциплинам выставлена хоть одна оценка.
Задание 21
Вывести имена преподавателей которые преподают как в 5 так и в 6 семестрах.
Вопросы для самоконтроля к лабораторной работе № 4
Какие предложения в команде SELECT являются обязательными?
Какое из предложений используется для исключения групп строк из результата запроса?
C помощью какого предложения создаются группы?
В каком порядке в команде SELECT должны располагаться предложения ORDER BY, GROUP BY, WHERE?
В чем заключается различие между предложениями WHERE и HAVING?
Всегда ли запрос, построенный с использованием предложений HAVING может быть преобразован в эквивалентный запрос без использования этого предложения?
Какие предложения позволяют ограничить количество выводимых строк?
В чем отличие простого запроса от сложного?
С помощью каких ключевых слов в команде SELECT осуществляется проверка вхождения результата вычисления выражения в заданное множество?
Какая функция используется для подсчета кортежей, отвечающих заданному условию?
Какой вид будет иметь команда SELECT, реализующая операцию проекции на атрибуты AB в отношении со схемой R=ABCD?
Какое из предложений команды SELECT накладывает ограничение на отбор групп?
Как следует сформировать запрос к таблице R1=AB и R2=CD, чтобы получить их декартово произведение?
Возможно ли используя команду SELECT реализовать операцию деления?
В каких случаях нельзя для осуществления операции выбора использовать предложение WHERE?