Указания по выполнению лабораторной работы
Перед выполнением данной работы сделаем базу данных “Студенты” в СУБД Access.
Заполните базу данных данными.
Для того, чтобы связать базу Access и С++Builder нам потребуется три компонента, и выносим их на форму.
1) ADOConnection1
2) DataSource1
3) ADOQuery1
Для компонента ADOConnection1 устанавливаем следующие свойства
Connected – try
LoginPrompt– false
ConnectionString – нажимаем на свойство, откроется окно
После чего нажимаем build…
Откроется окно
1. Щелкните на “…” и находим нужную базу данных.
2. По необходимости можно указать пароль.
Provider - выбираем Microsoft.Jet.OLEDB.4.0
Для компонента DataSource1 устанавливаем следующие свойства: находим DataSet, в списке выбираем ADOQuery1.
Для компонента ADOQuery1 устанавливаем следующие свойства.
SQL – Открываем и пишем запрос:
SELECT *
FROM Студенты;
Active – tru.
Connection – выбираем ADOConnection1.
Для того, чтобы вывести нашу базу потребуется компонент TDBGrid. Выносим его на форму.
Для компонента TDBGrid находим свойство DataSource, и выбираем DataSource1.
Если все было сделано, верно, выйдет такой результат:
Контрольные вопросы
1. Назовите компонент, с помощью которого устанавливается связь между базой данных и клиентским приложением
2. Какие свойства необходимо заполнить у компонента ADOQuery?
3. Для чего служит компонент DataSource?
4. Какое свойство компонента TDBGrid надо установить, чтобы в нем появились данные?
5. Без какого свойства компонента ADOQuery данные не будут выведены в TDBGrid?
Практическая работа № 8
Тема: «Построение запросов на выборку с использованием сравнения и условий в выборках и исключение дубликатов».
Цель работы: Научиться писать запросы на выборку.
Время выполнения: подготовка: 5 мин; выполнение: 210 мин; проверка: 10 мин; всего: 225 мин.
Указания к выполнению лабораторной работы
Команда SELECT
Команда SELECT является ключевой командой языка SQL. Собственно с нее и начинался язык SQL. Команда позволяет осуществлять выборки данных из одной или нескольких соединенных по условию таблиц. Команда имеет довольно сложный синтаксис.
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[FROM СсылкиНаТаблицы
[WHERE Условие]
[GROUP BY {ИмяАтрибута | Выражение | Позиция}
[HAVING Условие]
[ORDER BY { ИмяАтрибута | Выражение | Позиция }
[LIMIT пределы];
Или:
SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
СсылкиНаТаблицы:
СсылкиНаТаблицы [,СсылкиНаТаблицы] ...
СсылкиНаТаблицы:
ОписаниеТаблицы
| СоединениеТаблиц
ОписаниеТаблицы:
ИмяТаблицы [[AS] Алиас]
| (СсылкиНаТаблицы)
| { OJ СсылкиНаТаблицы LEFT OUTER JOIN
СсылкиНаТаблицы
ON УсловиеСоединения }
СоединениеТаблиц:
СсылкиНаТаблицы [INNER] JOIN ОписаниеТаблицы
[УсловиеСоединения]
| СсылкиНаТаблицы {LEFT|RIGHT} [OUTER] JOIN
СсылкиНаТаблицы УсловиеСоединения
ALL – означает, что результирующий набор данных будет содержать все записи, в том числе и одинаковые.
DISTINCT или DISTINCTROW – это синонимы, которые означают, что результирующая выборка будет содержать только разные записи.
FROM – задает список таблиц, из которых выбираются данные.
WHERE – задает условие выборки данных из таблиц, а также условие соединения таблиц.
GROUP BY – задает поле(поля), по которому данные объединяются в группы для подведения итогов.
HAVING – задает условие, накладываемое на группы.
ORDER BY – задает поле(поля), которым выполняется сортировка данных в результирующей выборке.
UNION – используется для выполнения операции объединения таблиц.
INNER JOIN – задает внутреннее соединение таблиц по условию.
{LEFT|RIGHT} OUTER JOIN – задает внешнее(левое или правое) соединение таблиц по условию.
AS – при описании таблиц позволяет задать второе имя для таблицы(алиас). Алиасы удобно использовать при описании списка столбцов в выборке, помечая каждый столбец алиасом той таблицы, из которой он выбирается.
Рассмотрим использование оператора SELECT на примере выборок из следующих таблиц:
Таблица «Темы» содержит информацию о темах, к которым относится та или иная книга. Имеет следующую структуру:
Tem(*N_t(номер темы), Nazv_t(название темы))
Таблица «Книги» содерит информацию о книгах, имеющихся в библиотеке. Имеет следующую структуру:
Books(*N_b(номер книги), Nazv(название), Avtor(автор),
Cena(цена), God_izd(год издания), N_tem(номер темы))
Таблица «Читатели» содержит информацию о читателях библиотеки. Имеет следующую структуру:
Readers(*N_r(номер читателя), Fio(ФИО), Adres(Адрес), Tel(телефон), Pol(пол))
Таблица «Регистрация выдачи и возврата книг» содержит информацию о том кому какие книги выдавались. Имеет следующую структуру:
Registr(*N_b(номер книги), *N_r(номер читателя), *Data_v(Дата выдачи), Priznak(признак возврата)).
Первичные ключи в таблицах отмечены «звездочками»(*).
Простая выборка
Если не задается ключевое слово WHERE, то выбираются все строки из таблицы. Если вместо имен столбцов задается *(звездочка), то выбираются все столбцы таблицы.
Задание 1. Выбрать всю информацию из таблицы «Читатели».
SELECT * FROM Readers;
Задание 2. Выбрать ФИО всех читателей библиотеки:
SELECT Fio FROM Readers;
Выборка с исключением дубликатов. Для того, чтобы в выборке не содержались одинаковые записи, используется ключевое слово DISTINCT.
Задание 3. Выдать список фамилий авторов всех книг библиотеки.
SELECT DISTINCT Avtor FROM Books;
Следующий запрос извлекает первые 5 записей, при этом осуществляется обратная сортировка по полю Avtor.
SELECT DISTINCT Avtor FROM Books
ORDER BY Avtor DESC
LIMIT 5;