Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Зміна визначення домена – після 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;

 

Знищення таблиці

 

DROP TABLE < ім’я таблиці >;

Оператор SELECT

Оператор SELECT – самий використовуваний оператор SQL. Він дозволяє проводити вибірки даних з ТБД і перетворювати до потрібного вигляду отримані результати. За його допомогою можна реалізувати вельми складні і громіздкі умови вибору даних з різних таблиць.

Оператора SELECT має наступний формат:

SELECT [DISTINCT | ALL] {* | <значення1> [, <значення2> ...]}

FROM <таблиця1> [, < таблиця2> ...]

[WHERE <умови_пошуку>]

[GROUP BY поле [COLLATE collation] ...]

[HAVING < умови пошуку >]

[UNION <оператор select>]

[PLAN <план виконання_запиту>]

[ORDER BY <список_полів>]

Прим. Значення – поле, або арифм. вираз.

Найпростіший різновид оператора SELECT (SELECT .. FROM).

Після ключового слова SELECT приводиться список значень. Кожне з них визначає поле результуючого набору даних. В більшості випадків – це імена полів таблиць, перерахованих після слова FROM. Зірочка '*' указує, що в результат виконання запиту потрібно включити всі поля тієї або іншої таблиці. Після FROM вказується список ТБД, з яких буде відбуватись вибірка даних.

Наприклад, створити набір даних, що складається зі всіх полів і всіх записів з таблиці PRODAZH можна за допомогою такого оператора:

SELECT *

FROM PRODAZH

що еквівалентно

SELECT N_PROD, DAT_PROD, KILK, TOVAR, POKUP

FROM PRODAZH

Використання WHERE

WHERE використовується для включення в НД лише потрібних записів.

У набір даних, який повертається оператором SELECT, включатимуться тільки ті записи, які задовольняють умові пошуку, вказаній після WHERE.

Розглянемо дві прості умови пошуку.

Порівняння значення поля з константою

Приклад. Вибрати з таблиці PRODAZH всі операції продажу товарів об'ємом 20 одиниць

SELECT *

FROM PRODAZH

WHERE KILK = 20

Порівняння значення поля однієї таблиці із значенням поля іншої таблиці (внутрішнє з'єднання)

Приклад 1. Видати всі записи про витрату товару з таблиці PRODAZH і для кожного товару вказати його ціну з таблиці TOVARY

SELECT PRODAZH.*, TOVARY.CINA

FROM PRODAZH, TOVARY

WHERE PRODAZH.TOVAR = TOVARY.TOVAR

Приклад 2. Видати всі записи про витрату товару з таблиці PRODAZH Для кожного покупця вказати його адресу з таблиці POKUPCI

SELECT PRODAZH.*, POKUPCI.ADRESA

FROM PRODAZH, POKUPCI

WHERE POKUPCI.POKUP = PRODAZH.POKUP

Використання псевдонімів таблиць

Використання імен таблиць для ідентифікації полів (див. попер приклади) незручно із-за своєї громіздкості. Набагато краще присвоїти кожній таблиці яке-небудь коротке ім’я. Такі імена називаються псевдонімами таблиць.

Приклад. PR, PO – псевдоніми

SELECT PR.*, РO.ADRESA

FROM PRODAZH PR, POKUPCI PO

WHERE PO.POKUP = PR.POKUP










Последнее изменение этой страницы: 2018-04-12; просмотров: 283.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...