Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lect_DB.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
323.07 Кб
Скачать

Зміна визначення домена – після create domain (крім типу та not null)

ALTER DOMAIN ім’я {

[SET DEFAULT {літерал] NULL | USER}]

| [DROP DEFAULT] | [ADD [CONSTRAINT] CHECK (<обмеж_домена>)] | [DROP CONSTRAINT]

};

Створення таблиць InterBase

CREATE TABLE Ім’яТаблиці [EXTERNAL [FILE] "<ім’я файлу>"] (<визн_поля> [, <визн_поля> | <обмеження> ...]);

[EXTERNAL [FILE] "<ім’я файлу >"] – для зовнішніх таблиць БД.

- <визн_поля> - визначення поля таблиці БД.

<визн_поля> = поле {тип_даних | COMPUTED [BY] (<вираз>) | домен}

[DEFAULT {літерал! NULL | USER}] [NOT NULL] [<обмеж_поля>] [COLLATE collation]

де поле – ім’я поля; тип_даних - тип поля, і, можливо, розмірність масиву (в кв. дужках), якщо поле - масив; для символьних полів может бути вказаний набір символів, відмінний від прийнятого за замовчуванням, за доп. речення CHARACTER SET; COMPUTED [BY] (<вираз>) - служить для визначення поля з обчислюваними значеннями;

domain – ім’я домена, тобто. раніше описаного типу поля;

DEFAULT - значення поля за замовчуванням (при створенні запису і до його зміни);

обмеж_поля - обмеження, на значення поля;

COLLAТЕ collation - порядок сортування символів (для символьних полів) для обраного набору символів.

Первинний ключ

Атрибут PRIMARY KEY(<ім’я_поля>)

Унікальний ключ (для полів – не-первинних ключів)

Атрибут UNIQUE(<ім’я_поля>)

Зовнішній ключ та визначення цілісності посилань

FOREIGN KEY (<список полів зовнішнього ключа>)

REFERENCES <ім’я батьківської таблиці> [<список полів батьківської таблиці>]

Список полів зовнішнього ключа визначає поля дочірньої таблиці, по яким будується зовнішній ключ.

Імя батьківської таблиці визначає таблицю, в якій описаний первинний ключ (або поле з атрібутом UNIQUE).

Також цілісність посилань можна задати як

[CONSTRAINT <ім’я цілісності посилань >]

FOREIGN KEY (<список полів зовнішнього ключа>)

REFERENCES < ім’я батьківської таблиці > [<список полів батьківської таблиці >]

Приклад:

CREATE TABLE TOVARY(

TOVAR VARCHAR(20) NOT NULL COLLATE PXW_CYRL,

OD_VYM VARCHAR(l0) NOT NULL COLLATE PXW_CYRL,

CINA FLOAT NOT NULL,

PRIMARY KEY(TOVAR),

CHECH CINA>0

);

CREATE TABLE POKUPCI(

POKUP VARCHAR(20) NOT NULL COLLATE PXW_CYRL,

MISTO VARCHAR(12) COLLATE PXW_CYRL,

ADRESAA CHAR(20) COLLATE PXW_CYRL,

PRIMARY KEY(POKUP)

);

CREATE TABLE PRODAZH(

N_PROD INTEGER NOT NULL,

DAT_PROD DATE NOT NULL,

KILK INTEGER NOT NULL,

TOVAR VARCHAR(20) NOT NULL COLLATE PXW_CYRL,

POKUP VARCHAR(20) COLLATE PXW_CYRL,

PRIMARY KEY(N_PROD),

FOREIGN KEY(POKUP) REFERENCES POKUPCI,

FOREIGN KEY(TOVAR) REFERENCES TOVARY

);

COLLATE – порядок сортування

FOREIGN KEY – зовнішній ключ ( у дочірній таблиці для з’єднання з батьківською)

Використання генераторів та збережених процедур

Для створення автоінкрементних полів (як первинних ключів) використовуються генератори

CREATE GENERATOR PROD_N;

SET GENERATOR PROD_N TO 1;

%1 – стартове значення

Тоді створимо збережену процедуру GET_N_PROD, яка повертає поточне значення генератора у цілочисельний параметр NR

CREATE PROCEDURE GET_N_PROD

RETURNS (NR INTEGER)

AS

BEGIN

NR = GEN_ID(PROD_N,1);

END;

Для роботи зі збереженою процедурою в клієнтській програмі використовується компонента TStoredProc, властивість ParamByName.Value (до якої можна звернутись в обробнику подій AfterInsert або OnNewRecord компоненти TTable).

Зміна таблиці:

ALTER TABLE

- додати опис нового поля;

ALTER TABLE <ім’я таблиці> ADD <визначення поля>;

- додати нові атрибути цілісності.

ALTER TABLE < ім’я таблиці > ADD [CONSTRAINT <і’мя обмеження>] <визначення цілісності>;

  • видалити поле (поля) з таблиці;

ALTER TABLE < ім’я таблиці > DROP < ім’я поля 1>[,< ім’я поля 2 >.. . ] ;

  • видалити атрибути цілісності таблиці;

ALTER TABLE < ім’я таблиці > DROP < і’мя обмеження цілісності>;

Приклад. Нехай потрібно змінити характеристики поля ADRESAA, змінивши тип поля з CHAR(20) на VARCHAR(20). Тоді:

1. Додаємо в таблицю нове тимчасове поле ADRESAA_TMP, яке повністю повторює характеристики поля ADRESAA:

ALTER TABLE POKUPCI

ADD ADRESAA_TMP CHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL;

2. Копіюємо дані з ADRESAA в ADRESAA_TMP:

UPDATE POKUPCI

SET ADRESAA_TMP = ADRESAA;

3. Видаляємо стовпець ADRESAA:

ALTER TABLE POKUPCI

DROP ADRESAA;

4. Створюємо нове поле ADRESAA з потрібними характеристиками:

ALTER TABLE POKUPCI

ADD ADRESAA VARCHAR(20) NOT NULL COLLATE PXW_CYRL;

5. Переписуємо дані з тимчасового поля ADRESAA_TMP в нове поле ADRESAA:

UPDATE POKUPCI

SET ADRESAA = ADRESAA_TMP;

6. Вилучаємо поле ADRESAA_TMP:

ALTER TABLE POKUPCI

DROP ADRESAA_TMP;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]