Команды по созданию файла базы данных

Database Desktop

Для работы с таблицами БД при проектировании приложения удобно использовать программу Database Desktop, которая позволяет:

- создавать таблицы;

- изменять структуры;

- редактировать записи;

- создавать, редактировать и выполнять визуальные и SQL-запросы;

- выполнять операции с псевдонимами.

Создание новой таблицы выполняется с помощью команды File\New\Table. В начале создания новой таблицы выбирается ее формат (InterBase). После выбора формата таблицы появляется окно определения структуры таблицы, в котором выполняются следующие действия:

- описание полей;

- задание ключа;

- задание индексов;

- определение ограничений на значение поля;

- определение условий (ограничений) ссылочной целостности;

- задание паролей;

- задание языкового драйвера;

- задание таблицы для выбора значений.

При создании новой таблицы, структуру таблицы можно скопировать из другой таблицы: при нажатии кнопки Borrow открывается окно, в котором можно выбрать главный файл таблицы и указать копируемые элементы структуры, установив соответствующий флажок, затем нажать кнопку Open.

Описание полей производится в списке Field roster.

Ключ создается указанием его полей. Для указания ключевых полей в столбце ключа (Key) нужно установить символ *, переведя в эту позицию курсор и нажав любую алфавитно-цифровую клавишу.

Задание индекса сводится к определению:

- состава полей,

- параметров,

- имени индекса.

Создание нового индекса начинается с нажатия кнопки Define. В список Indexed fields необходимо переместить поля, по которым будет производится индексирование. После нажатия кнопки ОК появляется окно, в котором необходимо указать имя индекса. Нежелательно образовывать имя индекса только из имен полей.

Для изменения индекса необходимо нажать кнопку Modify, для удаления - Erase.

Изменение структуры существующей таблицы производится с помощью команды Table\Restructure.

Для просмотра структуры таблицы выполняется команда Table\Info Structure1.

Создать и удалить БД можно подготовив и выполнив соответствующие запросы. Запрос можно выполнить как в среде программы IBConsole, так и из приложения с помощью компонента Query.

Инструкция SQLсоздания БД имеет следующий формат:

CREATE DATABASE "<Имя файла БД>"

[USER "Имя пользователя" [PASSWORD "Пароль пользователя"]]

Имя файла БД указывает спецификацию (имя и путь) физического файла, в котором будет храниться информация создаваемой БД. Имя файла является единственным обязательным параметром, который должен быть задан для новой БД.

Пример:

CREATE DATABASE "С:\Basa.gdb"

создает однофайловую БД с именем Basa.gdb в корневом каталоге диска С.

Параметры USER и PASSWORD определяют имя и пароль пользователя, создавшего БД. Эти параметры важны при последующем удалении БД, поскольку, удалить БД может только системный администратор или создатель этой базы данных.

Например,

CREATE DATABASE "С:\Basa.gdb" USER "Masha" PASSWORD "Secret"

Инструкция удаления БД имеет следующий вид:

DROP DATABASE

После ее выполнения удаляется текущая БД, с которой установлено соединение.

Команды по созданию таблиц

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

CREATE TABLE <Имя таблицы> [EXTERNAL [FILE] "<Имя файла>]

(<Имя столбца1> <Описание столбца1> [<Ограничения столбца1>,]

[<Имя столбца N> <Описание столбца N> [<Ограничения столбцаN>],]

[<Ограничение1 таблицы>,]

[<ОграничениеN таблицы>,]

[<Описание ключа1>,]

[<Описание ключаN>,]

[<Описание индекса1>,]

[<Описание индексаN>])

Обязательно должны быть заданы имя таблицы и как минимум один столбец.

По умолчанию таблица добавляется к текущей БД. Если таблицу нужно разместить не в файле БД, а в другом файле, то его имя указывается в операнде EXTERNAL.

Удаление таблицы выполняется инструкцией DROP TABLE.

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

Структуру таблицы можно изменять путем удаления или добавления столбцов, ключей, индексов и ограничений. Изменение таблицы выполняется инструкцией ALTER TABLE.

Если необходимо изменить описание столбца, рекомендуется:

1) Создать новый столбец с требуемым описанием.

2) Скопировать данные старого столбца, описание которого изменяется, в новый столбец.

3) Удалить старый столбец.

Пример:

CREATE TABLE List

(Name VARCHAR (15));

ALTER TABLE List

ADD Name2 VARCHAR (20);

UPDATE List

SET Name2 = Name;

ALTER TABLE List

DROP Name;

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

Описание столбца

Описание столбца имеет формат:

<Описание столбца> =

{<Имя столбца> | COMPUTED [BY] (<Выражение> | <Домен>}

Столбец можно определить следующими способами:

1) Задать тип столбца, например, DATA или INTEGER, при этом создается обычный столбец указанного типа.

2) Создать вычисляемый столбец, задав в операнде COMPUTED выражение.

3) Создать столбец на основе домена.

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

Домен – предварительное описание столбца, которое затем можно использовать для описания столбцов.

Пример:

CREATE TABLE List

(Name VARCHAR (20),

Price FLOAT,

Number INTEGER,

PriceALL COMPUTED BY (Price * Number))

Исходя из типа операндов, тип этого вычисляемого столбца автоматически будет определен как FLOAT.

Ограничения столбца

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

Ограничения столбца имеют следующий формат:

[DEFAULT {<Значение> | NULL | USER}]

[NOT NULL]

[COLLATE <Порядок сортировки>]

[CHECK <Условия>]

Операнд DEFAULT определяет для столбца значение по умолчанию, которое автоматически заносится в столбец при добавлении к таблице новой записи.

В качестве значения по умолчанию можно указать:

- константу – в столбец заносится указанное значение (должно иметь тип, совместимый с типом столбца);

- NULL – в столбец заносится нулевое значение;

- USER – в столбец заносится имя текущего пользователя (для столбцов строковых типов).

Операнд NOT NULL указывает, что столбец не может быть пустым и в обязательном порядке должен содержать значение допустимого типа и диапазона.

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

Чтобы задать диапазон ограничений для значений столбца, используется операция сравнения или конструкция вида

BETWEEN <Минимальное значение> AND <Максимальное значение>

Например:

CREATE TABLE Test

(Name VARCHAR (20) NOT NULL,

Price FLOET CHECK (Price > 0),

Number INTEGER CHECK (Number BETWEEN 1 AND 1000));

Для таблицы Test значение столбца Name не может быть пустым, значение столбца Price должно быть положительным, а значение столбца Number – находится в диапазоне 1 … 1000.

С помощью условия можно обеспечить для столбца установку одного из значений, содержащихся в определенном наборе (списке). Набор значений бывает фиксированным (статическим) и задается непосредственно в конструкции IN или формируется динамически с помощью инструкции SELECT. В последнем случае состав набора зависит от результата работы инструкции SELECT, которая выполняется каждый раз при модификации записей таблицы.

Например:

CREATE TABLE Test2

(Name VARCHAR (20),

Position VARCHAR (20)

CHECK (Post IN ("Директор", "Менеджер", "Бухгалтер"),

Attrib VARCHAR (20)

CHECK (Attrib IN (SELECT Attrib From Position)))

для полей таблицы Test2 устанавливается список возможных значений: значение поля Position должно входить в фиксированный набор из трех строковых констант.

Например, если требуются атрибуты должностей, которым соответствует оклад, превышающий 2500 рублей, то описание поля Attrib будет иметь следующий вид:

Attrib VARCHAR (20)

CHECK (Attrib IN (SELECT Attrib From Position WHERE Salary > 2500))).

Пример создания таблицы с ограничением:

CREATE TABLE Test5

(Name VARCHAR (20)

OrderDate Date,

PerformDate Date,

CHECK (PerformDate >= OrderDate))

В таблице Test5 хранится информация о заказе товара. Столбец OrderDate содержит дату заказа, а столбец PerformDate – дату выполнения заказа. Так как заказ не может быть выполнен раньше, чем он сделан, для столбца PerformDate на уровне таблицы установлено соответствующее ограничение. Это ограничение можно указать и при описании столбца PerformDate.

Описание ключей

В таблицах InterBase ключи разделяются на первичные и уникальные (для главных таблиц) и внешние (для подчиненных таблиц). Ключ предназначен для обеспечения уникальности записей и ссылочной целостности БД.

Для описания первичного ключа используется операнд PRIMARY KEY формата:

PRIMARY KEY (<Список столбцов ключа>)

Имена столбцов, образующие ключ, перечисляются в списке через запятую.

Например, инструкция

CREATE TABLE Personnel

(Code INTEGER NOT NULL,

Name VARCHAR (30),

PRIMARY KEY (Code))

создает таблицу Personnel, для которой по столбцу Code строится первичный ключ. Для ключевого столбца задан операнд NOT NULL.

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

UNIQUE (<Список столбцов ключа>)

Пример,

CREATE TABLE Position

(Code INTEGER NOT NULL,

Position VARCHAR (20) NOT NULL,

PRIMARY KEY (Code),

UNIQUE (Position)

Создает таблицу Position, для которой строятся два ключа – первичный ключ по столбцу Code и уникальный ключ по столбцу Position. Таблица и один из ее столбцов могут иметь одинаковые имена (Position).

Определение ограничений ссылочной целостности

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

Определение ограничения ссылочной целостности имеет следующий формат:

CONSTRAINT <Имя ограничения>

FOREIGN KEY (<Список столбцов ключа>)

REFERENCES <Имя главной таблицы > [<Список столбцов ключа главной таблицы>]

При задании ограничений ссылочной целостности ключу (первичному или уникальному) главной таблицы ставится в соответствие внешний ключ подчиненной таблицы. Для описания внешнего ключа используется операнд FOREIGN KEY. Список этого операнда задает столбцы, по которым строится внешний ключ. Список столбцов должен соответствовать списку столбцов ключа главной таблицы.

В операнде REFERENCES указывается главная таблица. Описания столбцов ключа главной таблицы и внешнего ключа подчиненной таблицы должны полностью совпадать.

Ограничения ссылочной целостности именуются. Имя не обязательно.

Пример:

CREATE TABLE Store

(S_Code INTEGER NOT NULL PRIMARY KEY,

S_Name VARCHAR (20) NOT NULL,

S_Price FLOAT,

S_Numder FLOAT);

CREATE TABLE Cards

(C_Code INTEGER NOT NULL PRIMARY KEY,

C_Code2 INTEGER NOT NULL,

C_Move VARCHAR (20) NOT NULL,

С_Date DATE,

CONSTRAINT rStoreCards

FOREIGN KEY (C_Code2) REFERENCES Store)

Создаются две таблицы Store и Cards, в каждой из которых определен первичный ключ. С таблицей Store связывается таблица Cards, для чего в ней по полю C_Code2 определен внешний ключ и задано ограничение ссылочной целостности с именем rStoreCards.

Удаление ограничения ссылочной целостности:

ALTER TABLE <Имя таблицы>

DROP <Имя ограничения ссылочной целостности>

или из программы SQL Explorer.

Использование индексов

Создание и удаление индексов выполняется инструкциями CREATE INDEX и DROP INDEX соответственно.

Создание индекса:

CREATE [UNIQUE] [ASCENDING] [DESCENDING] INDEX

<Имя индекса> ON <Имя таблицы> (<Имя столбца>, …, [<Имя столбца>])

- UNIQUE – индекс (как и ключ) требует уникальности значений столбца (столбцов), по которому он построен;

- ASCENDING – индексные столбцы сортируются в порядке возрастания значений (по умолчанию);

- DESCENDING - индексные столбцы сортируются в порядке убывания значений.

Например:

CREATE DESCENDING INDEX

indNamePosition ON Personnel (Name, Position)

Создает для таблицы Personnel индекс indNamePosition, построенный пополям Name и Position. Для индекса устанавливается сортировка в порядке убывания значений.

Использование доменов

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

Создание домена:

CREATE DOMAIN <Имя домена>

[AS] <Описание домена>

Использование домена:

<Имя столбца> <Имя домена>

Пример:

CREATE DOMAIN D_Position AS VARCHAR (20) NOT NULL;

CREATE DOMAIN D_Price AS FLOAT CHECK (VALUE > 0);

CREATE TABLE Position

(Code INTEGER NOT NULL PRIMARY KEY,

Position D_Position;

CREATE TABLE Personnel

(Code INTEGER NOT NULL PRIMARY KEY,

Position D_Position;

Price D_Price

Домен D_Position представляет собой описание строкового столбца длиной не более 20 символов, который не может быть пустым. Домен D_Price представляет собой числовой столбец, значение которого должно быть положительным.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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