Please enable JavaScript.
Coggle requires JavaScript to display documents.
Домены, триггеры, процедуры (Типы данных (Целочисленные данные
INTEGER,…
Домены, триггеры, процедуры
- Домен - это один из обьектов реляционной БД, при создании которого можно задать некоторые характеристики, а затем использовать ссылку на домен при определении столбцов таблиц. Один и тот же домен может использоваться в определении любого кол-ва столбцов в таблицах БД.
Важнейшей хар-кой домена является тип данных. Он определяет множество допустимых значений столбца и множество допустимых операций.
CREATE DOMAIN <name_domain> [AS] <data_type>
[DEFAULT { <литерал> | NULL | USER } ]
[NOT NULL]
[CHECK ( <условие домена> ) ]
[COLLATE <порядок сортировки>]
Типы данных
- Целочисленные данные
INTEGER, SMALLINT, BIGINT (DECIMAL)
INTEGER - занимает 4 байта (32бита) диапазон от -2 147 483 648 до 2 147 483 647
SMALLINT - занимает 2 байта (16 бит), диапазон от -32 768 до 32 767
BIGINT - занимает 8 байт (64 бита)
Целочисленные типы данных используются для хранения значений искусственных первичных ключей.
- Дробные числа с фиксированной точкой
NUMERIC, DECIMAL
- Числа с плавающей точкой
FLOAT - 4 байта (32 бита). Позволяет хранить до 7 значащих цифр.
DOUBLE FLOAT - 8 байт (64 бита)
- Типы данных даты и времени
DATE, TIME, TIMESTAMP
DATE - занимает 4 байта
'dd.mm.yyyy'
'mm-dd-yyyy'
'mm/dd/yyyy'
'yyyy-mm-dd'
'yyyy/mm/dd'
'yyyy.mm.dd'
'dd-MON-yyyy'
TIME - 4 байта, время в диапазоне от 00:00:00.0000 до 23:59::59.9999
'hh:mm:ss.nnnn'
TIMESTAMP - занимает 8 байт и позволяет хранить одновременно и дату и время.
'dd.mm.yyyy hh:mm:ss.nnnn'
- BLOB (Binary Large OBject) - его называют большим двоичным обьектом. Позволяет хранить любые данные - форматированные тексты, графику, звуки, видео.
- BOOLEAN - логический тип, занимате 2 байта
-
Если удаляется соответствующая строка родительской таблицы, можно указать один из следующих вариантов действий (все эти изменения в дочерних табл. выполняются с помощью системных триггеров, которые автоматически создаются сервером БД по результатам создания табл. с подобными внешними ключами):
- NO ACTION - ничего не происходит (по умолч)
- CASCADE - все строки дочерней табл., содержащие внешние ключи, имеющие те же значения, что и первичный (уникальный) ключ удаленной строки родительской табл, будут автоматически удалены из БД.
- SET DEFAULT - значения столбцов внешнего ключа в соответствующих строках дочерней табл. устанавливаются в заданные для них значения по умолчанию.
- SET NULL - значения столбцов внешнего ключа в соответствующих строках дочерней табл. устанавливаются в NULL.
- Все действия, выполняемые с БД - любые изменения, как данных, так и метаданных, а также любая выборка данных - осуществляются в контексте (под управлением) какой либо транзакции
-
- Для написания хранимых процедур и триггеров используется расширение языка SQL, язык хранимых процедур и триггеров. Они являются программами. Они хранятся в области метаданных БД в системных таблицах и выполняются на стороне сервера, что может сократить сетевой трафик и нагрузку сети.
- При создании как процедур, так и триггеров, в синтаксисе выделяются заголовок и тело. Тело является блоком операторов.
- Переменными являются локальные переменные, которые могут быть описаны и в триггерах и в процедурах, а также входные и выходные параметры, используемые только в хранимых процедурах. При описании типа переменной можно использовать любой тип (кроме BLOB) и нельзя использовать имена доменов для задания типа. Описываются в заголовке триггера или процедуры.
DECLARE VARIABLE <имя локал. перемен.> <тип данных>;
Триггер
Это программный обьект БД, который хранится в области метаданных. Выполняется на стороне сервера. Для поддержания ограничений CHECK and FOREIGN KEY система автоматически создает триггеры.
Напрямую к нему обратиться невозможно, он вызывается автоматически при наступлении соответствующего события.
Момент вызова триггера задается двумя элементами: событие БД и фаза события - до наступления события или после.
Получается 6ь вариантов вызова триггеров:
- перед добавлением новой строки (BEFORE INSERT);
- сразу после добавления новой строки (AFTER INSERT);
- перед изменением строки (BEFORE UPDATE);
- после изменения строки (AFTER UPDATE);
- перед удалением строки (BEFORE DELETE);
- после удаления строки (AFTER DELETE);
Хранимые процедуры
Могут вызываться из клиентских приложений, из триггеров и из хранимых процедур тоже. Выполняются на стороне сервера в контексте транзакции, в которой выполняется вызвавший их программный компонент. В отличии от триггеров, в процедурах нельзя использовать контекстные переменные NEW и OLD.
Могут получать вх. параметры и возвращать выходные значения.
Выполняемые хранимые процедуры (executed procedures) - могут получать вх. параметры и выполняют какие-то действия с данными БД или с любыми другими данными.
Вызов осуществляется оператором EXECUTE PROCEDURE. Эти процедуры могут возвращать выходные значения вызвавшему программному компоненту
Хранимые процедуры выбора(selected procedures) - могут получать входные параметры. Основное значение таких процедур - чтение строк из таблицы (группы таблиц) или из представления.
Хранимая процедура выбора обязательно возвращает выходные значения вызвавшей программе.
Обращение к такой процедуре осуществляется при использовании оператора SELECT, в предложении FROM которого указывается не таблица или представление, а имя хранимой процедуры выбора и при необходимости, список входных параметров.