double arrow

Примеры. (COUNTRY COUNTRYNAME NOT NULL PRIMARY KEY,

  • Следующая инструкция создает одиночную таблицу с 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 < MAX_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);

Ключевое слово STORAGE (В InterBase НЕ действует!)

В определенных формах ключевое слово STORAGE поддерживается большинством реализаций SQL. С помощью ключевого слова STORAGE в операторе CREATE TABLE можно задать исходные размеры таблицы и, как правило, при создании таблицы оно используется. Вот пример использования ключевого слова STORAGE в одной из реализаций SQL:

CREATE TABLE EMPLOYEE_TBL (

EMP_ID CHAR(9) NOT NULL,

EMP_NAME VARCHAR(40) NOT NULL,

EMP_ST_ADDR VARCHAR(20) NOT NULL,

EMP_CITY VARCHAR(20) NOT NULL,

EMP_ST CHAR(2) NOT NULL,

EMP_ZIP NUMBER(5) NOT NULL,

EMP_PHONE NUMBER(10) NULL,

EMP_PAGER NUMBER(10) NULL)

STORAGE (INITIAL 3K NEXT 2К);

В некоторых реализациях ключевое слово STORAGE может иметь несколько опций. С помощью INITIAL выделяется объем памяти в байтах, килобайтах и т. д., который должна изначально занять таблица. NEXT задает приращение объема памяти, которая должна быть выделена таблице, если таблица вырастет настолько, что выйдет за пределы изначально выделенного ей объема. Вы обнаружите и другие опции ключевого слова STORAGE и имейте в виду, что эти опции варьируют от реализации к реализации. Если ключевое слово STORAGE пропущено, то в большинстве реализаций SQL используются значения по умолчанию, что обычно оказывается не очень хорошим решением для приложений.

Обратите внимание на полученный с помощью отступов аккуратный вид приведенного выше примера использования оператора CREATE TABLE. Это облегчает чтение и отладку программ.

Ключевое слово STORAGE в различных реализациях SQL используется по-разному. Предыдущий пример использования STORAGE взят из Oracle, где оно добавляется к оператору CREATE TABLE. He забывайте, что стандарт ANSI для SQL является всего лишь стандартом и не более. Стандарт непосредственно языком не является, а обеспечивает производителям рекомендации, касающиеся разработки их реализаций SQL. Вы обнаружите, что и типы данных тоже зависят от реализации. Во многих отношениях зависят от реализации и подходы к хранению и обработке данных. (В InterBase НЕ действует!)


Сейчас читают про: