ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 2685
Скачиваний: 8
21
SET TALK ON
USE kadr
LOCATE FOR
ро
l='
Ж
'
Record = 3
(
Запись
З
)
CONTINUE
Record = 5
(
Запись
5)
CONTINUE
End of Locate scope. (
Конец
границы
поиска
.)
Кроме
рассмотренных
команд
имеется
полезная
функция
поиска
•
LOOKUP(<
поле
1>,<
выр
>,<
поле
2>)
Функция
ищет
первое
вхождение
искомого
<
выражения
>
в
указанном
<
поле
2>
активной
базы
данных
и
возвращает
значе
-
ние
<
поля
1>
из
той
же
базы
.
Если
файл
индексирован
и
индекс
открыт
,
поиск
ведется
ускоренным
методом
,
если
нет
-
последо
-
вал
тельным
(
подобно
команде
LOCATE).
Если
поиск
оказался
безуспешным
,
функция
возвращает
пустую
строку
,
а
указатель
записей
становится
ниже
последней
записи
базы
(EOF()=.T.).
Пример
.
В
базе
KADR.DBF
с
помощью
функции
LOOKUP()
ищется
в
поле
FAM
первая
фамилия
,
начинающаяся
на
букву
'
П
',
и
выводится
ее
табельный
номер
.
Кроме
того
,
для
проверки
в
команде
?
выводится
и
сама
фамилия
,
и
номер
записи
(FAM
и
RECNO()).
Результаты
работы
команды
приведены
справа
по
-
сле
знаков
&&.
Видим
,
что
сначала
выводится
табельный
номер
98 (
ПОТАПОВ
Д
.
П
. -
запись
номер
2).
После
открытия
индексно
-
го
файла
KADRFAM.IDX (
индексирование
сделано
по
полю
FAM)
выводятся
уже
данные
для
ПОПОВА
А
.
А
. (
запись
номер
4),
поскольку
по
алфавиту
он
стоит
выше
ПОТАПОВА
Д
.
П
.
USE kadr
? LOOKUP(tab,'
П
',fam),fam,RECNO()
&& 98
ПОТАПОВ
Д
.
П
. 2
SET INDEX TO kadrfam
? LOOKUP(tab,'
П
',fam),fam,RECNO()
&& 98 234
ПОПОВ
А
.
А
. 4
Математическая
обработка
базы
данных
COUNT [<
границы
>] [WHILE <
условие
>] [FOR <
условие
>]
[
ТО
<
переменная
>]
22
По
команде
COUNT
подсчитывается
число
записей
в
за
-
данных
границах
,
удовлетворяющих
условиям
,
которое
заносит
-
ся
в
указанную
<
переменную
>.
SUM [<
границы
>] [WHILE <
условие
>][FOR <
условие
>]
<
список
выражений
>[
ТО
<
переменные
>/
ТО
ARRAY <
мас
-
сив
>]
По
команде
SUM
суммируются
значения
перечисленных
числовых
полей
в
указанные
<
переменные
>
или
<
массив
А
VERAGE [<
границы
>] [WHILE <
условие
>] [FOR <
усло
-
вие
>] <
список
выражений
> [
ТО
<
переменные
>/
ТО
ARRAY
<
массив
>]
По
команде
AVERAGE
подсчитывается
среднее
арифме
-
тическое
при
тех
же
допущениях
,
что
и
для
предыдущей
коман
-
ды
.
CALCULATE [<
границы
>] [WHILE <
условие
>
[FOR <
условие
>] <
список
выражений
>
[
ТО
<
переменные
>/
ТО
ARRAY <
массив
>]
Команда
CALCULATE
позволяет
вести
математические
расчеты
в
базе
данных
. <
Список
выражений
>
может
содержать
любую
комбинацию
следующих
внутренних
для
данной
команды
функций
:
-AVG(<
выр
N>) -
среднее
арифметическое
для
выражения
с
полем
, -CNT() -
число
записей
в
базе
данных
;
-
МАХ
(<
выр
>) -
максимальное
значение
<
выр
>
от
поля
лю
-
бого
типа
;
-MIN(<
выр
>) -
минимальное
значение
<
выр
>
от
поля
лю
-
бого
типа
.
23
Задание
1
1.
Создать
файлы
со
следующей
структурой
:
Имя
файла
: GROUP
Имя
поля
Тип
поля
Содержание
NSTUD
Числовое
Идентификатор
FAMILY
символьное
Фамилия
NAME
Символьное
Имя
DATE
Дата
Дата
рождения
SEX
Символьное
Пол
студента
POLICE
Номер
полиса
PLASE Memo-
поле
Адрес
Имя
файла
: STUDY
NSUD
Числовое
Идентификатор
SUBJECT
символьное
Название
предмета
BALL
Числовое
оценка
2.
Заполнить
файлы
значениями
данных
(
не
менее
10
в
файле
GROUP
и
не
менее
30
в
файле
STUDY.
3.
Вывести
для
просмотра
на
экран
содержимое
файлов
с
соот
-
ветствующими
заголовками
полей
на
русском
языке
.
4.
Увеличить
все
значения
в
поле
NSTUD
на
10
для
файла
STUDY (
для
выполенеия
этого
задания
создать
файл
STUDY1,
в
который
предварительно
копируется
вся
инфор
-
мация
из
исходного
файла
) .
5.
Пометить
для
удаления
все
записи
файла
STUDY1,
относя
-
щиеся
к
математике
.
6.
Вывети
в
текстовый
файл
всю
информацию
из
файла
GROUP
для
студентов
,
родившихся
до
1.01.1985
г
.
7.
Вывести
в
текстовые
файлы
поля
NSTUD, FAMILY, NAME,
DATA
отдельно
для
мужчин
и
женщин
.
Для
проверки
выполнения
лабораторной
работы
студент
должен
представить
файлы
-DBF : GROUP, STUDY,STUDY1
и
текстовые
файлы
с
результатами
выполнения
заданий
6, 7.
24
2.
ИНДЕКСИРОВАНИЕ
БАЗ
ДАННЫХ
Важнейшим
элементом
любой
системы
управления
база
-
ми
данных
является
наличие
средств
ускоренного
поиска
дан
-
ных
,
поскольку
поиск
-
самая
распространенная
операция
в
сис
-
темах
обработки
данных
.
Этот
механизм
обычно
реализуется
введением
так
называемых
индексных
файлов
(
индексов
).
Они
имеют
расширение
имени
IDX
или
CDX.
Если
файл
проиндексирован
,
команды
DISPLAY, EDIT,
BROWSE, SKIP, REPLACE
и
все
другие
команды
,
связанные
с
движением
в
базе
данных
,
перемещают
указатель
записей
в
со
-
ответствии
с
индексом
,
а
не
с
физическим
порядком
расположе
-
ния
записей
.
Так
,
команды
GO TOP
и
GO BOTTOM
устанавли
-
вают
указатель
записей
не
на
первую
(
номер
1)
и
последнюю
физические
записи
,
а
на
начальную
и
конечную
записи
индекса
соответственно
.
Один
файл
базы
данных
может
быть
проиндексирован
по
нескольким
полям
и
иметь
любое
число
индексов
(
индексных
файлов
),
которое
ограничено
только
дисковой
памятью
компью
-
тера
.
Индексные
файлы
содержат
информацию
о
расположении
записей
файла
базы
данных
в
алфавитном
,
хронологическом
или
числовом
порядке
для
того
поля
/
полей
,
по
которому
выпол
-
нено
индексирование
.
Допускается
индексирование
и
по
логиче
-
ским
полям
.
Расширение
индексного
файла
– IDX.
Размер
индексного
файла
сравним
с
объемом
дискового
пространства
,
занимаемого
полем
базы
данных
,
по
которому
было
произведено
индексирование
.
Таким
образом
,
например
,
если
база
проиндексирована
по
всем
полям
,
суммарный
размер
всех
индексов
будет
близок
(
или
больше
)
к
размеру
всей
базы
данных
.
Кроме
того
,
замедляются
операции
ввода
/
редак
-
тирования
данных
в
базе
,
поскольку
при
дополнении
ее
новой
записью
индексный
файл
должен
быть
автоматически
пере
-
строен
в
соответствии
с
новыми
или
измененными
данными
.
Индексирование
выполняется
следующей
командой
:
•
INDEX
ON
<
выр
>
ТО
<IDX-
файл
>
[FOR <
условие
>] [COMPACT] [DESCENDING]
[UNIQUE] [ADDITIVE]
25
Опции
команды
:
<
выр
> -
индексный
ключ
-
выражение
.
Его
длина
может
достигать
100
символов
для
IDX-
файлов
и
240
для
CDX-
файлов
.
Чаще
всего
ключ
это
имя
поля
,
по
которому
нужно
упорядочить
файл
.
Однако
,
ключ
может
быть
и
составным
-
из
нескольких
полей
.
Он
может
быть
и
функцией
полей
и
переменных
.
ТО
<IDX-
файл
> -
дает
имя
одноиндексному
файлу
.
FOR <
условие
> -
устанавливает
режим
отбора
в
индекс
только
тех
записей
базы
данных
,
которые
отвечают
заданному
<
условию
>.
При
наличии
такого
,
действующего
,
как
фильтр
,
ин
-
декса
доступ
к
нужным
данным
осуществляется
исключительно
быстро
.
COMPACT
-
с
этой
опцией
будет
создан
компактный
IDX-
файл
.
Целесообразно
использовать
только
компактные
индексы
Для
IDX-
файлов
индексирование
всегда
осуществляется
по
возрастанию
,
однако
параметр
DESCENDING
можно
вклю
-
чить
в
команды
открытия
индексов
любого
типа
,
независимо
от
того
,
какой
закон
был
указан
в
команде
индексирования
.
По
умолчанию
индексирование
выполняется
по
возрастанию
.
UNIQUE -
означает
,
что
,
если
в
базе
данных
встречаются
записи
с
одинаковым
значением
ключа
,
все
такие
записи
,
кроме
первой
,
игнорируются
(
не
включаются
в
индекс
).
Этим
процес
-
сом
можно
управлять
также
с
помощью
команды
SET UNIQUE
TO.
ADDITIVE
-
вновь
создаваемые
индексные
файлы
не
за
-
кроют
уже
открытые
к
этому
моменту
.
По
умолчанию
вновь
соз
-
даваемые
индексы
закрывают
все
ранее
открытые
индексы
для
текущей
базы
данных
.
Пример
.
Пусть
мы
хотим
упорядочить
базу
KADR
в
поряд
-
ке
возрастания
табельных
номеров
.
Тогда
необходимо
создать
индексный
файл
по
полю
TAB.
Назовем
его
KADRTAB.IDX.
USE kadr
INDEX ON tab TO kadrtab
LIST tab,fam
Record
#
TAB
FAM
3 6
КУЛАКОВА
М
.
И
.
1 13
СИДОРОВ
П
.
С
.
7 54
ЯКОВЛЕВ
А
.
И
.
2 98
ПОТАПОВ
Д
.
П
.
4 234
ПОПОВ
А
.
А
.
6 468
МИРОНОВ
Р
.
И
.
5 890
РОМАНОВА
М
.
С
.