Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама
Заказать измерение микроклимата в помещении в Москве.

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CREATE TABLE

Описание

CREATE TABLE устанавливает новую таблицу, ее столбцы и ограничения целостности в существующей базе данных. Пользователь, который создает таблицу, становится владельцем таблицы и получает полные привилегии для этого, включая возможность предоставления (GRANT) привилегий другим пользователям, триггерам, и сохраненным процедурам.

CREATE TABLE поддерживает несколько опций для определения столбцов:

  • Локальные столбцы определяющие имя и тип данных для данных введенных в столбец.
  • Вычисляемые столбцы, базирующиеся на расширении. Значение столбца вычисляется каждый раз при доступе к таблице. Если тип данных не определен, InterBase вычисляет как соответствующий. Столбцы, к которым обращается выражение, должны существовать раньше, чем столбец может быть определен.
  • Основанные на доменах столбцы, наследуемые все характеристики домена, но определение столбца может включать новое значение по умолчанию, атрибут NOT NULL, дополнительные ограничения CHECK или переопределять порядок сортировки, которые отменяют определение домена.
  • Описание типа данных для столбца типа CHAR, VARCHAR или BLOB-техт может включать предложение CHARACTER SET определяя специфическую кодировку для одиночного столбца. Иначе столбец использует определенную по умолчанию для базы данных кодировку. Если кодировка базы данных изменена, все столбцы впоследствии определенные имеют новую кодировку, но существующие столбцы не изменяются.

Предложение COLLATE позволяет указать специфический порядок сортировки для типов данных CHAR, VARCAHR и BLOB-текст. Выбор порядка сортировки ограничен теми которые поддерживаются для данной кодировки столбца, это или кодировка по умолчанию для базы данных в целом или другая установленная в предложении CHARACTER SET как часть определения типа данных. Смотри Language Reference, чтобы получить полный список возможных сортировок.

Атрибут NOT NULL предотвращает ввод NULL или неизвестного значения в столбец. Атрибут NOT NULL проявляется во всех INSERT и UPDATE операциях над столбцом.

Ограничения целостности могут быть определены для таблицы, когда она создана. Ограничения целостности это правила, которые контролируют базу данных и ее компоненты, связи типа столбец-таблица и таблица-таблица, и проверку вводимых данных. Они охватывают все транзакции к базе данных и автоматически поддерживаются системой. CREATE TABLE может создавать следующие типы ограничений целостности:

  • PRIMARY KEY (первичный ключ) - уникально идентифицирует каждую строку таблицы. Значение в этом столбце либо в упорядоченном наборе столбцов не могут повторятся в более чем одной строке. Столбец PRIMARY KEY должен быть определен только с атрибутом NOT NULL. Таблица может иметь только один PRIMARY KEY, который может быть определен на одном или более столбцов.
  • UNIQUE (уникальные) ключи гарантируют, что не существует двух строк имеющих одно и тоже значение в специфическом столбце или упорядоченном наборе столбцов. Уникальный столбец должен быть определен с атрибутом NOT NULL. Таблица может иметь один или более UNIQUE ключей. UNIQUE ключ может быть использован FOREIGN KEY (внешний ключ) в другой таблице.
  • Справочные ограничения гарантируют, что значения в наборе столбцов, которые определены в FOREIGN KEY принимают те же самые значения, которые присутствуют в столбце UNIQUE или PRIMARY KEY в справочной таблице.
  • CHECK ограничения предписывают <search_condition>, которые должны принимать значение истинно для добавленных или измененных данных. <search_condition> могут требовать некоторой комбинации или порядка значений или равенства значению, введенному в другие столбцы.

Для не именованных ограничений, система создает уникальное имя сохраненное в системной таблице RDB$RELATION_CONSTRAINTS.

Обратите внимание: Ограничения не допустимы на выражениях.

Оция EXTERNA FILE создает таблицу, чьи данные постоянно расположены во внешней таблице или файле, а не в базе данных InteBase. Используйте эту опций для:

  • Определения таблицы InterBase, состоящей из столбцов и данных из внешних источников, таких как данные в файлах управляемых другой операционной системой или приложениями, не являющимися базами данных.
  • Передачи данных в существующую таблицу InterBase из внешнего файла.

Синтаксис

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]

Обратите внимание: Предложение COLLATE не может быть определено для столбцов BLOB.

<datatype> = {
{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} [<array_dim>]
  | {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
  | DATE [<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] <constraint_def>
[<col_constraint>]

<constraint_def> = {UNIQUE | PRIMARY KEY
| CHECK (<search_condition>)
  | REFERENCES other_table [(other_col [, other_col ...])]}

<tconstraint> = CONSTRAINT constraint <tconstraint_def>
[<tconstraint>]

<tconstraint_def> = {{PRIMARY KEY | UNIQUE} (col [, col ...])
| FOREIGN KEY (col [, col ...]) REFERENCES other_table
  | 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> {[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>] | <constant> | <expr> | <function>
   | 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 на одном столбце, который возвращает ноль или более значений.

<select_expr> = SELECT на списке значений, который возвращает ноль или более значений.
valign="top">
Аргумент Описание
table Имя для таблицы. Имя таблицы должно быть уникальным среди имен таблиц и процедур в базе данных.
EXTERNAL [FILE] "<filespec>" Объявляет что данные для создаваемой таблицы, постоянно располагаются во внешней к базе данных таблице или файле.
col Имя для столбца таблицы, должно быть уникальным именем в таблице.
<datatype> SQL тип данных столбца.
COMPUTED [BY] (<expr>) Базирует определение столбца на выражении. Выражение должно возвращать одиночное значение, и не иметь тип массива или возвращать массив.
<expr> - любое арифметическое выражение допустимое для типа типа данных столбца.
domain Имя существующего домена.
COLLATE collation Определяет порядок сортировки для столбца. Порядок сортировки на уровне столбца отменяет порядок сортировки определенный на уроне домена
DEFAULT Определяет значение по умолчанию столбца, которое вводится когда не сделано ни каких других вводов. Значения:
  • literal: Вставляется специфическая строка, числовое значение или дата.
  • NULL: Вводится значение NULL.
  • USER: Вводится имя текущего пользователя. Столбец должен быть совместимого текстового типа, для использования значения по умолчанию.
Установка значению по умолчанию на уровне столбца отменяет значение по умолчанию на уровне домена
CONSTRAINT constraint Помещает именованное ограничение на таблицу или столбец. Ограничение это правило применяемое к структуре или контексту таблицы. Если это предложение опущено, InterBase создает системное имя для ограничения.

Примеры

Следующая инструкция создает одиночную таблицу с PRIMARY KEY:

CREATE TABLE COUNTRY
  (COUNTRY COUNTRYNAME NOT NULL PRIMARY KEY,
  CURRENCY VARCHAR(10) NOT NULL);

Следующая инструкция создает таблицу с UNIQUE ограничением и на уровне столбца и на уровне таблицы:

CREATE TABLE STOCK
  (MODEL SMALLINT NOT NULL UNIQUE,
  MODELNAME CHAR(10) NOT NULL,
  ITEMID INTEGER NOT NULL,
  CONSTRAINT MOD_UNIQUE UNIQUE (MODELNAME, ITEMID));

Следующая инструкция иллюстрирует PRIMARY KEY, FOREGEN KEY и CHECK ограничения на уровне таблицы. Ограничение PRYMARY KEY базируется на трех столбцах. Этот пример так же иллюстрирует создание столбца типа массив VARCHAR.

CREATE TABLE JOB
  (JOB_CODE JOBCODE NOT NULL,
  JOB_GRADE JOBGRADE NOT NULL,
  JOB_COUNTRY COUNTRYNAME NOT NULL,
  JOB_TITLE VARCHAR(25) NOT NULL,
  MIN_SALARY SALARY NOT NULL,
  MAX_SALARY SALARY NOT NULL,
  JOB_REQUIREMENT BLOB(400,1),
  LANGUAGE_REQ VARCHAR(15) [5],
  PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY),
  FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY),
  CHECK (MIN_SALARY 

Следующая инструкция создает таблицу с вычисляемым столбцом:

CREATE TABLE SALARY_HISTORY
  (EMP_NO EMPNO NOT NULL,
  CHANGE_DATE DATE DEFAULT "NOW" NOT NULL,
  UPDATER_ID VARCHAR(20) NOT NULL,
  OLD_SALARY SALARY NOT NULL,
  PERCENT_CHANGE DOUBLE PRECISION
    DEFAULT 0
    NOT NULL
    CHECK (PERCENT_CHANGE BETWEEN -50 AND 50),
  NEW_SALARY COMPUTED BY
    (OLD_SALARY + OLD_SALARY * PERCENT_CHANGE / 100),
  PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),
  FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO));

В следующей инструкции первый столбец сохраняет тип сортировки установленный по умолчанию для базы данных. Второй столбец имеет отличный тип сортировки, а определение третьего столбца включает, и кодировку и порядок сортировки.

CREATE TABLE BOOKADVANCE
  (BOOKNO CHAR(6),
  TITLE CHAR(50) COLLATE ISO8859_1,
  EUROPUB CHAR(50) CHARACTER SET ISO8859_1 COLLATE FR_FR);

Смотри так же:

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог