
- •1. Введение в бд
- •2. Теоретические основы бд
- •2.1 Базы данных
- •2.2. Архитектуры обработки информации
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3 Модели баз данных
- •2.3.1 Иерархическая модель данных
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3.2 Сетевая модель данных
- •Ошибка! Ошибка связи.
- •2.3.3 Реляционная модель данных
- •3. Реляционный подход к организации бд
- •3.1 Базовые понятия реляционных баз данных
- •Ошибка! Ошибка связи.
- •3.2 Фундаментальные свойства отношений
- •3.3 Взаимосвязь отношений
- •4. Реляционная алгебра
- •4.1 Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •4.2 Теоретико-множественные операторы
- •4.3 Специальные реляционные операторы
- •4.4 Зависимые реляционные операторы
- •4.5 Примитивные реляционные операторы
- •4.6 Запросы, невыразимые средствами реляционной алгебры
- •4.7 Кросс-таблицы
- •5. Проектирование бд
- •5.1. Цели и этапы проектирования
- •5.2 Уровни моделирования (проектирования) бд
- •5.3 Критерии оценки качества логической модели данных
- •5.4 Нормализация и ее необходимость
- •5.5 Теория нормализации
- •5.6 Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Ошибка! Ошибка связи.
- •6. Элементы языка sql
- •6.1 Типы данных
- •6.2 Операторы dml (определения объектов базы данных)
- •6.2.1 Операторы работы с таблицами
- •6.3 Операторы dml (операторы манипулирования данными)
- •6.3.1 Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •6.3.2 Update - обновление строк в таблице
- •6.3.3 Delete - удаление строк в таблице
- •6.3.4 Выбор данных из таблицы select
- •6.3.4.1 Общий синтаксис команды select
- •6.3.4.2 Примеры работы с использованием оператора select
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •6.3.4.3 Порядок выполнения оператора select
- •6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.4 Объекты и концепции базы данных
- •6.4.1 Таблицы (Tables)
- •6.4.2 Столбцы (Columns)
- •6.4.3 Типы данных (Data types)
- •Тип данных blob
- •6.4.4 Домены (Domains)
- •6.4.5 Справочные ограничения целостности (Referential integrity constraints)
- •6.4.6 Индексы (Indexes)
- •6.4.7 Представления (Views)
- •6.4.8. Хранимые процедуры (Stored procedures)
- •6.4.9 Триггеры (Triggers)
- •6.4.10 Генераторы (Generators)
- •6.4.11 Защита (Security)
- •6.5 Операторы sql для работы с объектами бд
- •6.5.1 Представления
- •6.5.2 Хранимые процедуры
- •6.5.3 Генераторы
- •6.5.4 Триггеры
- •6.5.5 Индексы
- •6.6 Инструкции sql
- •7. Физическая организация и работа субд
- •7.1 Хранение данных
- •Ошибка! Ошибка связи.
6.5.3 Генераторы
Создание
CREATE GENERATOR имя_генератора;
Генератор можно проинициализировать начальным значением. Это бывает нужно тогда, например когда удаляются все записи и таблица наполняется по новому. Значения генератора могут быть в диапазоне от -2^31 до 2^31 - 1.
SET GENERATOR имя_генератора TO число;
Генератор используется совместно с функцией GEN_ID:
GEN_ID (имя_генератора, шаг);
Изменение
Удаление
Примеры
insert into street(id_street, street)
values(gen_id(gnstreetid, 1), 'Куба')
Но в таком виде обычно генераторы не используются. А используются совместно с триггерами.
6.5.4 Триггеры
Создание
CREATE TRIGGER имя_триггера FOR имя_табл
[ACTIVE | INACTIVE]
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE}
[POSITION number]
AS <тело_триггера> terminator
имя_триггера Имя существующего триггера.
ACTIVE Определяет, что действие триггера дает эффект, когда срабатывает (по умолчанию).
INACTIVE Определяет, что действие триггера не дает эффекта.
BEFORE Определяет, что триггер срабатывает перед ассоциированной операцией.
AFTER Определяет, что триггер срабатывает после ассоциированной операцией.
DELETE | INSERT | UPDATE Определяет операцию над таблицей, с которой связывает триггер to fire.
POSITION число Определяет порядок в котором срабатывают триггеры перед или после того же самого действия. число должно быть целым от 0 до 32767. Триггер с меньшим номером срабатывает первым. Триггеры для того же самого действия, с тем же самым позиционным номером, буду fire в случайном порядке.
тало_триггера Тело триггера, блок инструкций на языке процедур и триггеров.
Изменение
ALTER TRIGGER имя_триггера
[ACTIVE | INACTIVE]
[{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
[POSITION number]
[AS <тело_триггера>] [terminator]
Удаление
DROP TRIGGER имя_триггера;
Примеры
SET TERM ^ ;
CREATE TRIGGER "ADDSTREET" FOR "STREET"
ACTIVE BEFORE INSERT POSITION 0
as
begin
street.id_street=gen_id(gnstreetid, 1);
end
^
CREATE TRIGGER "DELSTREET" FOR "STREET"
ACTIVE BEFORE DELETE POSITION 0
as
begin
delete from person
where person.id_street = street.id_street;
end
^
SET TERM ;^
6.5.5 Индексы
Создание
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
INDEX index ON table (col [, col ...]);
UNIQUE Предотвращает вставку или модификацию данных, приводящих к дублированию значений в индексированных столбцах.
ASC[ENDING]/DESC[ENDING] Сортирует столбцы в возрастающем порядке/ в убывающем порядке. По умолчанию – сортирует по возрастанию.
index Уникальное имя для индекса.
table Имя таблицы для которой индекс определен.
col Столбец в индексируемой таблице, собственно для которой и строится индекс.
Важно:
Столбцы типов BLOB и массивы не могут быть индексированы;
UNIQUE индекс не может быть создан на столбце или наборе столбцов, которые уже содержат повторяющиеся или NULL значения.
Изменение
ALTER INDEX name {ACTIVE | INACTIVE};
name Имя существующего индекса.
ACTIVE Включает индекс/выключает индекс
Удаление
Важно: Индексы определенные системой, как UNIQUE, PRIMARY KEY и FORGIN KEY ограничений целостности, не могут быть удалены.
DROP INDEX name;
name Имя существующего индекса
Примеры
В принципе все просто, поэтому их пока нет.