
- •История развития субд.
- •Информационные системы. Основные функции и области применения.
- •Банк данных и его компоненты.
- •Классификация моделей представления данных
- •Сетевая модель данных. Достоинства и недостатки
- •Иерархическая модель данных. Достоинства и недостатки
- •Классификация программ субд
- •Общие понятия реляционного подхода к организации баз данных. Основные концепции и термины
- •Первичный и внешний ключи. Индексы
- •Реляционная алгебра. Основные операции
- •Реляционное исчисление
- •Проектирование реляционных баз данных с использованием нормализации
- •Целостность баз данных. Каскадное удаление и изменение данных.
- •Структуры внешней памяти. Хранение отношений. Индексы. Методы организации индексов. Служебная информация
- •Журнализация изменений бд
- •Сериализация транзакций. Синхронизационные захваты. Метод временных меток
- •Синхронизационные захваты
- •Транзакция. Уровни изолированности пользователей
- •Функции и основные возможности языка sql.
- •Отличие sql от процедурных языков программирования.
- •Интерактивный и встроенный sql
- •Типы данных sql
- •4.1. Тип данных «строка символов»
- •Varchar[(длина)]
- •4.2 Числовые типы данных
- •4.3 Дата и время
- •4.4 Неопределенные или пропущенные данные (null)
- •Простейшие select-запросы. Синтаксис
- •Операторы in, between, like, is null
- •Агрегирование и групповые функции. Упорядочение выходных полей
- •Команды манипулирования данными. Использование подзапросов в insert
- •Использование подзапросов, основанных на таблицах внешних запросов
- •Использование подзапросов с delete
- •Использование подзапросов с update
- •Основные особенности архитектуры клиент-сервер
- •Организация данных в InterBase.
- •InterBase и область его применения
- •Описание данных на основе sql Организация данных в InterBase. Типы данных.
- •Домены. Создание доменов. Изменение доменов. Удаление доменов.
- •Индексы. Создание индексов. Изменение индекса. Восстановление индекса. Удаление индекса.
- •4.1 Создание индексов
- •4.3. Восстановление индекса
- •4.4 Удаление индекса
- •Исключения. Создание исключения. Изменение исключения. Удаление исключения
- •Триггеры и их назначение. Команды создания, удаления и модификации триггеров и хранимых процедур.
- •Работа с blob и функции, определенные пользователем
- •Объявление внешней функции
Описание данных на основе sql Организация данных в InterBase. Типы данных.
В каждом столбце таблицы хранятся данные одного определенного типа. Данные, по которым ведется поиск, должны быть простого (неструктурированного) типа, для которого определены операции сравнения. Данные других типов допускаются, но для работы с ними используются средства, выходящие за пределы стандарта SQL.
Перечень обрабатываемых типов данных совпадает со списком, приведенным при описании типов данных SQL, однако дополнен следующими типами данных:
DATE в версии до 6 или TIMESTAMP в версиях от 6 (8 байт) включает также данные о времени; DATE в версии от 6 (4байта) – только дата и TIME в версии от 6 (4 байта) только время.
NCHAR (n)/ NATIONAL CHARACTER (n) / NATIONAL CHAR (n) – строка фиксированной длины, использующая кодовой набор ISO8859_1;
NCHAR VARYING (n) / NATIONAL CHARACTER VARYING(n) / NATIONAL CHAR VARYING(n) – строка переменной длины, использующая кодовой набор ISO8859_1;
BLOB [SUB_TYPE {int | subtype name}] [SEGMENT SYZE int] [CHARACTER SET charname]/ BLOB [(seglen [, subtype] ) ].
SUB_TYPE:
0 – неструктурированный (используется для двоичных данных или данных неопределенного типа);
1 – текст;
2 – двоичное языковое представление BLR;
3 – Access control list;
4 – зарезервировано;
5 – закодированное описание метаданных текущей таблицы;
6 – описание ненормально завершенной транзакции к нескольким базам;
<0 – пользовательский тип.
SEGMENT SYZE – размер блока, через который осуществляется чтение-запись данных BLOB.
Все данные, кроме BLOB, могут быть организованы в массивы. Массивы могут содержать от 1 до 16 измерений.
Домены. Создание доменов. Изменение доменов. Удаление доменов.
Создание доменов
Перед тем, как создавать таблицы, которые ссылаются на домены, необходимо задать описания доменов при использовании команды CREATE DOMAIN. В результате ее выполнения создается шаблон, на который можно ссылаться в командах создания и модификации таблиц.
Столбцы, базирующиеся на доменах, наследуют все характеристики домена, причем часть из них может быть переопределена в локальных описаниях столбцов.
CREATE DOMAIN <name_domain> [AS] <data_type>
[DEFAULT {literal| NULL| USER}]
[NOT NULL] [CHECK (<dom_condition>)];
<name_domain> - имя создаваемого домена; <data_type> - любой допустимый тип данных;
[DEFAULT {literal| NULL| USER}] – задание значения по умолчанию. Значение по умолчанию присваивается соответствующему атрибуту при создании новой строки в таблице, если его значение не указано явно. Literal – указывает значение явно; NULL – оставляет значение пустым; USER – имя пользователя, создавшего запись. Для полей типа дата можно указывать NOW – вводится текущая дата.
NOT NULL – запрещает ввод пустых значений.
CHECK (<dom_condition>) – задает ограничение (описание контроля данных при вводе и изменении). Для задания условия используются следующие ключевые слова:
VALUE – подразумевает значение, вводимое в поле;
IS NULL, IS NOT NULL;
BETWEEN…AND; LIKE, IN;
А также все арифметические и логические операторы.
Изменение доменов осуществляется командой ALTER DOMAIN. С помощью данной команды можно изменить любые характеристики домена, кроме типа данных и установок NOT NULL. Сделанные изменения воздействуют на атрибуты всех таблиц, где использовался измененный домен.
Команду ALTER DOMAIN может выдать либо создатель домена, либо пользователь с правами системного администратора.
Для изменения типа поля или установки NOT NULL необходимо удалить домен, если это возможно (если домен используется для описания столбцов каких-либо таблиц, то удалить его нельзя), а затем создать его снова с требуемыми характеристиками.
Синтаксис команды изменения домена:
ALTER DOMAIN name_domain {
[SET DEFAULT {literal|NULL|USER}]
[DROP DEFAULT]
[ADD [CONSTRAINT] CHECK (<dom_condition>)]
[DROP CONSTRAINT]
};
[DROP DEFAULT] – удалить значение по умолчанию;
[ADD [CONSTRAINT] CHECK (<dom_condition>)] – добавить ограничение;
[DROP CONSTRAINT] – удалить ограничение.
Удаление доменов осуществляется командой DROP DOMAIN. Если домен используется в каких-либо таблицах, то удалить его нельзя.
Синтаксис команды:
DROP DOMAIN name_domain;
Таблицы. Создание таблицы. Модификация таблицы. Удаление таблиц
Прежде чем перейти к созданию таблицы, необходимо провести проектирование базы данных. Далее следует создать комплект необходимых доменов и только затем можно переходить к созданию таблиц.
Создание таблицы осуществляется с использованием команды CREATE TABLE, которая создает структуру таблицы и в самом простом случае определяет название таблицы, перечень полей с указанием типов данных, а также контрольными ограничениями. Кроме того, при создании таблицы можно задать первичный ключ, внешние ключи, дополнительные виды контроля на уровне записей.
Упрощенный синтаксис команды:
CREATE TABLE <имя таблицы>
(описание полей таблицы);
Описание полей таблицы:
Name { <тип данных> |COMPUTED [BY] (<выражение>)| <имя домена>}
[DEFAULT {literal|NULL|USER}]
[NOT NULL]
[<ограничение столбца>];
Name – заголовок столбца;
COMPUTED [BY] (<выражение>)- выражение для вычисляемого столбца. Значения вычисляемых столбцов рассчитывается всякий раз при обращении к ним. Выражение может быть любым допустимым в InterBase выражением, возвращающим единственное значение простого типа. Например, допустимы выражения с предложением SELECT.
<имя домена> - имя ранее определенного домена.
[<ограничение столбца>] – описывает ограничение логической целостности столбца.
InterBase позволяет задавать ограничения на отдельные столбцы и на таблицу в целом., называемые ограничением логической целостности, которые задают порядок управления зависимостями между столбцом и таблицей, а также между таблицей и таблицей. Они воздействуют на все выполняемые с таблицей действия, автоматически поддерживаясь системой.
Конструкция <ограничение столбца> имеет следующий синтаксис:
[CONSTRAINT <имя ограничения>]
{UNIQUE
| PRIMARY KEY
| CHECK (<конкретное условие>)
| REFERENCES <имя другой таблицы> [(список атрибутов)]
[ON DELETE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}]
[ON UPDATE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}]
}
CONSTRAINT <имя ограничения> – ограничению можно присваивать имя, при выдаче системой сообщения об ошибке данного ограничения, будет выдано имя ограничения, которое нарушено.
UNIQUE – значение столбца должно быть уникальным. Не допускает пустых значений. Уникальных ключей может быть несколько.
PRIMARY KEY – поля является первичным ключом таблицы.
CHECK (<конкретное условие>) – задает условие, которому должно соответствовать значение определяемого столбца. В данной конструкции можно использовать любые данные текущей строки таблицы, а также результат запроса SELECT.
REFERENCES <имя другой таблицы> [(список атрибутов)]
[ON DELETE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}]
[ON UPDATE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}] } – задает ограничение внешнего ключа для описываемого столбца. ограничение означает, что данное поле соответствует первичному ключу (указанному в списке атрибутов) в таблице «имя другой таблицы» и в этой таблице имеется строка с указанным значением. Если список опущен, то предполагается список из одного поля, имеющего то же имя, что и описываемое.
Дополнительные режимы ON DELETE и ON UPDATE задают действия, производимые при удалении или обновлении ключевых полей в родительской (имя другой таблицы) таблице.
NO ACTION – нет действий (по умолчанию);
CASCADE - каскадное удаление (замена) влечет удаление (замену) во всех строках дочерней таблицы при удалении (замене) соответствующих им строк родительской таблицы;
SET DEFAULT – при удалении (замене) строк родительской таблицы, соответствующие им поля в дочерней переустанавливаются в значения по умолчанию.
SET NULL - при удалении (замене) строк родительской таблицы, соответствующие им поля в дочерней переустанавливаются в пустые значения.
Ограничение, накладываемое на всю таблицу имеет синтаксис:
[CONSTRAINT <имя ограничения>]
{{PRIMARY KEY | UNIQUE} (<список атрибутов>)
| FOREIGN KEY (<список атрибутов>) REFERENCES <имя другой таблицы>
[ON DELETE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}]
[ON UPDATE {NO ACTION| CASCADE | SET DEFAULT| SET NULL}]
| CHECK (<условие>)
}
Ограничение FOREIGN KEY означает, что значение в указанном столбце или списке столбцов соответствует первичному ключу в таблице «имя другой таблицы» и в этой таблице имеется строка с указанным значением.
CHECK (<условие>) – задает условие, проверяемые по значениям группы столбцов.
Модификация таблицы
Для изменения структуры уже существующей таблицы предназначена команда ALTER TABLE, которая позволяет:
Добавить в таблицу новый столбец;
Удалить уже существующий столбец;
Добавить в таблицу или удалить из нее ограничение на столбец или таблицу в целом.
В одной команде ALTER TABLE можно задать любое число изменений. Внесение изменений разрешено создателю таблицы или системному администратору.
Модификация таблицы, если она содержит данные и связана с другими таблицами, является потенциально опасной операцией.
Добавление столбца в таблицу
При добавлении нового столбца в таблицу каких-либо конфликтов с ранее введенными данными не возникает. Тем не менее, если столбец имеет ограничение NOT NULL, а таблица уже содержит данные, необходимо при добавлении столбца задать значение по умолчанию (DEFAULT).
Удаление столбца из таблицы
Удалить столбец можно лишь в том случае, если он не используется ни в каких ограничениях. Поэтому, прежде, чем удалить столбец, необходимо удалить все ограничения, в которых данный столбец фигурирует.
Изменение формата столбца
Стандартный синтаксис команды ALTER TABLE не предполагает возможности изменения столбца. Поэтому изменение предполагает как минимум две команды ALTER TABLE. Первая из них удаляет столбец, а вторая – добавляет новый столбец с новыми ограничениями.
Команда удаления столбца влечет за собой полную потерю всех данных, хранящихся в столбце, поэтому команда выполняется поэтапно:
Добавить новый столбец с тем же типом данных, что и в изменяемом столбце;
Скопировать данные из существующего столбца в новый (UPDATE);
Удалить ограничения на изменяемый столбец;
Выполнить удаление существующего столбца;
Создать столбец с именем удаленного и новыми характеристиками;
Скопировать данные из столбца-копии в новый столбец;
Удалить столбец-копию;
Выполнить операции по восстановлению ограничений, удаленных в процессе этапа (3).
Добавление ограничений
Добавление ограничений не требует никаких вспомогательных действий, следует только соблюдать порядок их добавления.
Удаление ограничений
Удаление ограничений не требует никаких вспомогательных действий, следует только соблюдать порядок их удаления
Синтаксис команды ALTER TABLE
ALTER TABLE <имя таблицы>
ADD <имя столбца>
ADD <ограничение>
DROP <имя столбца>
DROP CONSTRAINT <ограничение>
ADD <имя столбца> и ADD <ограничение> - имеют такой же синтаксис, что и при создании таблицы;
3.3 Удаление таблиц. Для удаления таблицы предназначена команда DROP TABLE после которой указывается имя удаляемой таблицы.
Если в базе есть ссылки на удаляемую таблицу из других таблиц, то удаление не выполняется. Кроме того, удаление не выполнятся, если есть активная транзакция, работающая с удаляемой таблицей.