Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sql.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
166.4 Кб
Скачать

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

Указывает значение по-умолчанию, для колонки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]