- Следующая инструкция создает одиночную таблицу с 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 НЕ действует!)