
- •Актюбинский государственный университет им. К.Жубанова
- •К.Ф.М.Н., доцент кафедры информационных систем _______Бигалиева м.Ж.
- •Лабораторная работа №1
- •Лабораторная работа №2-3
- •Лабораторная работа №4
- •Лабораторная работа №5-6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораториялық жұмыс №12
Лабораторная работа №4
Тема: Построение ключей. Связь между таблицами.
Цель: ознакомление с функциями операторов Primary key, foreign key, привитие навыков организации связи между таблицами.
Материалы и оборудование: IBConsole, Delphi6/7
Методические рекомендации.
Для организации связи между таблицами используют операнды
[constraint <условие проверки допустимого значения данного поля>]
Foreign key (<список ключей – полей данной таблицы>)
References <имя родительской таблицы>
[<список ключевых полей родительской таблицы>]
Для организации связи в родительской таблице должен быть определен первичный ключ, в дочерней таблице – соответствующий внешний ключ. Для создания внешнего ключа используют операнд foreign key. Связь можно именовать в операнде constraint. Для удаления связи между таблицами используют инструкцию drop имя связи.
Задания для самостоятельного выполнения.
1. В окне Interactive SQL создайте дочернюю таблицу Avg_ball.
create table avg_ball(
nom_ud integer not null,
semestr varchar(15),
sr_ball float,
foreign key(nom_ud) references grup,
constraint grup check(exists(select * from grup where avg_ball.nom_ud=grup.nom_ud)));
2. В ИСР Delphi добавьте титульную страницу для вашего приложения.
При щелчке по кнопке Учебная группа должна активизироваться первая форма с таблицей Grup. Щелчок по кнопке Средний балл должен активизировать форму, позволяющую работать с таблицей Avg_ball.
На форму Средний балл поставьте необходимые компоненты, установите свойства компонентов. Для связи с таблицей Grup по полю Nom_ud необходимо установить компонент DBLookupComboBox1 вкладки Data Controls. Свойству ListSource этого компонента задать значение Form1.DataSource1 (если таблица Grup связана с первой формой), а свойствам ListField, KeyField – значение Nom_ud из выпадающего списка.
Предусмотрите возможности ввода, редактирования и удаления данных в таблице.
Лабораторная работа №5-6
Тема: Выбор записей. Построение запросов. Сортировка данных. Построение и использование просмотров.
Цель: Привитие навыков работы с операторами, организующими поиск, сортировку, выбор данных в таблице, а также позволяющими организовать работу с просмотрами.
Материалы и оборудование: IBConsole, Delphi6/7
Методические рекомендации.
1. Оператор Select.
Наиболее важной командой языка манипулирования данными SQL является команда SELECT. Оператор SELECT используется для запросов к базе данных и выборки результатов. Синтаксис оператора SELECT следующий:
<оператор SELECT>::=
SELECT [ALL | DISTINCT] <список выборки>
<табличное выражение>
ORDER BY <спецификация сортировки>]
<табличное выражение>::=
FROM <имя таблицы>[{,<имя таблицы>}…]
[WHERE <условие поиска>]
[GROUP BY <имя столбца> [{,<имя столбца>}…]
[HAVING <условие поиска>]
Если задано ключевое слово DISTINCT, то из результирующей таблицы удаляются повторяющиеся строки. Список выборки определяет, какие столбцы должны быть возвращены в результирующую таблицу. Данный список представляет список арифметических выражений над значениями столбцов таблиц из раздела FROM и констант.
В простейшем случае он может быть, например, списком имен некоторых столбцов таблиц из раздела FROM. В случае, если вместо списка выборки стоит звездочка (*), то выбираются все столбцы таблиц из раздела FROM.
В разделе FROM определяются таблицы, из которых будут извлекаться данные. Следует отметить, что рядом с именем таблицы можно указывать еще одно имя – синоним имени таблицы, который можно использовать в других разделах табличного выражения.
Раздел WHERE служит своего рода фильтром при отборе данных. В данном разделе возможно проверка на принадлежность (или не принадлежность) диапазону значений: <значение> [NOT] Between < значение 1> and < значение2 >;
на вхождение: <значение> [NOT] like < шаблон>;
Выполнение раздела GROUP BY оператора выборки сводится к разбиению результирующей таблицы на множество групп строк, которое состоит из минимального числа таких групп, в которых для каждого столбца из списка столбцов раздела GROUP BY во всех строках каждой группы, включающей более одной строки, значения этого столбца совпадают.
Результатом выполнения раздела HAVING является сгруппированная таблица, содержащая только те группы строк, для которых результат вычисления условия поиска является истинным. Условие поиска раздела HAVING задает условие на целую группу, а не на индивидуальные строки, поэтому в данном случае прямо можно использовать только столбцы, указанные в качестве столбцов группирования в разделе GROUP BY.
Раздел ORDER BY позволяет установить желаемый порядок просмотра результирующей таблицы. Спецификация сортировки имеет следующий синтаксис:
<спецификация сортировки>::= {<целое без знака> | <имя столбца>} [ASC | DESC]
В оператор Select возможно включение агрегатных функций. К агрегирующим функциям относятся функции вычисления суммы (SUM), максимального (MAX) и минимального (MIN) значений столбцов, арифметического среднего (AVG), а также количества строк, удовлетворяющих заданному условию (COUNT).
2. Создание индекса
Индекс представляет собой объект, ускоряющий выполнение запросов. Синтаксис оператора создания индекса имеет вид:
<оператор создания индекса>::= CREATE [UNIQUE] INDEX <имя индекса>
ON <имя таблицы> (<имя столбца> [ASC | DESC] [{,<имя столбца>[ASC | DESC]}..])
Описатель уникальности UNIQUE указывает, что никаким двум строкам в индексируемой базовой таблице не позволяется принимать одно и тоже значение для индексируемого столбца (или комбинации столбцов) в одно и то же время. Описатели ASC(Ascending) и DESC (Descending) определяют, что столбец должен быть отсортирован в возрастающем или убывающем порядке в пределах индекса.
Инструкция Drop Index <имя индекса> позволяет удалить индекс
3. Создание представлений (просмотров)
Механизм представлений является мощным средством языка SQL, позволяющим скрыть реальную структуру БД от некоторых пользователей за счет определения представления БД. Представление реально является некоторым хранимым в БД запросом с именованными столбцами, а для пользователя ничем не отличается от базовой таблицы БД.
Представляемая таблица является виртуальной. Обычно вычисление представляемой таблицы производится каждый раз при использовании представления.
Оператор определения представления имеет следующий синтаксис:
<оператор создания представления>::= CREATE VIEW <имя таблицы>[(список столбцов)] AS <спецификация запроса> [WITH CHECK OPTION]
<спецификация запроса>::= SELECT [ALL | DISTINCT] <список выборки><табличное выражение>
<список столбцов>::=<имя столбца>[{,<имя столбца>}...]
Требование WITH CHECK OPTION имеет смысл только в случае определения изменяемой представляемой таблицы, которая определяется спецификацией запроса, содержащей раздел WHERE. При наличии этого требования не допускаются изменения представляемой таблицы, приводящие к появлению в базовых таблицах строк, не видимых в представляемой таблице.
Удаление представлений осуществляется оператором Drop View <имя просмотра>.
Задания для самостоятельного выполнения.
1. С помощью Interactive SQL создайте представление, объединяющее данные из таблиц Grup и Avg_ball:
create view grup_ball
as select a.surname, b.semestr,b.sr_ball
from grup a, avg_ball b
where (a. Nom_ud=b.nom_ud);
2. В среде Delphi установите компоненты IBDatabase и IBTransaction на модуле данных. Для этого выполните команду Файл→Создать→Модуль данных.
Установите необходимые свойства этих компонентов. Двойным щелчком по IBDatabase вызовите диалоговое окно, в котором укажите полный путь к базе данных (C:\Program Files\Borland\InterBase\bin\gr.gdb), имя пользователя (SYSDBA), пароль (masterkey), кодировку (WIN1251). Также установите свойству Connected этого компонента значение true. Установите свойства компонента IBTransaction1:
DefaultDatabase=IBDatabase1
Active=true
3. На формах, связанных с таблицами Grup и Avg_ball удалите компоненты IBDatabase и IBTransaction , подключите модуль данных (uses Unit5), переустановите свойства компонентов IBQuery1, DataSource1, DBGrid1: установите свойству Database компонента IBQuery1 значение DataModule5.IBDatabase1 (DataModule5 , т.к. модуль данных у нас под пятым номером). Остальные свойства установите как ранее.
4. Создайте новую форму Представление и установите соединение с базой данных:
Для организации связи с представлением, а не с таблицами базы данных свойству SQL компонента IBQuery1 задайте значение Select * from grup_ball.
5. На титульную страницу приложения добавьте кнопку Представление. Создайте обработчик события для этой кнопки, обеспечивающий переход на форму Представление.
6. Самостоятельно создайте обработчики событий для кнопок Поиск и сортировка формы Представление.