
- •Факультет Кибернетики
- •Москва 2011 оглавление
- •1. Характеристика субд HyTech Типовые функции современной субд
- •Организация данных в таблицах HyTech
- •Структура файлов, реализующих таблицы субд HyTech
- •Организация индексов в субд HyTech
- •Журнальные файлы в субд HyTech
- •Словарь данных
- •1.2 Управление данными в оперативной памяти Управление данными в оп
- •Управление буферизацией данных при выполнении запросов на чтение
- •Управление буферизацией данных при выполнении запросов на запись
- •Управление транзакциями
- •Атомарность транзакции в субд HyTech
- •Непротиворечивость информации в субд HyTech
- •Изолированность транзакций
- •Обеспечение отказоустойчивости субд
- •Механизмы защиты от мягких сбоев
- •Механизмы защиты от жестких сбоев
- •1.5 Поддержка sql и процедурных языков для работы с данными Стандарт sql-89
- •Типы данных в sql HyTech
- •Индексы в субд HyTech
- •Операторы dml (select, insert, update, delete) в субд HyTech
- •Ограничения целостности в субд HyTech
- •Оптимизация запросов в субд HyTech
- •Прочие операторы и свойства
- •Свойства процедурного расширения субд HyTech
- •1.6 Реализация средств сетевого взаимодействия и поддержки распределенных архитектур Средства сетевого взаимодействия и поддержки распределенных архитектур
- •Поддержка сетевых протоколов
- •Работа с другими источниками данных
- •Распределенные вычисления
- •1.7 Разграничение доступа к данным Средства разграничения доступа к данным
- •Базовое управление доступом
- •Аутентификация
- •Управление доступом к данным
- •Временные таблицы
- •Индексы
- •Курсоры
- •Отслеживание изменений данных
- •Механизм снимков
- •Отключение механизма снимков
- •Механизм транзакций
- •Транзакции в HyTech
- •Профиль, роль
- •Генератор
- •Кодификатор
- •Хранимая процедура
- •Триггер
- •Внешний источник данных
- •Встроенные представления
- •Встроенные переменные
- •2.2 Архитектура субд HyTech Структура sql - сервера
- •Особенности организации таблиц в субд HyTech
- •Недостатки организации таблиц в субд HyTech
- •Поиск в таблицах субд HyTech
- •Идентификация записей в таблицах
- •Использование инвертированных списков в субд HyTech
- •Организация хранения данных на диске
- •Структура ядра субд
- •Монитор таблиц
- •Монитор транзакций
- •Решение задачи перевода денег
- •Система поддержки транзакций в субд HyTech
- •Монитор замков
- •Реализация системы захватов
- •Оптимизация запросов
- •3. Sql диалект субд HyTech
- •3.1 Тестовая схема бд Описание тестовой схемы бд
- •Создание тестовой схемы
- •Листинги тестовой схемы
- •3.2 Основные sql операторы манипулирования данными
- •3.2.1 Оператор отбора информации из таблицы select Оператор select
- •Особенности работы с оператором select
- •Примеры работы с оператором select
- •Объединение выборок
- •Конструкция for update
- •Внешнее соединение
- •Работа с кодификаторами
- •3.2.2 Оператор вывода результатов на экран browse resullts Оператор вывода результатов на экран
- •3.2.3 Оператор копирования записей между таблицами insert select Оператор insert select
- •Примеры работы с оператором
- •3.2.4 Оператор добавления записи в таблицу insert values Оператор insert values
- •Пример работы с оператором insert values
- •3.2.5 Оператор модификации записей в таблице update Оператор update
- •Пример работы с оператором update
- •3.2.6 Оператор удаления строк из таблицы delete Оператор delete
- •3.2.7 Оператор выполнения запроса, заданного строкой execute immediate Оператор execute immediate
- •3.2.8 Оператор выгрузки результатов в таблицу results table Оператор results table
- •3.3 Операторы управления транзакциями и снимками
- •3.3.1 Операторы работы со снимками Операторы работы со снимками
- •3.3.2 Операторы работы с транзакциями Механизм транзакций и механизм снимков
- •Оператор начала транзакции begin work
- •Операторы завершения транзакции
- •Примеры работы с операторами завершения транзакции
- •Работа с транзакциями в многопользовательском режиме
- •3.3.3 Блокировки Оператор блокирования таблицы lock
- •Оператор освобождения строк unlock
- •Примеры работы с блокировками
- •3.4 Операторы работы с таблицами и индексами
- •3.4.1 Оператор создания таблицы create table Оператор create table
- •Атрибуты и ограничения столбцов
- •Временные таблицы
- •Другие функции для создания таблиц - функция dsexec
- •Другие функции для создания таблиц - функция copytable
- •Другие функции для создания таблиц - функция htCreateTable
- •Другие функции для создания таблиц - функция imptitle
- •3.4.2 Оператор удаления таблицы drop table Оператор drop table
- •3.4.5 Оператор переноса переменной части таблицы в постоянную pack table Оператор pack table
- •3.4.6 Оператор удаления переменной части таблицы drop diff Оператор drop diff
- •Использование группы атрибутов в качестве индекса
- •Добавление подстроки в качестве индекса таблицы
- •3.4.9 Оператор удаления индекса drop index Оператор drop index
- •Удаление группы или подстроки
- •3.5 Операторы для работы с внешними источниками данных Создание внешнего источника данных
- •Выполнение запросов к внешнему источнику данных
- •Пакетное выполнение запросов к внешнему источнику данных
- •Удаление внешнего источника данных
- •3.6 Операторы для работы с генераторами Операторы create generator, set generator
- •Операторы gen_id, drop generator
- •Использование генератора
- •4. Процедурные расширения sql диалекта субд HyTech
- •4.1 Лексические элементы языка Лексические элементы - зарезервированные слова
- •Зарезервированные слова
- •Лексические элементы - константы Константы
- •Константы целого типа
- •Константы вещественного типа
- •Строковые константы
- •4.2 Переменные Переменные процедурного языка HyTech
- •4.3 Типы данных Типы данных для хранения целочисленных и действительных значений Типы данных float, double, currency
- •Типы данных byte, int, word, number, long, dword
- •Типы данных процедурного языка HyTech.
- •Типы данных для хранения символьных значений, дат и массивов Тип данных date
- •Тип данных char
- •Тип данных array
- •4.4 Линейные операторы Выражения - арифметические операции Выражения
- •Арифметические операции
- •Выражения - операции отношения и присваивания Операции отношения
- •Операция присваивания
- •Выражения - логические операции
- •Составной оператор, пустой оператор Составной оператор
- •Пустой оператор
- •Оператор вывода, оператор завершения работы программы Оператор вывода
- •Оператор завершения работы программы
- •Операторы ветвления Оператор ветвления
- •Оператор цикла с предусловием в формате while
- •Оператор цикла с предусловием в формате for
- •Оператор цикла с постусловием
- •Переход к выполнению очередной итерации цикла
- •4.5 Хранимые процедуры и функции Хранимые процедуры
- •Функции
- •4.6 Триггеры Создание триггера
- •Удаление триггера
- •4.7 Совместное использование sql запросов и процедурных расширений Совместное использование sql-запросов и процедурных расширений
- •Передача переменных в качестве параметра в sql-запрос
- •Сохранение результата запроса в переменной
- •Использование результата запроса Использование результата, сохраненного в переменной, в других запросах
- •Чтение результата запроса
- •Работа с триггерами Использование в триггерах переменных old и new
- •Проверка ошибок триггера
- •4.8 Встроенные sql функции Функции преобразования
- •Функции преобразования
- •Строковые функции
- •Операции с таблицами, выполнение запросов
- •Функции работы с датами и временем
- •Импорт-экспорт
- •Функции для получения информации о таблицах
- •Числовые функции
- •Функции обработки ошибок
- •Интерфейсные и битовые функции Интерфейсные функции
- •Битовые функции
- •Функции отладки Функции отладки
- •Разные функции
- •Функции работы с кодификаторами
- •4.9 Практические приемы и оптимизация sql запросов Навигационное соединение таблиц
- •Использование кодификаторов вместо соединений
- •Уточнение результатов соединения
- •Использование конструкции in вместо соединения
- •Использование группы для связки таблиц по нескольким ключам
- •Получение декартового произведения
- •Использование временных таблиц для промежуточных вычислений
- •Оптимизация группировки и сортировки
- •Различные приемы оптимизации Перенос условий из having в where
- •Уменьшение размера поля, используемого для поиска по маске
- •Перенос изменений в постоянную часть
- •Использование пакетных sql-операций вместо одиночных
- •4.11 Диагностика результатов выполнения sql запросов Работа с функциями обработки ошибок - функции lasthterr, lastsqlerr
- •Функция lasthterr – Получить код последней ошибки HyTech
- •Функция lastsqlerr – Получить код последней ошибки Sql
- •Работа с функциями обработки ошибок - функции sqlermsg, htiomsg Функция sqlermsg – Получить текст сообщения об ошибке sql
- •Функция htiomsg — Получить сообщение об ошибке ввода/вывода
- •Работа с функциями обработки ошибок - функции htabort, htSetError Функция htabort – Завершает (или нет) выполнение sql-скрипта при ошибке в HyTech
- •Функция htSetError – Установить пользовательский код ошибки
- •Коды ошибок sql
- •5. Администрирование субд HyTech Типовые задачи администрирования
- •Инсталляция субд HyTech в Linux
- •Настройка параметров работы сервера
- •Файл инициализации - раздел «Параметры»
- •Файл инициализации - раздел «sql процесс»
- •Файл инициализации - другие разделы файла инициализации
- •Пример файлов инициализации
- •Типовые рекомендации по настройке параметров сервера в файле инициализации
- •5.2 Запуск/останов работы сервера Управление сервером
- •Запуск/останов HyTech sql сервера
- •Настройка стартового файла
- •Мониторинг действий сервера с использованием лог-файла
- •Конфигурирование сервера по результатам мониторинга
- •5.2.1 Запуск/останов работы сервера в режиме сервиса Регистрация и задание параметров сервиса
- •Настройка параметров сервиса в конфигурационном файле
- •Запуск, останов, удаление регистрации сервиса
- •5.2.2 Запуск/останов работы сервера в режиме консольного приложения Администрирование запуска/останова работы сервера в режиме консольного приложения
- •Запуск/останов/пауза сервера
- •Запуск/останов сервера по расписанию
- •Мониторинг действий сервера - мониторинг из окна приложения сервера
- •Мониторинг и управление процессами
- •5.3 Резервное копирование (архивирование) и восстановление бд Резервное копирование и восстановление бд
- •Архивирование базы данных в автономном режиме
- •Архивирование базы данных в оперативном режиме
- •Архивирование таблиц пользователей
- •Архивирование системных таблиц
- •Архивирование файла инициализации
- •Планирование стратегии архивирования базы данных
- •Восстановление базы данных, архивированной в автономном режиме
- •Восстановление базы данных, архивированной в оперативном режиме
- •Восстановление базы данных, архивированной в оперативном режиме - восстановление таблиц
- •Восстановление базы данных, архивированной в оперативном режиме - восстановление системных таблиц
- •5.4 Проверка и исправление таблиц данных и системных таблиц Проверка и исправление таблиц
- •Проверка таблиц
- •Исправление поврежденного журнала
- •Исправление повреждения постоянной части или ассоциатора
- •Проверка целостности системных таблиц и восстановление системных таблиц сервера
- •Примеры пакетной проверки таблиц
- •Конфигурационный файл с именем htctlg.Ini
- •5.5 Конфигурирование субд для использования прокси - сервера Назначение прокси - сервера
- •Установка, запуск и останов прокси-сервера
- •Конфигурирование прокси-сервера
- •5.6 Индексирование и упаковка таблиц, снятие провисшего захвата Индексирование таблицы
- •Упаковка таблицы (перенос журнала в постоянную часть)
- •Снятие провисшего захвата с записи таблицы
- •5.7 Управление безопасностью Управление безопасностью
- •Создание пользователя
- •Изменение/удаление пользователя
- •Аутентификация пользователя при входе в систему
- •Создание профиля безопасности
- •Изменение/удаление профиля безопасности
- •Создание/удаление роли
- •Назначение права пользователю или роли
- •Отмена права пользователю или роли
- •Назначение/отзыв роли пользователю или другой роли
- •Установка/изменение пароля на чтение/запись данных в таблицу
- •Шифрование данных в таблицах
- •Аудит действий пользователя
- •6. Php как инструментальное средство создания web приложений Архитектура web-приложений с использованием php - клиент, http сервер
- •Архитектура web-приложений с использованием php - интерпретатор php, cубд HyTech
- •Установка и настройка сервера Apache и модуля php
- •Установка для Windows
- •Установка для gnu/Linux
- •Типы данных и выражения
- •Тип данных integer (целое число)
- •Тип данных float (число с плавающей точкой)
- •Тип данных boolean (логический)
- •Тип данных строка
- •Создание массива
- •Доступ к элементам массива
- •Операции работы с массивом
- •6.1.2 Управляющие конструкции Условный оператор
- •Оператор «переключатель»
- •Примеры работы с циклами
- •Операторы передачи управления - break
- •Операторы передачи управления - continue
- •Операторы включения - include
- •Операторы включения - require
- •6.2 Пользовательские функции в php, функции работы с массивами и строками
- •6.2.1 Пользовательские функции в php, функции работы с массивами и строками Пользовательские функции
- •Параметры пользовательских функций
- •Параметры пользовательских функций - переменное число параметров
- •Возвращаемое значение
- •Локальные и глобальные переменные
- •Статические переменные
- •6.2.2 Встроенные функции для работы с массивами
- •Функции поиска
- •Примеры функций поиска
- •Функции сортировки
- •Примеры сортировок
- •Итераторы
- •Функции выборки и преобразования массивов
- •Примеры работы с функциями выборки и преобразования массивов
- •6.2.3 Строковые функции и регулярные выражения Строковые функции
- •Примеры использования строковых функций
- •Функции разбора регулярных выражений
- •Примеры использования функций разбора регулярных выражений
- •Шаблоны
- •Шаблоны, продолжение
- •Подшаблоны
- •Модификаторы
- •6.3 Технология использования php при создании Интернет - приложений
- •6.3.1 Технология обработки http-запросов с помощью php Методы доступа
- •Параметры и переменные
- •Html - формы
- •Html - формы, продолжение
- •Более сложная html- форма
- •6.3.2 Сессии Взаимодействие между клиентом и сервером
- •Идентификатор сессии, использование механизма сессии
- •Пример работы с сессиями
- •6.4 Классы и объекты в php
- •6.4.1 Общие сведения о классах и объектах Классы
- •Примеры создания класса
- •Особенности передачи объектов в классы
- •6.4.2 Наследование Пример наследования
- •Уровни доступа
- •Пример с различными уровнями доступа
- •Абстрактные классы и интерфейсы
- •6.4.3 Конструкторы и деструкторы Создание конструктора и деструктора
- •Конструктор в классах-потомках
- •6.4.4 Полиморфизм Перегрузка методов
- •Другие возможности полиморфизма
- •6.4.5 Исключения Исключения
- •Соединение с сервером HyTech, функция hytech_pconnect
- •Отключение от сервера HyTech
- •Функция для смены кодировки символов
- •7.1.2 Функции для выполнения sql-запросов Выполнение sql-запроса и открытие результата запроса
- •Выполнение sql-запроса без открытия результата
- •7.1.3 Функции для работы с результатами sql-запросов Закрытие ранее открытого результата
- •Получение количества полей в результате запроса
- •Пример использования функций
- •Получение значений полей в заданной строке результата
- •Получение строки результата в виде объекта
- •Получение значения поля в заданной строке результата
- •Пример использования функций
- •7.1.4 Функции для работы с типами date и array в HyTech Установка режима работы с датами и массивами
- •Установка формата строки для преобразования даты
- •Преобразование строки в дату (целое число)
- •Преобразование даты(числа) в строку
- •Пример работы с функциями преобразования
- •7.1.5 Функции для пакетного ввода данных Пакетное добавление строк в таблицу
- •Открытие таблицы
- •Добавление строки в буфер пакетного ввода
- •Сохранение в таблице строк из буфера пакетного ввода
- •Пример работы с пакетным вводом информации
- •7.1.6 Функции для диагностики ошибок Диагностика ошибок
- •7.2 Комплексный пример работы приложения с использованием php и субд HyTech Описание сценария взаимодействия с пользователем
- •Форма регистрации
- •Скрипт формы регистрации
- •Функции для работы с бд
- •Страница для выбора таблицы
- •Регистрация переменной "table"
- •Выбор строк из таблицы
- •Форма редактирования
- •Сохранение информации
- •Результат успешного добавления строки
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
МОСКОВСКИЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ
(государственный университет)
Факультет Кибернетики
Кафедра «Управляющие интеллектуальные системы»
Курс лекций «Введение в СУБД HyTech»
Москва 2011 оглавление
1. Характеристика СУБД HyTech 14
Типовые функции современной СУБД 14
1.1 Управление данными во внешней памяти 14
Управление данными во внешней памяти 14
Организация хранения информации на внешнем устройстве 14
Политика размещения данных на внешних носителях в СУБД HyTech 14
Организация данных в таблицах HyTech 14
Структура файлов, реализующих таблицы СУБД HyTech 15
Организация индексов в СУБД HyTech 15
Журнальные файлы в СУБД HyTech 15
Словарь данных 16
1.2 Управление данными в оперативной памяти 16
Управление данными в ОП 16
Управление буферизацией данных при выполнении запросов на чтение 16
Управление буферизацией данных при выполнении запросов на запись 16
Разделение памяти для общих структур данных 17
Управление пользовательскими структурами данных 17
1.3 Управление транзакциями, обеспечение многопользовательского доступа 17
Термины и определения 17
Управление транзакциями 17
Атомарность транзакции в СУБД HyTech 18
Непротиворечивость информации в СУБД HyTech 18
Изолированность транзакций 18
Долговечность 18
Механизмы разделения времени 19
1.4 Обеспечение отказоустойчивости 19
Термины и определения 19
Обеспечение отказоустойчивости СУБД 19
Механизмы защиты от мягких сбоев 19
Механизмы защиты от жестких сбоев 19
1.5 Поддержка SQL и процедурных языков для работы с данными 20
Стандарт SQL-89 20
Типы данных в SQL HyTech 20
Таблицы в СУБД HyTech 20
Индексы в СУБД HyTech 20
Операторы DML (select, insert, update, delete) в СУБД HyTech 21
Ограничения целостности в СУБД HyTech 21
Оптимизация запросов в СУБД HyTech 22
Прочие операторы и свойства 22
Свойства процедурного расширения СУБД HyTech 22
1.6 Реализация средств сетевого взаимодействия и поддержки распределенных архитектур 23
Средства сетевого взаимодействия и поддержки распределенных архитектур 23
Поддержка сетевых протоколов 24
Работа с другими источниками данных 24
Распределенные вычисления 24
1.7 Разграничение доступа к данным 24
Средства разграничения доступа к данным 24
Базовое управление доступом 24
Аутентификация 25
Управление доступом к данным 25
2. Основные понятия СУБД HyTech 26
Основные понятия СУБД HyTech 26
2.1 Основные понятия 26
Реляционная таблица 26
Временные таблицы 26
Индексы 27
Курсоры 27
Отслеживание изменений данных 27
Механизм снимков 27
Отключение механизма снимков 27
Механизм транзакций 27
Транзакции в HyTech 28
Профиль, роль 28
Генератор 29
Кодификатор 29
Хранимая процедура 29
Триггер 30
Внешний источник данных 30
Встроенные представления 30
Встроенные переменные 31
2.2 Архитектура СУБД HyTech 31
Структура SQL - сервера 31
Схема взаимодействия клиента и сервера 32
Особенности организации таблиц в СУБД HyTech 33
Недостатки организации таблиц в СУБД HyTech 34
Поиск в таблицах СУБД HyTech 34
Идентификация записей в таблицах 35
Использование инвертированных списков в СУБД HyTech 35
Организация хранения данных на диске 36
Структура ядра СУБД 37
Монитор таблиц 37
Монитор транзакций 38
Решение задачи перевода денег 38
Система поддержки транзакций в СУБД HyTech 39
Монитор замков 39
Реализация системы захватов 40
Оптимизация запросов 40
3. SQL диалект СУБД HyTech 41
3.1 Тестовая схема БД 41
Описание тестовой схемы БД 41
Создание тестовой схемы 43
Листинги тестовой схемы 44
3.2 Основные SQL операторы манипулирования данными 49
3.2.1 Оператор отбора информации из таблицы select 49
Оператор select 49
Особенности работы с оператором select 50
Примеры работы с оператором select 50
Объединение выборок 52
Конструкция for update 54
Внешнее соединение 54
Работа с кодификаторами 56
3.2.2 Оператор вывода результатов на экран browse resullts 57
Оператор вывода результатов на экран 57
3.2.3 Оператор копирования записей между таблицами insert select 58
Оператор insert select 58
Примеры работы с оператором 59
3.2.4 Оператор добавления записи в таблицу insert values 60
Оператор insert values 60
Пример работы с оператором insert values 61
3.2.5 Оператор модификации записей в таблице update 62
Оператор update 62
Пример работы с оператором update 62
3.2.6 Оператор удаления строк из таблицы delete 63
Оператор delete 63
3.2.7 Оператор выполнения запроса, заданного строкой execute immediate 64
Оператор execute immediate 64
3.2.8 Оператор выгрузки результатов в таблицу results table 65
Оператор results table 65
3.3 Операторы управления транзакциями и снимками 66
3.3.1 Операторы работы со снимками 66
Операторы работы со снимками 66
3.3.2 Операторы работы с транзакциями 67
Механизм транзакций и механизм снимков 67
Оператор начала транзакции begin work 68
Операторы завершения транзакции 69
Примеры работы с операторами завершения транзакции 70
Работа с транзакциями в многопользовательском режиме 71
3.3.3 Блокировки 71
Оператор блокирования таблицы lock 71
Оператор освобождения строк unlock 72
Примеры работы с блокировками 72
3.4 Операторы работы с таблицами и индексами 72
3.4.1 Оператор создания таблицы create table 73
Оператор create table 73
Атрибуты и ограничения столбцов 74
Временные таблицы 75
Другие функции для создания таблиц - функция dsexec 75
Другие функции для создания таблиц - функция copytable 76
Другие функции для создания таблиц - функция htCreateTable 77
Другие функции для создания таблиц - функция imptitle 77
3.4.2 Оператор удаления таблицы drop table 78
Оператор drop table 78
3.4.3 Оператор открытия таблицы open table 79
Оператор open table 79
3.4.4 Оператор закрытия таблицы close table 79
Оператор close table 79
3.4.5 Оператор переноса переменной части таблицы в постоянную pack table 80
Оператор pack table 80
3.4.6 Оператор удаления переменной части таблицы drop diff 81
Оператор drop diff 81
3.4.7 Оператор переименования таблицы rename table 82
Оператор rename table 82
3.4.8 Оператор создания индекса таблицы create index 82
Оператор create index 82
Использование группы атрибутов в качестве индекса 82
Добавление подстроки в качестве индекса таблицы 83
3.4.9 Оператор удаления индекса drop index 85
Оператор drop index 85
Удаление группы или подстроки 85
3.5 Операторы для работы с внешними источниками данных 86
Создание внешнего источника данных 86
Выполнение запросов к внешнему источнику данных 87
Пакетное выполнение запросов к внешнему источнику данных 87
Удаление внешнего источника данных 89
3.6 Операторы для работы с генераторами 89
Операторы create generator, set generator 89
Операторы gen_id, drop generator 90
Использование генератора 91
4. Процедурные расширения SQL диалекта СУБД HyTech 93
4.1 Лексические элементы языка 93
Лексические элементы - зарезервированные слова 93
Зарезервированные слова 93
Лексические элементы - константы 94
Константы 94
Константы целого типа 94
Константы вещественного типа 95
Строковые константы 95
Константы типа дата 95
Лексические элементы - операции, ограничители, комментарии 95
Ограничители 95
Операции 95
Комментарии 96
Лексические элементы - идентификаторы 96
Идентификаторы 96
4.2 Переменные 96
Переменные процедурного языка HyTech 96
4.3 Типы данных 97
Типы данных для хранения целочисленных и действительных значений 97
Типы данных float, double, currency 97
Типы данных byte, int, word, number, long, dword 98
Типы данных процедурного языка HyTech. 98
Типы данных для хранения символьных значений, дат и массивов 99
Тип данных date 99
Тип данных char 99
Тип данных array 99
4.4 Линейные операторы 100
Выражения - арифметические операции 100
Выражения 100
Арифметические операции 100
Выражения - операции отношения и присваивания 100
Операции отношения 100
Операция присваивания 101
Выражения - логические операции 101
Составной оператор, пустой оператор 102
Составной оператор 102
Пустой оператор 102
Оператор вывода, оператор завершения работы программы 103
Оператор вывода 103
Оператор завершения работы программы 103
Операторы ветвления 104
Оператор ветвления 104
Оператор цикла с предусловием в формате WHILE 105
Оператор цикла с предусловием в формате FOR 106
Оператор цикла с постусловием 107
Переход к выполнению очередной итерации цикла 108
4.5 Хранимые процедуры и функции 108
Хранимые процедуры 108
Функции 110
4.6 Триггеры 112
Создание триггера 112
Удаление триггера 113
4.7 Совместное использование SQL запросов и процедурных расширений 114
Совместное использование SQL-запросов и процедурных расширений 114
Передача переменных в качестве параметра в SQL-запрос 114
Сохранение результата запроса в переменной 114
Использование результата запроса 115
Использование результата, сохраненного в переменной, в других запросах 115
Чтение результата запроса 115
Работа с триггерами 116
Использование в триггерах переменных old и new 116
Проверка ошибок триггера 117
4.8 Встроенные SQL функции 118
Функции преобразования 118
Функции преобразования 118
Строковые функции 118
Операции с таблицами, выполнение запросов 119
Функции работы с датами и временем 120
Импорт-экспорт 120
Функции для получения информации о таблицах 120
Числовые функции 120
Функции обработки ошибок 121
Интерфейсные и битовые функции 121
Интерфейсные функции 121
Битовые функции 121
Функции отладки 121
Функции отладки 121
Разные функции 122
Функции работы с кодификаторами 122
4.9 Практические приемы и оптимизация SQL запросов 122
Навигационное соединение таблиц 122
Использование кодификаторов вместо соединений 123
Уточнение результатов соединения 124
Использование конструкции IN вместо соединения 125
Использование группы для связки таблиц по нескольким ключам 126
Получение декартового произведения 127
Использование ключевых полей в запросах 128
Использование суррогатного ключа вместо уникального ключа 128
Использование неуникального ключа вместо уникального 128
Использование ключевого поля вместо неключевого 128
Выделение длинных неключевых полей в отдельную таблицу 129
Расположение суррогатного ключа в начале строки 129
4.10 Оптимизация поисковых запросов 129
Поиск в результатах предыдущего поиска 129
Использование временных таблиц для промежуточных вычислений 130
Оптимизация группировки и сортировки 130
Различные приемы оптимизации 131
Перенос условий из having в where 131
Уменьшение размера поля, используемого для поиска по маске 131
Перенос изменений в постоянную часть 131
Использование пакетных SQL-операций вместо одиночных 132
4.11 Диагностика результатов выполнения SQL запросов 133
Работа с функциями обработки ошибок - функции lasthterr, lastsqlerr 133
Функция lasthterr – Получить код последней ошибки HyTech 133
Функция lastsqlerr – Получить код последней ошибки Sql 133
Работа с функциями обработки ошибок - функции sqlermsg, htiomsg 133
Функция sqlermsg – Получить текст сообщения об ошибке SQL 133
Функция htiomsg — Получить сообщение об ошибке ввода/вывода 134
Работа с функциями обработки ошибок - функции htabort, htSetError 134
Функция htabort – Завершает (или нет) выполнение SQL-скрипта при ошибке в HyTech 134
Функция htSetError – Установить пользовательский код ошибки 135
Коды ошибок SQL 135
5. Администрирование СУБД HyTech 137
Типовые задачи администрирования 137
5.1 Установка и настройка сервера HyTech 137
Установка сервера 137
Получение дистрибутива СУБД HyTech 137
Инсталляция СУБД HyTech в Windows 137
Инсталляция СУБД HyTech в Linux 138
Настройка параметров работы сервера 139
Файл инициализации - раздел «Параметры» 140
Файл инициализации - раздел «SQL процесс» 140
Файл инициализации - другие разделы файла инициализации 143
Пример файлов инициализации 143
Типовые рекомендации по настройке параметров сервера в файле инициализации 145
5.2 Запуск/останов работы сервера 146
Управление сервером 146
Запуск/останов HyTech SQL сервера 146
Настройка стартового файла 147
Мониторинг действий сервера с использованием лог-файла 148
Конфигурирование сервера по результатам мониторинга 150
5.2.1 Запуск/останов работы сервера в режиме сервиса 152
Регистрация и задание параметров сервиса 152
Настройка параметров сервиса в конфигурационном файле 152
Запуск, останов, удаление регистрации сервиса 153
5.2.2 Запуск/останов работы сервера в режиме консольного приложения 153
Администрирование запуска/останова работы сервера в режиме консольного приложения 153
Запуск/останов/пауза сервера 154
Запуск/останов сервера по расписанию 154
Мониторинг действий сервера - мониторинг из окна приложения сервера 157
Мониторинг и управление процессами 158
5.3 Резервное копирование (архивирование) и восстановление БД 159
Резервное копирование и восстановление БД 159
Архивирование базы данных в автономном режиме 160
Архивирование базы данных в оперативном режиме 161
Архивирование таблиц пользователей 161
Архивирование системных таблиц 162
Архивирование файла инициализации 163
Планирование стратегии архивирования базы данных 164
Восстановление базы данных, архивированной в автономном режиме 165
Восстановление базы данных, архивированной в оперативном режиме 165
Восстановление базы данных, архивированной в оперативном режиме - восстановление таблиц 166
Восстановление базы данных, архивированной в оперативном режиме - восстановление системных таблиц 166
5.4 Проверка и исправление таблиц данных и системных таблиц 167
Проверка и исправление таблиц 167
Проверка таблиц 168
Исправление поврежденного журнала 169
Исправление повреждения постоянной части или ассоциатора 169
Проверка целостности системных таблиц и восстановление системных таблиц сервера 169
Примеры пакетной проверки таблиц 170
Конфигурационный файл с именем HTCTLG.INI 171
5.5 Конфигурирование СУБД для использования прокси - сервера 172
Назначение прокси - сервера 172
Установка, запуск и останов прокси-сервера 173
Конфигурирование прокси-сервера 174
5.6 Индексирование и упаковка таблиц, снятие провисшего захвата 175
Индексирование таблицы 175
Упаковка таблицы (перенос журнала в постоянную часть) 176
Снятие провисшего захвата с записи таблицы 176
5.7 Управление безопасностью 177
Управление безопасностью 177
Создание пользователя 177
Изменение/удаление пользователя 178
Аутентификация пользователя при входе в систему 179
Создание профиля безопасности 179
Изменение/удаление профиля безопасности 181
Создание/удаление роли 181
Назначение права пользователю или роли 182
Отмена права пользователю или роли 184
Назначение/отзыв роли пользователю или другой роли 186
Установка/изменение пароля на чтение/запись данных в таблицу 187
Шифрование данных в таблицах 187
Аудит действий пользователя 189
6. PHP как инструментальное средство создания WEB приложений 190
Архитектура web-приложений с использованием PHP - клиент, http сервер 190
Архитектура web-приложений с использованием PHP - интерпретатор PHP, CУБД HyTech 190
Установка и настройка сервера Apache и модуля PHP 192
Установка для Windows 192
Установка для GNU/Linux 198
6.1 Синтаксис PHP 199
6.1.1 Общие свойства кода 199
Общие свойства кода 199
Комментарии, переменные, константы 200
Типы данных и выражения 201
Тип данных integer (целое число) 201
Тип данных float (число с плавающей точкой) 202
Тип данных boolean (логический) 203
Тип NULL 204
Тип данных строка 205
Создание массива 206
Доступ к элементам массива 207
Операции работы с массивом 208
6.1.2 Управляющие конструкции 209
Условный оператор 209
Оператор «переключатель» 210
Циклы 211
Примеры работы с циклами 212
Операторы передачи управления - break 214
Операторы передачи управления - continue 214
Операторы включения - include 215
Операторы включения - require 217
6.2 Пользовательские функции в PHP, функции работы с массивами и строками 217
6.2.1 Пользовательские функции в PHP, функции работы с массивами и строками 217
Пользовательские функции 217
Параметры пользовательских функций 218
Параметры пользовательских функций - переменное число параметров 219
Возвращаемое значение 220
Локальные и глобальные переменные 221
Статические переменные 222
6.2.2 Встроенные функции для работы с массивами 222
Функции поиска 223
Примеры функций поиска 223
Функции сортировки 224
Примеры сортировок 226
Итераторы 228
Функции выборки и преобразования массивов 228
Примеры работы с функциями выборки и преобразования массивов 229
6.2.3 Строковые функции и регулярные выражения 230
Строковые функции 230
Примеры использования строковых функций 231
Функции разбора регулярных выражений 232
Примеры использования функций разбора регулярных выражений 232
Шаблоны 233
Шаблоны, продолжение 234
Подшаблоны 235
Модификаторы 236
6.3 Технология использования PHP при создании Интернет - приложений 237
6.3.1 Технология обработки HTTP-запросов с помощью PHP 237
Методы доступа 237
Параметры и переменные 238
HTML - формы 239
HTML - формы, продолжение 240
Более сложная HTML- форма 241
6.3.2 Сессии 242
Взаимодействие между клиентом и сервером 242
Идентификатор сессии, использование механизма сессии 243
Пример работы с сессиями 245
6.4 Классы и объекты в PHP 246
6.4.1 Общие сведения о классах и объектах 246
Классы 246
Примеры создания класса 247
Особенности передачи объектов в классы 247
6.4.2 Наследование 248
Пример наследования 248
Уровни доступа 249
Пример с различными уровнями доступа 250
Абстрактные классы и интерфейсы 251
6.4.3 Конструкторы и деструкторы 253
Создание конструктора и деструктора 253
Конструктор в классах-потомках 254
6.4.4 Полиморфизм 255
Перегрузка методов 255
Другие возможности полиморфизма 256
6.4.5 Исключения 257
Исключения 257
7. Совместное использование языка PHP и СУБД HyTech 259
7.1 API HyTech в среде PHP 259
Основные функции API HyTech в среде PHP 259
7.1.1 Функции для соединения и отключения от сервера HyTech 259
Соединение с сервером HyTech, функция hytech_connect 259
Соединение с сервером HyTech, функция hytech_pconnect 260
Отключение от сервера HyTech 260
Функция для смены кодировки символов 262
7.1.2 Функции для выполнения SQL-запросов 262
Выполнение SQL-запроса и открытие результата запроса 262
Выполнение SQL-запроса без открытия результата 263
7.1.3 Функции для работы с результатами SQL-запросов 264
Закрытие ранее открытого результата 264
Получение количества полей в результате запроса 264
Пример использования функций 265
Получение значений полей в заданной строке результата 266
Получение строки результата в виде объекта 267
Получение значения поля в заданной строке результата 268
Пример использования функций 268
7.1.4 Функции для работы с типами DATE и ARRAY в HyTech 269
Установка режима работы с датами и массивами 269
Установка формата строки для преобразования даты 270
Преобразование строки в дату (целое число) 270
Преобразование даты(числа) в строку 271
Пример работы с функциями преобразования 271
7.1.5 Функции для пакетного ввода данных 273
Пакетное добавление строк в таблицу 273
Открытие таблицы 273
Добавление строки в буфер пакетного ввода 273
Сохранение в таблице строк из буфера пакетного ввода 274
Пример работы с пакетным вводом информации 275
7.1.6 Функции для диагностики ошибок 276
Диагностика ошибок 276
7.2 Комплексный пример работы приложения с использованием PHP и СУБД HyTech 277
Описание сценария взаимодействия с пользователем 277
Форма регистрации 278
Скрипт формы регистрации 279
Функции для работы с БД 281
Страница для выбора таблицы 283
Регистрация переменной "table" 286
Выбор строк из таблицы 287
Форма редактирования 291
Сохранение информации 295
Результат успешного добавления строки 299