- •Казахский национальный технический университет имени к.И.Сатпаева
- •1 Учебная программа дисциплины – Syllabus
- •1. 1 Данные о преподавателях:
- •1.2 Данные о дисциплине:
- •Выписка из учебного плана
- •1.5 Цели и задачи дисциплины.
- •Перечень и виды заданий и график их выполнения:
- •Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •Распределение рейтинговых баллов по видам контроля
- •Оценка знаний студентов
- •1.9 Политика и процедура.
- •2 Содержание Активного раздаточного материала
- •2.2 Конспект лекционных занятий
- •Тема 1. Введение в субд.
- •Тема 2. Языковая среда реляционных субд.
- •Дополнительная литература: 9[22:28].
- •Тема 3. Работа с файлами в субд.
- •Тема 4. Стандартные функции в субд.
- •Функции для обработки файлов
- •Тема 5. Программирование в субд.
- •Тема 6. Язык реляционных баз данных sql.
- •Тема 7. Запросы sql.
- •Ниже приведен сокращенный вариант команды select с опцией into/to, используемый в Visual FoxPro:
- •Тема 8. Сложные запросы sql.
- •Дополнительная литература: 10[1025:1040].
- •Тема 9. Подзапросы в sql.
- •Дополнительная литература: 10[1028:1040].
- •Тема 10. Объектно-ориентированное программирование (ооп) в субд.
- •Дополнительная литература: 10[944:960].
- •Тема 11. Визуальное программирование в субд.
- •Дополнительная литература: 10[958:962].
- •Тема12. Инструментальные средства субд.
- •Тема 13. Архитектура клиент-сервер в технологии бд.
- •Дополнительная литература 9[159:164], 10[81:83,792:794].
- •Тема 14. Архитектура сбд.
- •Дополнительная литература: 9[28:36], 10[65:88].
- •Тема 15. Модели данных.
- •Дополнительная литература: 9[56:70],10[56:58].
- •2.3 Планы лабораторных занятий
- •Контрольные вопросы:
- •Контрольные вопросы:
- •Контрольные вопросы:
- •Дополнительная литература: 10[1028:1040]. Контрольные вопросы:
- •Дополнительная литература: 10[1028:1040]. Контрольные вопросы:
- •Контрольные вопросы:
- •Контрольные вопросы:
- •2.4 Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп)
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс)
- •2.6 Тематика письменных работ по курсу Тематика курсовых работ
- •Рекомендуемая литература
- •2.7 Тестовые задания для самоконтроля с указанием ключей правильных ответов
- •A) пять;
- •C) один;
- •Правильные ответы
- •Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
- •Учебно-методический комплекс дисциплины для студентов
- •Системы управления базами данных
Тема 4. Стандартные функции в субд.
В xBase существуют специальные команды – функции, к которым относятся команды подсчета записей в активной таблице данных, вычисления среднего значения и суммы по числовым полям активной таблицы данных.
Подсчитанные данные можно занести в переменные – временные переменные памяти (ВПП). Максимально допустимое число ВПП в различных СУБД различно. Имя переменной может содержать любые цифры, знак подчеркивания, буквы (в ранних версиях – только латинские), но не может начинаться с цифры. Длина имени определяется версией конкретной СУБД. Тип ВПП явно не задается, а определяется ее значением. Возможные типы ВПП в xBase соответствуют возможным типам полей в данной СУБД: символьные (C), числовые (N), типа даты (D), логические (L) и т.д. Присвоение переменной некоторого значения осуществляется двумя способами:
STORE < выражение> TO < список_ВПП >
или
<ВПП> = <выражение>
Из ВПП можно организовать массив. Но массив предварительно должен быть описан. Массивы могут быть одномерными и двумерными, для их описания используется служебное слово DIMENSION или DECLARE. Имена массивов и имена ВПП не должны совпадать. Элементы одного и того же массива могут быть разных типов, индексация элементов массива начинается с 1. К элементу двумерного массива возможно обращение как к элементу одномерного массива. При этом индекс такого элемента определяется порядком следования этого элемента в массиве. При описании массива всем его элементам автоматически присваивается логическое значение (.F.).
ВПП могут быть PUBLIC (глобальные), PRIVATE (локальные), REGIONAL (региональные). Все переменные, которые создаются в интерактивном режиме, являются глобальными. Если ВПП создаются в программе, то они являются локальными. Эти переменные после выполнения программы уничтожаются, поэтому они допустимы для работы только в той программе, в которой созданы. Можно явно объявить характер ВПП, используя следующие команды:
PUBLIC <список_ВПП> (для глобальных ВПП)
или
PRIVATE <список_ВПП> (для частных ВПП)
Созданные ВПП можно просмотреть, используя команды:
LIST MEMORY [ TO PRINT ]
или
DISPLAY MEMORY [ TO PRINT ]
Необязательный параметр TO PRINT позволяет выводить информацию о ВПП на печать.
ВПП или элементу массива можно присвоить значение, взятое из указанного поля текущей записи таблицы БД, используя команду:
STORE <имя_поля> TO <имя_ВПП>
Можно выполнить обратное действие, используя команду замены REPLACE. Формат команды:
REPLACE [<диапазон>] <поле1> WITH <выражение1>
[,<поле2> WITH <выражение2>….] [FOR / WHILE <условие>]
Команда REPLACE для активной таблицы данных выполняет замену данных, находившихся в поле <поле1> на данные, приведенные в выражении <выражение1>, в поле <поле2> - на данные, приведенные в выражении <выражение2> и т.д. Диапазоном по умолчанию является одна текущая запись. В этом случае указатель записи должен быть предварительно установлен на соответствующую запись, так как команда REPLACE не перемещает указатель записи. Использование операторов FOR (WHILE) позволяет выполнять замену данных только в тех записях, для которых выражение FOR <условие> истинно или до тех пор, пока выражение WHILE<условие> истинно.
Созданные в оперативной памяти ВПП можно сохранить в файле, используя команду:
SAVE TO <имя_файла_ВПП>[<список_ВПП>/ALL [LIKE/EXCEPT<шаблон>]]
При этом создается файл, имеющий расширение имени .MEM. Сохраняются все ВПП или ВПП, указанные в списке <список_ВПП>. Необязательные параметры позволяют сохранить в файле все ВПП, удовлетворяющие (ALL LIKE) шаблону или все ВПП, за исключением удовлетворяющих (ALL EXCEPT) шаблону (использование в шаблоне символа * означает любое количество любых символов, использование символа ? означает один любой символ).
Для восстановления ВПП из файла в оперативную память используется команда:
RESTORE FROM <имя_файла_ВПП> [ADDITIVE]
Восстановление ВПП командой RESTORE без параметра ADDITIVE приводит к уничтожению ВПП, находившихся в оперативной памяти до выполнения этой команды.
Созданные в оперативной памяти ВПП можно уничтожить, используя команду:
RELEASE <список_ВПП> / ALL [LIKE/EXCEPT <шаблон>]
Эта команда позволяет уничтожить ВПП, перечисленные в списке <список_ВПП> или все ВПП.
RELEASE ALL – эта команда уничтожает все ВПП, аналогична команде CLEAR MEMORY.
А для уничтожения переменных А1 и B1 необходимо использовать команду:
RELEASE A1, B1
Необязательные параметры позволяют уничтожить все ВПП, подобные (ALL LIKE) <шаблону> или все ВПП, за исключением подобных (ALL EXCEPT) <шаблону>.
В ВПП можно сохранить всю информацию, находящуюся на экране, используя команду:
SAVE SCREEN TO <имя_ВПП>
При этом создается переменная типа S (Screen) с указанным именем, которая хранит образ экрана.
Восстановление образа экрана из ВПП осуществляется командой:
RESTORE SCREEN FROM <имя_ВПП>
Для сообщения СУБД о необходимости замены имени ВПП на ее значение, перед именем ВПП указывается функция макроподстановки - &.
Массивы ВПП можно использовать для перемещения информации из таблицы данных в массивы и наоборот. Команда заполнения массива данными из текущей записи:
SCATTER [ FIELDS <список_полей> ] TO <имя_массива>
Тип каждого элемента массива определяется типом заносимого данного. Если размерность массива меньше количества заносимых полей, то автоматически создается массив необходимой размерности с тем же именем.
Занесение значений элементов массива в текущую запись таблицы данных осуществляется командой:
GATHER FROM <имя_массива> [FIELDS <список_полей>]
При этом типы элементов массива должны совпадать с типами соответствующих полей. Необязательный параметр FIELDS позволяет работать только с теми полями, имена которых указаны через запятую в перечне <список_полей>.
В переменную можно ввести данные с клавиатуры, используя команду INPUT:
INPUT [<подсказка>] TO <список_ВПП>
Подсказка является символьным выражением, которое выводится на экран. При вводе символьные выражения выделяются апострофами, кавычками или квадратными скобками, даты заключаются в фигурные скобки, логические константы выделяются точками.
Команда подсчета записей в активной таблице данных имеет формат:
COUNT [<диапазон>] [ FOR/WHILE <условие> ] [ TO < ВПП>]
Записи подсчитываются в пределах диапазона ( по умолчанию ALL). При использовании необязательных параметров FOR/WHILE в подсчете используются только те записи, которые удовлетворяют условию <условие>. Результат может быть занесен во временную переменную памяти <ВПП>.
Команда вычисления среднего значения для полей числового типа активной таблицы данных имеет формат:
AVERAGE [<диапазон>] [ <список_выражений> ]
[ FOR/WHILE < условие > ] [ TO <список_ВПП>]
Обрабатываются значения всех числовых полей, если списком выражений не указано иначе. Получаемые значения могут быть занесены в переменные памяти (см.<список_ВПП>), число которых должно равняться числу обрабатываемых полей. Параметры FOR/WHILE указывают, какие записи следует обрабатывать. Диапазон по умолчанию имеет значение ALL.
Команда вычисления сумм для числовых полей имеет формат:
SUM [<диапазон>] [<список_выражений>]
[FOR/WHILE <условие>] [TO <список_ВПП>]
Диапазон по умолчанию имеет значение ALL. Операция может выполняться не над всеми числовыми полями, а лишь над полями, указанными в списке выражений. Параметры FOR/WHILE указывают, что в суммировании участвуют значения полей тех записей, которые удовлетворяют указанному условию. Полученные суммы могут быть занесены в переменные памяти, число которых должно равняться числу обрабатываемых полей.
Система программирования xBase содержит около 100 стандартных встроенных функций. Ниже приведены некоторые из них.
Функции для обработки числовых выражений
ABS (<числовое_выражение>) – получение абсолютного значения.
INT (<числовое_выражение>) – получение целого значения.
SQRT (<числовое_выражение>) – определение квадратного корня.
LOG (<числовое_выражение>) – вычисление натурального логарифма.
EXP (<n>) – вычисление экспоненциальной функции (n –показатель степени).
ROUND (<числовое_выражение, <n>) – округление до n дробныхразрядов.
MIN (<n1>, <n2>) –определение минимального из двух чисел n1 и n2.
MAX (<n1>, <n2>) –определение максимального из двух чисел n1 и n2.
STR (<числовое выражение>,<n>[,<k>]) – преобразование числа в строку символов длиной n с сохранением k дробных значений.
Следует учитывать, что СУБД обеспечивает преобразование числовых значений полей в символьные значения, но обратное преобразование возможно не всегда. Цифровые символы преобразовываются в число до тех пор, пока не встретится не цифровой символ. Если первый символ слова не является цифрой, то в результате преобразования будет получен нулевой результат. Возможно преобразование логических данных и дат в символьные данные и обратные преобразования.
Функции для работы с датой
DATE () – определение текущей системной даты.
TIME () – определение текущего системного времени.
DAY (<дата>) – определение дня месяца для указанной даты.
MONTH (<дата>)- определение номера месяца для указанной даты.
YEAR (<дата>) – определение года для указанной даты.
DOW (<дата>) – определение номера дня недели для указанной даты (воскресенье – первый день недели, суббота – седьмой день недели).
CDOW (<дата>) – получение названия дня недели для указанной даты (на английском языке).
CMONTH (<дата>) – получение названия месяца для указанной даты (на английском языке).
CTOD (<символьное выражение даты>) – преобразование символьного представления даты в данные типа даты.
DTOC (<дата>) – преобразование даты в символьное выражение.
