
CREATE DATABASE
Создает базу данных в одном или нескольких файлах. Обычно делают в одном для удобства работы.
CREATE {DATABASE | SCHEMA} "<filespec>"
[USER "username" [PASSWORD "password"]]
[PAGE_SIZE [=] int]
[LENGTH [=] int [PAGE[S]]]
[DEFAULT CHARACTER SET charset]
[<secondary_file>];
<secondary_file> = FILE "<filespec>" [<fileinfo>] [<secondary_file>]
<fileinfo> = LENGTH [=] int [PAGE[S]] | STARTING [AT [PAGE]] int [<fileinfo>]
“<filespec>” |
Полный путь к файлу новой базы данных (файл создается при создании базы данных) |
USER “username” |
Имя пользователя на сервере, где расположена база данных. Значение по-умолчанию SYSDBA |
PASSWORD ‘password’ |
Пароль пользователя на сервере, где расположена база данных. Значение по-умолчанию masterkey. |
DEFAULT CHARACTER SET charset |
Устанавливает кодировку строковых данных, используемую в базе данных по-умолчанию. Русские буквы поддерживаются кодировкой WIN1251. |
Примеры
Следующая инструкция создает базу данных в текущем каталоге:
CREATE DATABASE "employee.gdb";
Следующая инструкция создает базу данных с размером страницы 2048 байт, вместо 1024 по умолчанию:
CREATE DATABASE "employee.gdb" PAGE_SIZE 2048;
Следующая инструкция создает базу данных, которая расположена в двух файлах, и определяет ее кодировку по умолчанию:
CREATE DATABASE "employee.gdb"
DEFAULT CHARACTER SET "ISO8859_1"
FILE "employee.gd1" STARTING AT PAGE 10001 LENGTH 10000 PAGES;
CREATE DOMAIN
Создает в базе данных домен, для определения ограничения целостности при объявлении полей таблиц.
CREATE DOMAIN domain [AS] <datatype>
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [CHECK (<dom_search_condition>)]
[COLLATE collation];
<datatype> =
{SMALLINT|INTEGER|FLOAT|DOUBLE PRECISION}[<array_dim>]
| {DATE|TIME|TIMESTAMP}[<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)]
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int]
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
<array_dim> = [[x:]y [, [x:]y …]]
<dom_search_condition> = {
VALUE <operator> value
| VALUE [NOT] BETWEEN value AND value
| VALUE [NOT] LIKE value [ESCAPE value]
| VALUE [NOT] IN (value [, value …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING value
| VALUE [NOT] STARTING [WITH] value
| (<dom_search_condition>)
| NOT <dom_search_condition>
| <dom_search_condition> OR <dom_search_condition>
| <dom_search_condition> AND <dom_search_condition>
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
domain |
Новое уникальное имя создаваемого домена. |
datatype |
Тип данных SQL, на котором строится домен |
DEFAULT
Literal NULL USER |
Указывает значение по-умолчанию, которое используется если не указано ничего другого. Задается конкретное строковое, числовое или значение типа дата. Значением по-умолчанию будет NULL Значением по-умолчанию будет имя текущего пользователя |
NOT NULL |
Определяет что значение колонки не может быть пустым |
CHECK (<dom_search_condition>) |
Задает условие на значения домена. |
VALUE |
Переменная, указывающая на значение, для использования в условиях CHECK |
Примеры
Следующая инструкция создает домен, который может принимать положительные значения больше 1000, со значением по умолчанию 9999. Ключевое слово VALUE заменяется именем столбца основанном на этом домене.
CREATE DOMAIN CUSTNO
AS INTEGER
DEFAULT 9999
CHECK (VALUE > 1000);
Следующая инструкция ограничивает введенные значения в домен до четырех определенных значений:
CREATE DOMAIN PRODTYPE
AS VARCHAR(12)
CHECK (VALUE IN ("software", "hardware", "other", "N/A"));
Следующая инструкция создает домен, который определяется, как массив символов (CHARACTER):
CREATE DOMAIN DEPTARRAY AS CHAR(31) [4:5];
В следующем примере, первая инструкция создает домен со значением по умолчанию USER. Следующая инструкция создает таблицу, которая включает столбец ENTERED_BY, базирующийся на домене USERNAME. Инструкция INSERT не содержит значение для столбца ENTERED_BY, по этому InterBase автоматически вставляет имя текущего пользователя JSMITH:
CREATE DOMAIN USERNAME AS VARCHAR(20)
DEFAULT USER;
CREATE TABLE ORDERS (ORDER_DATE DATE, ENTERED_BY USERNAME, ORDER_AMT DECIMAL(8,2));
INSERT INTO ORDERS (ORDER_DATE, ORDER_AMT)
VALUES ("1-MAY-93", 512.36);
SELECT * FROM ORDERS;
1-MAY-93 JSMITH 512.36
CREATE TABLE
Синтаксис
CREATE TABLE table [EXTERNAL [FILE] ’filespec’]
(<col_def> [, <col_def> | <tconstraint> …]);
<col_def> = col {<datatype> | COMPUTED [BY] (<expr>) | domain}
[DEFAULT {literal | NULL | USER}]
[NOT NULL]
[<col_constraint>]
[COLLATE collation]
<datatype> =
{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}[<array_dim>]
| (DATE | TIME | TIMESTAMP}[<array_dim>]
| {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)]
[<array_dim>] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]
| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int]
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]<array_dim> = [[x:]y [, [x:]y …]]
<expr> = Выражение на языке SQL, которое возвращает единственное значение.
<col_constraint> = [CONSTRAINT constraint]
{ UNIQUE
| PRIMARY KEY
| REFERENCES other_table [(other_col [, other_col …])]
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK (<search_condition>)}
<tconstraint> = [CONSTRAINT constraint]
{{PRIMARY KEY | UNIQUE} (col [, col …])
| FOREIGN KEY (col [, col …]) REFERENCES other_table
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK (<search_condition>)}
<search_condition> = <val> <operator> {<val> | (<select_one>)}
| <val> [NOT] BETWEEN <val> AND <val>
| <val> [NOT] LIKE <val> [ESCAPE <val>]
| <val> [NOT] IN (<val> [, <val> …] | <select_list>)
| <val> IS [NOT] NULL
| <val> {>= | <=}
| <val> [NOT] {= | < | >}
| {ALL | SOME | ANY} (<select_list>)
| EXISTS (<select_expr>)
| SINGULAR (<select_expr>)
| <val> [NOT] CONTAINING <val>
| <val> [NOT] STARTING [WITH] <val>
| (<search_condition>)
| NOT <search_condition>
| <search_condition> OR <search_condition>
| <search_condition> AND <search_condition>
<val> = { col [<array_dim>] | :variable
| <constant> | <expr> | <function>
| udf ([<val> [, <val> …]])
| NULL | USER | RDB$DB_KEY | ? }
[COLLATE collation]
<constant> = num | 'string' | charsetname 'string'
<function> = COUNT (* | [ALL] <val> | DISTINCT <val>)
| SUM ([ALL] <val> | DISTINCT <val>)
| AVG ([ALL] <val> | DISTINCT <val>)
| MAX ([ALL] <val> | DISTINCT <val>)
| MIN ([ALL] <val> | DISTINCT <val>)
| CAST (<val> AS <datatype>)
| UPPER (<val>)
| GEN_ID (generator, <val>)
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
<select_one> = SELECT одной колонки; возвращает в точности одно значение.
<select_list> = SELECT одной колонки; возвращает 0 или более значений.
<select_expr> = SELECT списка значений; возвращает 0 или более значений.
table |
Новое уникальное имя создаваемой таблицы. |
col |
Имя колонки (поля). Должно быть уникальным в пределах таблицы. |
datatype |
Тип значений в колонке таблицы |
Computed [by] (expr) |
Определяет что значение колонки вычисляется с помощью выражения (expr) во время выполнения запросов |
domain |
Имя существующего домена |
DEFAULT |
Указывает значение по-умолчанию, для колонки |