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

Додавання, зміна, видалення записів

Мова 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"

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