Разработка баз данных в Delphi. 11 Уроков


         

 Создание таблиц с помощью SQL - часть 3


<select_one> = выражение SELECT по одному полю, которое возвращает в точности одно значение.

  

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

Пример A: Простая таблица с конструкцией PRIMARY KEY на уровне поля

CREATE TABLE REGION (

   REGION        REGION_NAME NOT NULL PRIMARY KEY,

   POPULATION    INTEGER NOT NULL);

Предполагается, что в базе данных определен домен REGION_NAME, например, следующим образом:

CREATE DOMAIN REGION_NAME

   AS VARCHAR(40) CHARACTER SET WIN1251 COLLATE PXW_CYRL;

Пример B: Таблица с предложением UNIQUE как на уровне поля, так и на уровне таблицы

CREATE TABLE GOODS (

   MODEL     SMALLINT NOT NULL UNIQUE,

   NAME      CHAR(10) NOT NULL,

   ITEMID    INTEGER NOT NULL, CONSTRAINT MOD_UNIQUE

UNIQUE (NAME, ITEMID));

Пример C: Таблица с определением первичного ключа, внешнего ключа и конструкции CHECK, а также символьных массивов

CREATE TABLE JOB (

JOB_CODE     JOBCODE NOT NULL,

JOB_GRADE    JOBGRADE NOT NULL,

JOB_REGION   REGION_NAME NOT NULL,

JOB_TITLE    VARCHAR(25) CHARACTER SET WIN1251 COLLATE                                    PXW_CYRL NOT NULL,

MIN_SALARY   SALARY NOT NULL,

MAX_SALARY   SALARY NOT NULL,

JOB_REQ      BLOB(400,1) CHARACTER SET WIN1251,

LANGUAGE_REQ VARCHAR(15) [5],

PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_REGION),

FOREIGN KEY (JOB_REGION) REFERENCES REGION (REGION),

CHECK (MIN_SALARY < MAX_SALARY));

Данный пример создает таблицу, содержащую информацию о работах (профессиях). Типы полей основаны на доменах JOBCODE, JOBGRADE, REGION_NAME и SALARY. Определен массив LANGUAGE_REQ, состоящий из 5 элементов типа VARCHAR(15). Кроме того, введено поле JOB_REQ, имеющее тип BLOB с подтипом 1 (текстовый блоб) и размером сегмента 400. Для таблицы определен первичный ключ, состоящий из трех полей JOB_CODE, JOB_GRADE и JOB_REGION. Далее, определен внешний ключ (JOB_REGION), ссылающийся на поле REGION таблицы REGION. И, наконец, включено предложение CHECK, позволяющее производить проверку соотношения для двух полей и вызывать исключительное состояние при нарушении такого соотношения.

 

Пример D: Таблица с вычисляемым полем

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,

   PERC_CHANGE   DOUBLE PRECISION DEFAULT 0 NOT NULL

        CHECK (PERC_CHANGE BETWEEN -50 AND 50),

   NEW_SALARY COMPUTED BY

        (OLD_SALARY + OLD_SALARY * PERC_CHANGE / 100),

PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),

FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO));

Данный пример создает таблицу, где среди других полей имеется вычисляемое (физически не существующее) поле NEW_SALARY, значение которого вычисляется по значениям двух других полей (OLD_SALARY и PERC_CHANGE).




Содержание  Назад  Вперед