Приложение В.

Формат SQL-операторов (СУБД InterBase)

 

База данных *

Создание базы данных *

Определение типа данных *

Домены *

Создание домена *

Ограничение, накладываемое на значения полей, ассоциированных с доменом *

Изменение определения домена *

Таблицы базы данных *

Определение первичного ключа *

Определение уникального ключа *

Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей *

Ограничения на значения столбца *

Добавление нового столбца в таблицу БД *

Добавление новых ограничений целостности *

Удаление столбца (столбцов) из таблицы БД *

Удаление ограничений целостности *

Удаление таблицы БД целиком *

Индексы *

Создание индекса *

Деактивизация индекса *

Активизация индекса *

Вычисление показателя "полезности" индекса *

Удаление индекса *

Выборка данных из таблиц БД *

Изменение данных *

Добавление записей *

Изменение записей *

Просмотры *

Создание просмотра *

Удаление просмотра *

Хранимые процедуры *

Создание хранимой процедуры *

Обращение к хранимой процедуре (утилита WISQL) *

Тело процедуры *

Изменение хранимой процедуры *

Удаление хранимой процедуры: *

Алгоритмический язык триггеров и хранимых процедур *

Объявление локальных переменных *

Оператор присваивания *

Условный оператор *

Оператор выбора SELECT *

Оператор циклической выборки *

Принудительная выдача выходных параметров (только хранимые процедуры) *

Оператор цикла *

Выход из процедуры, триггера *

Вложенный вызов другой хранимой процедуры *

Инициация наступления события *

Обращение к старому и новому значениям столбца (только триггеры) *

Триггеры *

Создание триггера *

Структура тела триггера *

Изменение существующего триггера *

Удаление триггера *

Генераторы *

Создание генератора *

Установка стартового значения генератора *

Транзакции *

Старт транзакции *

События *

Инициация наступления события *

UDF (Функции, определяемые пользователем) *

Объявление UDF (функций, определяемых пользователем) в базе данных *

Привилегии доступа *

Предоставление привилегий доступа к таблицам БД, просмотрам, вызовам процедур *

Отъем привилегий *

Приложение В.

Формат SQL-операторов (СУБД InterBase)

База данных

Создание базы данных

CREATE {DATABASE | SCHEMA} "<имя_файла>"

[USER "имя_пользователя" [PASSWORD "пароль"]]

[PAGE_SIZE [=] целое]

[LENGTH [=] целое [PAGE[S]]]

[DEFAULT CHARACTER SET набор_символов]

[<вторичный_файл>];

<вторичный файл> = FILE "<имя файла>" [<файлов информ>]

[<вторичный_файл>]

<файлов_информ> = LENGTH [=] целое [PAGE[S]] I STARTING

[AT [PAGE]] целое [<файлов_информ>]

Определение типа данных

<тип_данных> = {

{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}

[<размерность_массива>]

I {DECIMAL | NUMERIC} [(точность [, масштаб])]

[<размерность_массива>]

I DATE [<размерность массива>]

I {CHAR I CHARACTER | CHARACTER VARYING I VARCHAR}

[(целое)] [<размерность_массива>] [CHARACTER SET набор_символов]

I {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}

[VARYING] [(целое)] [<размерность_массива>]

I BLOB [SUB_TYPE {целое | имя_подтипа}] [SEGMENT SIZE целое]

[CHARACTER SET набор_символов]

I BLOB [(длина_сегмента [, подтип])]}

Домены

Создание домена

CREATE DOMAIN домен [AS] <тип_данных>

[DEFAULT {литерал] NULL | USER}]

[NOT NULL] [CHECK (<усл_поиска_домена>)]

[COLLATE collation];

Ограничение, накладываемое на значения полей, ассоциированных с доменом

<огранич_домена> = {

VALUE <оператор> <значение>

VALUE [NOT] BETWEEN <значение1> AND <значение2>

VALUE [NOT] LIKE <значение> [ESCAPE <значение>]

VALUE [NOT] IN (<значение1> [, <значение2> ...])

VALUE IS [NOT] NULL

VALUE [NOT] CONTAINING <значение>

VALUE [NOT] STARTING [WITH] <значение>

(<огранич_домена>)

NOT <огранич_домена>

<огранич_домена> OR <огранич_домена>

<огранич домена> AND <огранич домена>

}

где <оператор> = {= | < | > | <= | >= [ !< | !> | о | !=}

Изменение определения домена

ALTER DOMAIN имя {

[SET DEFAULT {литерал! NULL | USER}]

I [DROP DEFAULT]

I [ADD [CONSTRAINT] CHECK (<огранич_домена>)]

I [DROP CONSTRAINT]

};

Таблицы базы данных

Создание таблицы базы данных

CREATE TABLE ИмяТаблицы [EXTERNAL [FILE] "<имя файла>"]

(<опр_столбца> [, <опр столбца> I <ограничение> ...]);

<опр_столбца> = опр_столбца{тип_данных | COMPUTED [BY] (<выражение>) | домен}

[DEFAULT {литерал! NULL I USER}]

[NOT NULL] [<огранич_столбца>]

[COLLATE collation]

Определение первичного ключа

PRIMARY KEY (список_столбцов)

Определение уникального ключа

UNIQUE(список_столбцов)

Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей

[CONSTRAINT <имя ссылочной целостности>]

FOREIGN KEY (<список столбцов внешнего ключа>)

REFERENCES <имя родительской таблицы> [<список столбцов

родительской таблицы>]

Ограничения на значения столбца

CHECK (<условия_поиска>)

<условия поиска> =

{<значение> <оператор> {<значение1> | (<выбор_одного>)}

I <значение> [NOT] BETWEEN <значение1> AND <значение2>

<значение> [NOT] LIKE <значение> [ESCAPE <значение>]

| <значение> [NOT] IN (<значение1> [, <значение2> ...]

I <выбор_многих>)

I <значение> IS [NOT] NULL

| <значение> {[NOT] {= I < I >} >= | <=}

{ALL | SOME | ANY} (<выбор_многих>)

EXISTS (<выражение_выбора>)

SINGULAR (<выражение_выбора>)

<значение> [NOT] CONTAINING <значение1>

| <значение> [NOT] STARTING [WITH] <значение1>

I (<условия_поиска>)

I NOT <условия_поиска>

I <условия_поиска> OR <условия_поиска>

<условия_поиска> AND <условия_поиска>}

<значение> = {столбец | <константа> | <выражение> | <функция>

I NULL | USER I RDB$DB_KEY

} [COLLATE collation]

<константа> = число | "строка"

<функция> = {

COUNT (* I [ALL] <значение> I DISTINCT <значение>)

SUM ([ALL] <значение> | DISTINCT <значение>)

AVG ([ALL] <значение> | DISTINCT <значение>)

МАХ ([ALL] <значение> | DISTINCT <значение>)

MIN ([ALL] <значение> | DISTINCT <значение>)

CAST (<значение> AS <тип_данных>)

UPPER (<значение>)

GEN_ID (генератор, <значение>)

}

<оператор> = {= | < | > | <= ( >= | !< f !> | <> | !=}

<выбор_ одного = оператор SELECT, возвращающий одно значение или ни одного.

<выбор многих> = оператор SELECT, который может возвращать более одного значения (список значений) или ни одного. <выражение_выбора> = оператор SELECT , который может возвращать более одного значения (список значений) или ни одного.

Добавление нового столбца в таблицу БД

ALTER TABLE <имя таблицы> ADD Определения столбца>;

Добавление новых ограничений целостности

ALTER TABLE <имя таблицы> ADD [CONSTRAINT <имя ограничения>] Определения целостности>;

Удаление столбца (столбцов) из таблицы БД

ALTER TABLE <имя таблицы> DROP <имя столбца1>[,<имя столбца2>...];

Удаление ограничений целостности

ALTER TABLE <имя таблицы> DROP <имя ограничения целостности^-

Удаление таблицы БД целиком

DROP TABLE <имя таблицы>;

Индексы

Создание индекса

CREATE [UNIQUE] [ASC[ENDING] I DESC[ENDING]] INDEX ИмяИндекса ON ИмяТаблицы (столбец! [,столбец2 ...]);

Деактивизация индекса

ALTER INDEX <имя индекса> DEACTIVATE;

Активизация индекса

ALTER INDEX <имя индекса> DEACTIVATE;

Вычисление показателя "полезности" индекса

SET STATISTICS INDEX <имя индекса>;

Удаление индекса

DROP INDEX <имя индекса>;

Выборка данных из таблиц БД

SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2> ...]}

FROM <таблица1> [, < таблица2> ...]

[WHERE <условия_поиска>]

[GROUP BY столбец [COLLATE collation]

[,столбец1 [COLLATE collation] ...]

[HAVING < условия поиска >]

[UNION <оператор select>]

[PLAN <план выполнения запроса>]

[ORDER BY <список_столбцов>]

Изменение данных

Добавление записей

INSERT INTO <объект> [(столбец! [, столбец2 ...])]

{VALUES (<значение1> [, <значение2> ...]) I <оператор SELECT> }

Изменение записей

UPDATE <объект>

SET столбец! = <значение1> [,столбец2 = <значение2>...]

[WHERE <условие поиска >]

Удаление записей

DELETE FROM <объект>

[WHERE <условие поиска>];

Просмотры

Создание просмотра

CREATE VIEW ИмяПросмотра [(cTon6eu_viewl [,столбец view ...])]

AS <oneparop_select> [WITH CHECK OPTION];

Удаление просмотра

DROP VIEW ИмяПросмотра;

Хранимые процедуры

Создание хранимой процедуры

CREATE PROCEDURE ИмяПроцедуры

[ (входной_парамэтр тип__данньк [, входной_парам5тр тип_данных... ]) ]

[RETURNS

(входной_параметр тип__данных [, входной_параметр тип_данньк ...])]

AS

<тело процедуры>;

Обращение к хранимой процедуре (утилита WISQL)

EXECUTE PROCEDURE имя [параметр [, параметр ...]];

Тело процедуры

[<объявление локальных переменных процедуры>] BEGIN

<оператор>

[<оператор> ...]

END

Изменение хранимой процедуры

ALTER PROCEDURE ИмяПроцедуры

[ (входной_параметр тип_данных [, входной параметр тип данных...])]

[RETURNS

(входной параметр тип данных [,входной параметр тип данных ...])]

AS

<тело процедуры>;

Удаление хранимой процедуры:

DROP PROCEDURE ИмяПроцедуры;

Алгоритмический язык триггеров и хранимых процедур

Объявление локальных переменных

DECLARE VARIABLE <имя переменной > <тип данных>;

Оператор присваивания

Имя переменной = выражение;

Условный оператор

IF (<условие>) THEN <оператор 1>

[ELSE <оператор 2>]

Оператор выбора SELECT

Стандартный оператор SELECT InterBase, расширенный за счет предложения INTO

SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2> ...]}

FROM <таблица1> [, < таблица2> ...]

[WHERE <условия поиска>]

[GROUP BY столбец [COLLATE collation]

[,столбец! [COLLATE collation] ...]

[HAVING < условия_поиска >]

[UNION <onepaTop_select>]

[PLAN <план_ выполнения_запроса>]

[ORDER BY <список_столбцов>]

INTO :переменная [, переменная...]

Оператор циклической выборки

FOR

<оператор SELECT>

DO

<составной оператор>;

Принудительная выдача выходных параметров (только хранимые процедуры)

SUSPEND;

Оператор цикла

WHILE (<условие>) DO

<оператор>

Выход из процедуры, триггера

EXIT;

Вложенный вызов другой хранимой процедуры

EXECUTE PROCEDURE имя [параметр [, параметр ...]];

[RETURNING_VALUES параметр [, параметр ...]];

Инициация наступления события

POST EVENT "Имя события";

Обращение к старому и новому значениям столбца (только триггеры)

OLD.ИмяСтолбца

NEW.ИмяСтолбца

Триггеры

Создание триггера

CREATE TRIGGER ИмяТриггера FOR ИмяТаблицы

[ACTIVE I INACTIVE]

{BEFORE | AFTER}

{DELETE | INSERT | UPDATE}

[POSITION номер]

AS <тело триггера>

Структура тела триггера

[<объявление локальных переменных процедуры>]

BEGIN

<оператор>

[<оператор> ...]

END

Изменение существующего триггера

ALTER TRIGGER ИмяТриггера FOR ИмяТаблицы

[ACTIVE I INACTIVE]

{BEFORE | AFTER}

{DELETE INSERT | UPDATE}

[POSITION номер]

AS <тело триггера>

Удаление триггера

DROP TRIGGER ИмяТриггера;

Генераторы

Создание генератора

CREATE GENERATOR ИмяГенератора;

Установка стартового значения генератора

SET GENERATOR ИмяГенератора ТО СтартовоеЗначение;

Транзакции

Старт транзакции

SET TRANSACTION [READ WRITE | READ ONLY]

[WAIT | NO WAIT]

[[ ISOLATION LEVEL] {SNAPSHOT [TABLE STABILITY]

I READ COMMITTED [[NO] RECORD_VERSION]}]

[RESERVING < список_таблиц > [FOR [SHARED | PROTECTED] [READ

WRITE] ], [< список таблиц > . .. ];

События

Инициация наступления события

POST_EVENT "Имя события";

UDF (Функции, определяемые пользователем)

Объявление UDF (функций, определяемых пользователем) в базе данных

DECLARE EXTERNAL FUNCTION ИмяФункции

[<Тип данных> | CSTRING (число) [, <Тип данньк> | CSTRING (число) ...]]

RETURNS {< Тип данных > [BY VALUE] | CSTRING (число)}

ENTRY_POINT "<Имя функции в DLL>"

MODULE_NAME "< Имя DLL >";

Привилегии доступа

Предоставление привилегий доступа к таблицам БД, просмотрам, вызовам процедур

GRANT{

{ALL [PRIVILEGES] | SELECT DELETE | INSERT I UPDATE [(столбец [,столбец ...])]}

ON [TABLE] {ИмяТаблицы | ИмяПросмотра}

TO {<объект> | <список_пользователей>}

I EXECUTE ON PROCEDURE procname

TO {<объект > | < список_пользователей>}

};

<объект > = PROCEDURE ИмяПроцедуры | TRIGGER ИмяТриггера |

VIEW ИмяПросмотра | [USER] ИмяПользователя | PUBLIC [, <объект>]

< список_пользователей > = [USER] ИмяПользователя[, [USER]

ИмяПользователя...] [WITH GRANT OPTION]

Отъем привилегий

REVOKE [GRANT OPTION FOR]{

{ALL [PRIVILEGES] | SELECT | DELETE | INSERT

I UPDATE [(столбец [.столбец ...])]}

ON [TABLE] {ИмяТаблицы | ИмяПросмотра}

FROM {<объект> | <список пользователей>}

I EXECUTE ON PROCEDURE ИмяПроцедуры

FROM {<объект> | < список пользователей >}

};