Студопедия

КАТЕГОРИИ:

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

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




 

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

 

Оператор DELETE

 

Оператор DELETE призначений для видалення групи записів з об'єкту. Як об'єкт можуть виступати ТБД або перегляд, створений оператором CREATE VIEW. У останньому випадку можуть віддалятися записи з декількох таблиць. У окремому випадку може бути видалений тільки один запис.

 

Формат оператора DELETE:

 

DELETE FROM <об'єкт> [WHERE <умова пошуку>];

 

Видаляються всі записи з об'єкту, що задовольняють умові пошуку. Умова пошуку задається так само, як в операторові SELECT.

 

УВАГА! Якщо опустити WHERE <умова пошуку>, з об'єкту будуть видалені всі записи.

Приклад. Видалити з таблиці PRODAZH всі записи про витрату товару "Кока-кола" за дату "10.01.2007".

 

DELETE FROM PRODAZH

WHERE (TOVAR = "Кока-кола") AND (DAT_PROD = "10.01.2007")

 

Вимоги до ужитків для роботи з БД – швидкість, простота, ефективність, надійність.










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

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