
- •Поняття баз даних.
- •Реляційні бази даних
- •1.3. Первинні ключі та індекси
- •1.4. Реляційні відношення (зв’язки) між таблицям
- •1.4.1. Відношення "один-до-багатьох"
- •1.4.2. Відношення "один-до-одного"
- •1.4.3. Відношення "багато-до-багатьох"
- •1.4.4. Зв’язки між записами однієї таблиці
- •1.5. Цілісність посилань (referencial integrity)
- •Індекси.
- •Поняття транзакцій
- •Локальні та файл-серверні бази даних
- •Загальний огляд засобів для роботи з базами даних
- •Побудова додатків баз даних в архітектурі "клієнт-сервер"
- •Interbase: деякі технічні характеристики
- •Питання з'єднання з видаленим сервером
- •Приклад бд “Облік товарів на складі”
- •Зміна визначення домена – після create domain (крім типу та not null)
- •Первинний ключ
- •Зовнішній ключ та визначення цілісності посилань
- •Використання генераторів та збережених процедур
- •Знищення таблиці
- •Використання підрядків (containing)
- •Додавання, зміна, видалення записів
- •Оператор insert
- •Явне вказання списку значень
- •Вказання значень за допомогою оператора select
- •Оператор delete
Додавання, зміна, видалення записів
Мова SQL орієнтована на виконання операцій над групами записів, хоча в деяких випадках операція може проводитися і над окремим записом. Тому недивно, що оператори додавання, зміни і видалення записів в загальному випадку викликають відповідні операції над групами записів.
Оператор insert
Оператор INSERT застосовується для додавання записів в об'єкт. Як об'єкт може виступати ТБД або перегляд (VIEW), створений оператором CREATE VIEW. У останньому випадку записи можуть додаватися в несколькотаблиц.
Формат оператора INSERT:
INSERT INTO <об'єкт> [(поле1 [, поле2 ...])|
{VALUES (<значення1> [, <значення2> ...]) | <оператор SELECT> }
Список полів указує поля, яким будуть присвоєні значення в записах, що додаються. Список полів може бути опущений. В цьому випадку маються на увазі всі поля об'єкту, причому в тому порядку, в якому вони визначені в даному об'єкті.
Поставити у відповідність стовпцям списки значень можна двома способами. Перший полягає в явному вказанні значень після слова VALUES, другий, - у формуванні значень за допомогою оператора SELECT.
Явне вказання списку значень
В цьому випадку оператор INSERT застосовується для додавання одному запису і має формат
INSERT INTO <об'єкт> [(поле1 [, поле2 ...])]
VALUES (<значення1> [, <значення2> ...])
Значення призначаються полям у порядку вказання в операторі: першому полю призначається перше значення, другому полю - друге значення і т. д.
Приклад. Додати в таблицю Тоvary новий запис:
INSERT INTO PRODOD (N_PROD, DAT_PROD, KILK, TOVAR, POKUP)
VALUES (45, "20.02.2007", 100, "Цукор", "Карпати, ПП")
Оскільки поля таблиці PRODAZH вказані у повному складі і саме в тому порядку, в якому вони перераховані при створенні таблиці PRODAZH оператором CREATE TABLE, оператор можна спростити:
INSERT INTO PRODAZH VALUES (45, "20.01.2007", 100, "Цукор", "Карпати, ПП")
Для задання унікального значення поля первинного ключа N_PROD можна скористатися генератором:
INSERT INTO PRODAZH
VALUES (GEN_ID(PRODAZH_N_PROD,2), "20.02.2007", 100,"Цукор", "Карпати, ПП")
Вказання значень за допомогою оператора select
Другою формою оператора INSERT є
INSERT INTO <об'єкт> [(поле1 [, поле2 ...])] <оператор SELECT>
При цьому значеннями, які присвоюються полям, є значення, що повертаються оператором SELECT. Порядок їх призначення полям аналогічний попередній формі оператора INSERT: значення першого поля результуючого набору даних оператора SELECT присвоюється першому полю оператора INSERT, друге, - другому і так далі Слід звернути увагу на важливу особливість: оскільки оператор SELECT в загальному випадку повертає множину записів, то і оператор INSERT в даній формі приведе до додавання в об'єкт аналогічної кількості нових записів.
Приклад. Нехай в БД визначена таблиця PRODAZH_DATA, по складу і порядку проходження полів аналогічна таблиці PRODAZH:
CREATE TABLE PRODAZH_DATA(
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),
);
Нехай в цю таблицю потрібно щодня копіювати всі записи про витрати товару з складу за поточну дату. Уявимо, що ці відомості надалі щодня переправляються в територіально віддалену бухгалтерію, до офісу якої не встигли підвести мережеві кабелі (або взагалі не збираються цього робити). Тоді щоденне вивантаження записів з таблиці PRODAZH в таблицю PRODAZH_DATA реалізовуватиметься таким оператором:
INSERT INTO PRODAZH_DATA
SELECT * FROM PRODAZH WHERE DAT_PROD = "20.01.2007"
Оператор UPDATE
Оператор UPDATE застосовується для зміни значення в групі записів або - в окремому випадку - в одному записі об'єкту. Як об'єкт можуть виступати ТБД або перегляд, створений оператором CREATE VIEW. У останньому випадку можуть змінюватися значення записів з декількох таблиць.
Формат оператора UPDATE:
UPDATE <об'єкт>
SET поле1 = <значення1> [,поле2 = <значення2>...]
[WHERE <умова пошуку >]
При коректуванні кожному з перерахованих полів присвоюється відповідне значення. Коректування виконується для всіх записів, що задовольняють умові пошуку. Умова пошуку задається так само, як в операторові SELECT.
УВАГА ! Якщо опустити WHERE <умова пошуку>, в об'єкті будуть змінені всі записи.
Приклад. У таблиці PRODAZH замінити дату на "24.01.2007" і кількість збільшити на 2 одиниці для всіх записів з датою "20.01.2007":
UPDATE PRODAZH
SET DAT_PROD = "24.01.2007", KILK = KILK + 2
WHERE DAT_PROD = "20.01.2007"