1. Основы языка SQL
2. Функции запросов и их создание.
3. Запросы на выборку данных из таблицы
4. Запросы к многотабличным базам данных
После того как. БД создана, ее можно использовать в качестве информационного справочника. В этом и состоит основное назначение всякой информационной системы.
Действия, выполняемые над информацией, хранящейся в базе данных, называются манипулированием данными. К ним относятся выборка данных по некоторым условиям, сортировка данных, обновление, удаление и добавление данных. Выполнение этих действий производится с помощью запросов.
Запрос — это команда на выполнение определенного вида манипулирования данными.
В различных СУБД чаще всего используются два основных языка описания запросов:
1. язык QBE (Query by Example) — язык запросов по образцу;
2. SQL (Structured Query Language; — структурированный язык запросов.
Язык SQL предназначен для выполнения операций над таблицами (создание, удалений, изменение структуры) и над данными, хранящимися в таблицах. (выборка, изменение, добавление, удаление, сортировки),
|
|
Наиболее часто используемой командой SQL является команда выборки. Для осуществления выборки из однотабличной БД формат команды выборки следующий:
SELECT <список выводимых полей> FROM <имя таблицы> WHERE <условие выбора>
ORDER BY <ключ сортировки> [DESC]
Не все составляющие этой команды являются обязательными. Могут отсутствовать условия выбора и параметры сортировки. Кроме того, ключей сортировки может быть несколько. Тогда они записываются в порядке приоритетов: первичный, вторичный и т.д. Сортировка может производиться по возрастанию и по убыванию значения ключа. При отсутствии опции DECS сортировка производится «по возрастанию», при наличии — «по убыванию».
Пример 4.1. Используя таблицу «Ученики», получить таблицу, содержащую фамилии, имена и адреса учеников, родившихся до 2000 г. Сортировать таблицу в алфавитном порядке то фамилиям
Запрос на языке SQL имеет следующий вид:
SELECT Ученики.ФАМИЛИЯ, Ученики. ИМЯ, Ученики.АДРЕС
FROM Ученики
WHERE (((Ученики. ДАТА_РОЖД) <#l/l /2000#))
ORDER BY Ученики. ФАМИЛИИ;
В итоговую таблицу будет выводиться три поля: фамилия, имя и адрес ученика. В запросах указываются комбинированные имена полей:
<имя таблицы>.<имя поля>
Условие выбора обозначает поиск только тех учеников из таблицы, дата рождения которых меньше (раньше), чем 1 января 2000 г. Итоговая таблица будет отсортирована в алфавитном порядке фамилий учеников.
Этот же запрос можно сформировать, используя Конструктор запросов Access. После запуска Конструктора откроется окно «Добавление таблицы». Следует выделить название таблицы «Ученики» и выполнить команду Добавить (рис. 4.10).
|
|
SELECT Успеваемость. НОМЕР_УЧ, Успеваемость.ПРЕДМЕТ, Успеваемость.ГОД
FROM Успеваемость WHERE ((Успеваемость. ПРЕДМЕТ)= '"математика") AND ((Успеваемость. ГОД) =5))
ORDER BY Успеваемость.НОМЕР_УЧ;
В этой команде используется логическая операция AND (И), которая связывает между собой два условия выборки: ПРЕДМЕТ="математика" И ГОД=5. Такое условие выбора будем называть сложным условием. Информация по запросу будет выбрана из тех записей таблицы, в которых одновременно выполняются два эти условия.
эти две таблицы связаны между собой через общее ключевое поле НОМЕР_УЧ. Графическое изображение связи между таблицами называется схемой базы данных. Схему можно отобразить на экране, отдав команду Работа с базами данных — Схема данных. В нашем случае выведется изображение, представленное на рис. 4.15,
Пример 4.3. Используя связанные таблицы «Ученики» и «Успеваемость», получить фамилии и имена учеников, имеющих пятерку по математике за год.
Команда на SQL имеет следующий вид;
SELECT Ученики.ФАМИЛИЯ, Ученики.ИМЯ, Успеваемость.ПРЕДМЕТ,
Успеваемость.ГОД
FROM Ученики INNER JOIN Успеваемость ON
Ученики.НОМЕР_УЧ = Успеваемость.НОМЕР_УЧ
WHERE ((Успеваемость. ПРЕДМЕТ) ="математика") AND ((Успеваемость.ГОД)=5))
ORDER BY Ученики. ФАМИЛИЯ
По этому запросу в итоговую таблицу выводится два поля ил таблицы «Ученики» и два поля из таблицы "Успеваемость». Здесь также содержится информация о том, что эти две таблицы связаны между собой (Ученики INNER JOIN Успеваемость) через ПОЛЯ НОМЕР_УЧ
(ON Ученики.НОМЕР_УЧ = Успеваемость.Н0МЕР_УЧ).
В результате выполнения запроса получится таблица, представленная на рис. 4.16.
Пример 4. Требуется подучить сведения о том. какие ученики и по каким предметам имеют годовую оценку 5. Эти сведения нужно сгруппировать по предметам, расположив их в алфавитном порядке
SELECT Успеваемость. ПРЕДМЕТ, Ученики.ФАМИЛИЯ, Ученики. ИМЯ
FROM Ученики INNER JOIN Успеваемость ON Ученики. НОМЕР_УЧ
= Успеваемость.НОМЕР_УЧ
WHERE (((Успеваемость. ГОД) =5))
ORDER BY Успеваемость.ПРЕДМЕТ, Ученики. ФАМИЛИЯ;
Этот же запрос в Конструкторе представлен на рис. 4.18.
В результате выполнения запроса получим таблицу (рис. 4.19).
В этом запросе группировка результата по предметам получилась благодаря тому, что поле ПРЕДМЕТ было выбрано в качестве первичного ключа сортировки, а поле ФАМИЛИЯ — в качество вторичного ключа. В таком случае отбираемые записи сначала сортируются по первичному ключу. Если же у нескольких записей значения первичного ключа совпадают, тогда их порядок будет определяться сортировкой по вторичному ключу.