Формат SQL-операторов (СУБД InterBase)
База данных *
Приложение В.
Формат 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;Вычисление показателя "полезности" индекса
имя индекса>;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, расширенный за счет предложения INTOSELECT [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<оператор>
Вложенный вызов другой хранимой процедуры
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] [READWRITE
] ], [< список таблиц > . .. ];POST_EVENT "
Имя события"; (Функции, определяемые пользователем)Объявление 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
{<объект> | < список пользователей >}};