- •Методические указания к лабораторным работам по курсу «Базы данных»
- •Оглавление
- •Создание связей
- •Создание рекурсивных связей
- •Ввод данных в таблицы
- •Дефрагментизация таблиц
- •Создание запросов в «OpenOffice». Создание простых запросов
- •Вычисление значений выражений
- •Работа с null значениями
- •Исключение повторяющихся записей
- •Запрос данных из связанных таблиц
- •Контрольные задачи на простые запросы
- •Правое и левое соединение таблиц
- •Черная кошка в темной комнате
- •Если таблицы не соединять или «все комбинации»
- •Статистические функции
- •Запросы непосредственно на sql
- •Контрольные задачи на запросы на sql
- •Запросы на изменение данных
- •Запрос select … into
- •Запрос insert into
- •Запрос delete
- •Запрос update
- •Запрос drop table
- •Запрос create table
- •Запрос alter table
- •Запрос create view
- •Запрос drop view
- •Пакеты запросов на изменение
- •Пакеты запросов, формируемые select запросами
- •Хранимые процедуры и функции
- •Создание форм с выбором значений из списка Создание форм с помощью мастера.
- •Ввод данных с помощью формы.
- •Формы с расположением элементов типа столбцы или блоки.
- •Редактирование формы с помощью конструктора.
- •Создание выпадающего списка
- •Создание выпадающего списка в таблице
- •Создание независимых субформ
- •Доступ к элементам форм из программ на basic Библиотеки макросов
- •Вызов функции по нажатию кнопки
- •Настройка вызова редактора макросов по кнопке
- •Получение значений, введенных в поля формы
- •Изменение значений, в полях формы
- •Получение данных из текущей записи формы
- •Изменение данных текущей записи формы
- •Представление зависимых таблиц на одной форме
- •Представление независимых таблиц на одной форме
- •Обновление форм после изменения данных в базе.
- •Открытие формы по нажатию кнопки
- •Выполнение sql запросов из макросов Выполнение запросов на изменение данных
- •Универсальная форма для запросов на изменение данных
- •Выполнение параметрических запросов
- •Выполнение запросов на выборку данных
- •Загрузка данных в массив и вывод списка
- •Загрузка файла в базу данных и выгрузка файла из базы
- •Приложение 1 - Встроенные функции и процедуры Hsqldb Функции для работы с числами
- •Функции для работы со строками
- •Функции для работы с датой/временем
- •Функции информации о подключении к базе данных
- •Прочие функции
- •Литература
МГТУ им Н.Э. Баумана
Мельников В.Ю.
Методические указания к лабораторным работам по курсу «Базы данных»
на OpenOffice.org Base
2010
Оглавление
Оглавление 2
Введение 3
Создание базы данных в «OpenOffice». 3
Создание запросов в «OpenOffice». 9
Запросы на изменение данных 27
Хранимые процедуры и функции 32
Создание форм с выбором значений из списка 34
Доступ к элементам форм из программ на basic 40
Выполнение SQL запросов из макросов 46
Приложение 1 - Встроенные функции и процедуры Hsqldb 50
Литература 52
Введение
Данное руководство разработано на основе опыта автора в разработке информационных систем, с учетом трехлетнего опыта проведения лабораторных работ на OpenOffice в МГТУ им Н.Э. Баумана.
Упор делается на практические примеры с пояснениями, по аналогии с которыми можно создавать собственные запросы, формы и макросы.
Создание базы данных в «OpenOffice».
В рамках данного курса мы будем работать со встроенной СУБД «HSQL».
Создание базы данных
-
Запустить программу «OpenOffice.org Base»
-
Выбирать переключатель «Создать новую базу данных» и нажать кнопку «Готово»
-
Выбрать папку и ввести имя файла базы данных. Нажать кнопку «Сохранить».
Открывается главное окно программы.
Создание таблиц
-
В левом поле главного окна выбрать элемент «Таблицы»
-
В поле «Задачи» выбрать элемент «Создать таблицу в режиме дизайна»
Открывается конструктор таблиц. В него надо ввести описание создаваемой таблицы
Каждая строка таблички в верхней части окна конструктора содержит описание одной колонки (поля) создаваемой таблицы.
-
В колонку «Название поля» вводим наименование колонки таблицы.
-
В колонку «Тип поля» вводим тип данных для этой колонки.
-
INTEGER– целое число (4 байта).
-
VARCHAR– строка (ограниченной длинны)
-
DOUBLE – вещественной число с двойной точностью (8 байт). Подходит для научных вычислений, но из-за ошибок округления для подсчета денег, используйте NUMERIC, иначе ваш баланс не сойдется на 1-2 копейки.
-
NUMERIC – число с заданным числом знаков до и после запятой
-
DATE – Дата – без учета времени
-
TIME – Время – без учета даты
-
TIMESTAMP – Дата + время
-
LONGVARBINARY – Двоичные данные произвольной длинны. Содержимое файла.
-
В колонку «Описание» можно ввести примечание. Эта строка больше нигде не участвует.
-
Обязательно, для одного из полей в левой колонке (серого цвета) из контекстного меню следует выбрать пункт «Первичный ключ». Значения в соответствующей колонке таблицы не должны повторятся. При попытке добавления записи с повторяющимся значением в ключевом поле будет выдана ошибка. Ключевое поле используется для быстрого поиска записей при выполнении запросов.
В некоторых случаях используется составной ключ. Для этого, надо выделить несколько полей (щелчками левой кнопки мыши в серой колонке при нажатой клавише «Ctrl») и из контекстного меню выбрать пункт «Первичный ключ». Комбинации значений в соответствующих полях не должны повторяться. Опыт показывает, что запросы, использующие составной ключ хуже оптимизируются СУБД и в некоторых случаях ускоряются в несколько раз после добавления колонки простого ключа.
После задания ключевого поля таблицу рекомендуется сохранить командой «Сохранить» из меню «Файл» или используя комбинацию клавиш «Strl+S». При первом сохранении будет запрошено имя таблицы. Внимание! СУБД HSQL держит все таблицы в оперативной памяти. Для сохранения изменений на диск надо в главном окне программы из меню «Файл» дать команду «Сохранить» или нажать соответствующую кнопку на панели инструментов. То же относится и к другим объектам базы данных. Периодически сохраняйтесь во избежание потерь данных при аварийном завершении программы.
Для ускорения поиска записей по другим колонкам, можно создать дополнительные индексы. Для этого из меню «Сервис» следует выбрать пункт «Проектирование индекса», нажать кнопку «Новый индекс», ввести имя нового индекса и выбрать из выпадающего списка имя поля. Индексы многократно ускоряют выполнение запросов. По мере необходимости, для ускорения запросов добавляется индекс за индексом, пока почти все колонки не окажутся проиндексированы. К сожалению, за использование индексов приходится расплачиваться увеличением оперативной памяти. Еще одно замечание. Индексы не ускоряют поиск по части строки.
Для выделенного поля в нижней части окна конструктора выводятся дополнительные свойства:
-
Можно задать значение по умолчанию, которое будет автоматически заноситься в поле при добавлении новой записи.
-
Можно включить режим «Обязательное». При попытке сохранения записи, в котором это поле не задано, выдается ошибка. Ключевое поле всегда обязательное.
-
Можно задать формат представления числа. Для этого следует нажать кнопку «…» и выбрать в открывшемся диалоге один из готовых форматов или настроить собственный.
-
Для целочисленного поля [INTEGER] Можно включить режим «Автозначение». Для каждой добавляемой в таблицу записи в это поле автоматически будет заноситься новое число на 1 больше предыдущего. Даже удаление всех записей из таблицы не сбрасывает счетчик.
-
Для текстового [VARCHAR] поля можно задать длину поля. Внимание! При задании связей между таблицами важно, чтобы для связываемых полей совпадал и тип поля и длина поля. К сожалению, это выясняется только при вводе данных в таблицы.
Таблицы учебной базы данных
Создайте следующие таблицы (примечания насчет связей пока игнорируйте)
Таблица |
Поле |
тип |
Примечания |
Предмет |
Код |
Целое |
Авто – значение, первичный ключ |
|
Наименование |
Текст |
|
Преподаватель |
Код |
Целое |
Авто – значение, первичный ключ |
|
ФИО |
Текст |
|
Оценка |
Код |
Целое |
Первичный ключ, 5-отлично, 0-неаттестован |
|
Наименование |
Текст |
|
Факультет |
Шифр |
Текст(5) |
Первичный ключ |
|
Наименование |
Текст |
|
Группа |
Шифр |
Текст(10) |
Первичный ключ |
|
Факультет |
Текст(5) |
Связь с Факультет. Шифр |
|
Курс |
Целое |
|
Студент |
№ зачетки |
Текст(10) |
Первичный ключ |
|
Группа |
Текст(10) |
Связь с Группа. Шифр |
|
ФИО |
Текст |
|
|
Дата рождения |
Дата |
Формат DD.MM.YYYY |
Ведомость |
Код |
Целое |
Авто – значение, первичный ключ |
|
№ |
Целое |
Регистрационный номер ведомости |
|
Дата |
Дата |
Формат DD.MM.YYYY |
|
Группа |
Текст |
Связь с Группа. Шифр |
|
Предмет |
Целое |
Связь с Предмет. Код |
|
Преподаватель |
Целое |
Связь с Преподаватель. Код |
Результат |
Студент |
Текст(10) |
Первичный ключ, Связь с Студент.№зачетки |
|
Ведомость |
Целое |
Первичный ключ, Связь с Ведомость.код |
|
Оценка |
Целое |
Связь с Оценка.Код |
Сообщество |
Код |
Целое |
Авто – значение, первичный ключ |
|
Наименование |
Текст |
|
|
Группа сообществ |
Целое |
Связь с Сообщество.Код |
Член сообщества |
Сообщество |
Целое |
Первичный ключ, Связь с Сообщество.Код |
|
Студент |
Текст(10) |
Первичный ключ, Связь с Студент.№зачетки |
В случае ошибки, выберите в главном окне нужную таблицу и из меню «Правка» дайте команду «Правка». Снова откроется окно конструктора таблиц, в котором можно внести изменения.
Чтобы переименовать таблицу используйте команду «Переименовать» и из меню «Правка».