- •Домашнее задание для подготовки к зачету.
- •Создание файла базы данных
- •Создание структуры таблиц Создание структуры таблицы страны
- •Создание структуры таблицы фирмы
- •Создание структуры таблицы туры
- •Связывание таблиц (создание схемы данных)
- •Заполнение таблиц Для ввода данных в таблицу страны необходимо:
- •Формирование запросов в режиме конструктора
- •Формирование запросов на языке sql
- •Group by КодФирмы Конструирование формы
- •Конструирование отчета
- •Создание запросов на языке sql
- •Создание запроса на языке sql в субд Аccess
- •Редактирование запроса
- •Извлечение информации из таблиц
- •Вывод записей в нужном порядке
- •Выбор записей, удовлетворяющих условию отбора
- •Использование агрегатных функций
- •Группировка данных
- •Вычисления в запросах
- •Вывод данных из нескольких таблиц
Вывод записей в нужном порядке
В общем случае вывод записей в запросе происходит в порядке, который может нас и не устраивать. Для вывода записей в определенном порядке используется директива ORDER BY, за которой указывается поле, по значениям которого производится упорядочение, и тип упорядочения: ASC – по возрастанию (выполняется по умолчанию); DESC – по убыванию.
Пример 4. Вывести все сведения из таблицы ТУРЫ в порядке убывания даты.
SELECT *
FROM ТУРЫ
ORDER BY Дата DESC
Выбор записей, удовлетворяющих условию отбора
Для формирования условия отбора используются:
1) операции сравнения: < меньше; <= меньше или равно; <> не равно; = равно; >= больше или равно; > больше; LIKE – сравнение для текстовых величин;
2) логические операции: NOT – не (отрицание); AND – и (объединение); OR – или;
3) директива BETWEEN…AND – проверка принадлежности к диапазону.
Пример 5. Вывести сведения обо всех турах дороже 30 тыс. р. в порядке возрастания количества туристов.
SELECT *
FROM ТУРЫ
WHERE Цена > 30000
ORDER BY Колич
Пример 6. Вывести сведения обо всех турах дешевле 30 тыс. р. с количеством участников менее 20 человек.
SELECT *
FROM ТУРЫ
WHERE (Цена<30000) AND (Колич<20)
Пример 7. Вывести сведения обо всех турах, состоявшихся до 12 июня 2002 г.
SELECT *
FROM ТУРЫ
WHERE Дата < #06/12/2002#
Обратим внимание на формат даты в запросах на языке SQL:
значение даты заключается в символы «#» (решетка);
на первом месте идет месяц, потом день и год;
в качестве разделителя между месяцем, днем и годом используется косая черта.
Пример 8. Вывести сведения обо всех турах с числом участников от 18 до 22 человек.
SELECT *
FROM ТУРЫ
WHERE Колич BETWEEN 18 AND 22
Заметим, что в конструкции BETWEEN … AND граничные значения входят в диапазон.
Директива LIKE применяется только к полям символьного типа. Она позволяет выбрать записи, в которых значения поля совпадают с шаблоном, указанным в запросе. При этом используются следующие соглашения:
символ «?» замещает любой одиночный символ, например, «к?т» соответствует словам «кот» или «кит», но не слову «крот»;
знак «*» (звездочка) замещает последовательность любого числа символов (включая и нулевое их количество), например, «*к*т» будет соответствовать словам «экспорт», «кот», «акт», но не слову «квота».
Пример 9. Вывести названия всех фирм, оканчивающихся на букву «а».
Внимание! В условии отбора буква «а» должна быть задана как русская, поскольку названия фирм заданы на русском языке. |
SELECT Фирма FROM ФИРМЫ WHERE Фирма LIKE '*а'
Пример 10. Вывести названия всех стран, содержащих хотя бы одну букву «е».
SELECT Страна
FROM СТРАНЫ
WHERE Страна LIKE '*е*'
Использование агрегатных функций
Существуют функции, которые позволяют выполнить операции над группами выбранных полей:
· COUNT – подсчитывает количество строк, полученных в результате выполнения запроса;
· SUM – вычисляет сумму значений выбранного поля для всех строк, полученных в результате запроса;
· AVG – вычисляет среднее арифметическое для выбранного поля;
· MAX – вычисляет наибольшее из всех значений выбранного поля;
· MIN – вычисляет наименьшее из всех значений выбранного поля.
Пример 11. Вывести общее количество туристов, среднюю и максимальную цены одного тура.
SELECT SUM(Колич), AVG(Цена), MAX(Цена)
FROM ТУРЫ
Но следующий вариант смотрится лучше:
SELECT SUM(Колич) AS [Всего туристов],
AVG(Цена) AS [Средняя цена тура],
MAX(Цена) AS [Максимальная цена]
FROM ТУРЫ