SQL запросы в MS Access
Структура SQL запроса
SELECT [DISTINCT/ALL] <имена полей возвращаемых запросом>
FROM <имена таблиц используемых в запросе>
WHERE <условия отбора записей>
GROUP BY <имена группируемых полей>
HAVING <условия отбора>
ORDER BY <список полей сортировки>;
SELECT (наличие обязательно!)
поля, которые необходимо вывести в результате выполнения запроса;
поля или вычисления, на основе которых отбираются данные;
DISTINCT (в переводе с английского ОТЛИЧИЕ) — аргумент, который устраняет двойные значения
Примеры:
SELECT * - выведет все поля таблицы или таблиц
SELECT Поле1, Поле2 - выведет два поля, наименования полей не подержат пробелов
SELECT [Поле номер 1], [Поле номер 2] - выведет два поля, наименования полей подержат пробелы
SELECT Таблица.Поле1, Таблица.[Поле 2]
SELECT Count(Поле1), Поле2 - использование статистической функции Count
SELECT DISTINCT Поле1 - выведет все записи исключив повторяющиеся
FROM (наличие обязательно!)
Указываются таблицы используемые в запросе (поля которых использованы в предложении Select
Не указываются поля для выборки.
Связи между данными из разных источников;
Примеры:
FROM Таблица1, Таблица2
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.[Поле номер 1] = Таблица2.[Поле номер 5] - таблица 1 связана с таблицей 2 с помощью полей "Поле номер 1" в первой таблице и "Поле номер 5"
Например, некоторые таблицы в базе данных "Колледж" связаны с помощью поля "Номер зачетной книжки"
WHERE
Определяет условия отбора полей, которым должны соответствовать все записи, включаемые в результаты.
Примеры:
WHERE Поле1 = 100 - выведет записи, в которых значение поля "Поле1" равно 100
WHERE Поле1>=2 AND Поле1<=4 - выведет записи, в которых значение поля1 находится в приведенном интервале
Примеры создания запросов можно посмотреть в Л.р. № 5 Создание запросов
ORDER BY
ASC – по возрастанию
DESC – по убыванию
указание способа сортировки результатов при выполнении запроса.
находится в конце инструкции SQL
содержит список полей, для которых нужно выполнить сортировку
Пример:
ORDER BY Поле2 DESC, [Поле 1] - отсортирует значения поле2 по убыванию, поле 1 останется с сортировкой по умолчанию
GROUP BY
Используется при наличии агрегатных функций
Необходимо для задания полей, которые не используются в агрегатной функции
Следует после предложения WHERE или FROM
Пример:
SELECT COUNT ([E-mail Address ]), Company
****
GROUP BY Company - запрос, в котором будет представлено количество электронных адресов по каждой компании
HAVING
Ограничение статистических значений с помощью условий группировки
Указывать условие для ограничения полю со статистической функцией с помощью WHERE нельзя, но можно с помощью HAVING
Пример:
SELECT COUNT ([E-mail Address]), Company
****
HAVING COUNT ([E-mail Address]) > 1 запрос, в котором будет представлено количество электронных адресов по каждой компании, но количество адрес должно быть больше 1
Обязательно указывать в HAVING именно поле с функцией, а не просто поле
Виды ограничений соответствуют приложению WHERE
Задание 1
Создать 3-4 запроса с условием с помощью SQL (использовать только Select, From, Where). В названии запроса указать, что он выполнен с помощью SQL
Задание 2
Создать запрос, который выведет личные данные (ФИО) всех студентов, которые получили по информатике оценку "отлично" или "хорошо". Название запроса "SQL отличники и хорошисты по информатике".
Создать запрос, который выведет количество студентов в каждой группе. Отсортировать по убыванию количества студентов. Название запроса "SQL Кол-во студентов, по убыванию".
Создать запрос, который выведет количество зачетов у каждого педагога, если зачетов у педагога не было, то их выводить не нужно. Название запроса "SQL Кол-во зачетов у педагогов".