Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 9БД.doc
Скачиваний:
26
Добавлен:
30.05.2020
Размер:
74.75 Кб
Скачать

9. Лекція

ТЕМА: Запити модифікації даних

МЕТА: Розглянути запити модифікації даних в реляційній таблиці: вставка окремого запису INSERT VALUES або групи записів з наявної таблиці INSERT SELECT, видалення записів по умові DELETE, зміна записів по умові UPDATE. Ввести поняття цілісності даних. Визначити цілісність сутностей і посилальна цілісність.

ПЛАН

1 Запит додавання

2 Запит видалення

3 Запит оновлення

4 Введення в поняття "цілісність даних"

Язик SQL орієнтований на виконання операцій над групами записів, хоча в деяких випадках їх можна проводити і над окремим записом.

Активні запити є досить могутнім засобом, оскільки дозволяють оперувати не тільки окремими рядками, але і набором рядків. За допомогою активних запитів користувач може додати, видалити або обновити блоки даних. Існує три види активних запитів:

INSERT INTO – запит додавання ;

DELETE – запит видалення ;

UPDATE – запит оновлення.

1 Запит додавання

Оператор INSERT застосовується для додавання записів в таблицю. Формат оператора:

<оператор_вставки>::=INSERT INTO <ім’я_таблиці> [(ім’я_колонки [,...n])]

{VALUES (значення[,...n])|

<SELECT_оператор>}

Тут параметр ім’я_таблиці є або ім'ям таблиці бази даних, або ім'ям уявлення, що оновлюється.

Перша форма оператора INSERT з параметром VALUES призначена для вставки одного рядка у вказану таблицю. Список стовпців вказує стовпці, яким будуть привласнені значення в записах, що додаються. Список може бути опущений, тоді маються на увазі всі стовпці таблиці (окрім оголошених як лічильник), причому в певному порядку, встановленому при створенні таблиці. Якщо в операторі INSERT вказується конкретний список імен полів, то будь-які пропущені в ньому стовпці повинні бути оголошені при створенні таблиці як такі, що припускають наявність значення NULL, за винятком тих випадків, коли при описі стовпця використовувався параметр DEFAULT. Список значень повинен відповідати списку стовпців, причому:

  • кількість елементів в обох списках повинна бути однаковою;

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

  • типи даних елементів в списку значень повинні бути сумісні з типами даних відповідних стовпців таблиці.

Приклад 9.1. Додати в таблицю ТОВАР новий запис.

INSERT INTO Товар (Назва, Тип, Ціна) VALUES(" Слов'янський " " шоколад ", 12)

Приклад 9.1. Додавання в таблицю ТОВАР нового запису.

Якщо стовпці таблиці ТОВАР вказані у повному складі і в тому порядку, в якому вони перераховані при створенні таблиці ТОВАР, оператор можна спростити.

INSERT INTO Товар VALUES ("Слов'янський", "шоколад", 12)

Друга форма оператора INSERT з параметром SELECT дозволяє скопіювати безліч рядків з однієї таблиці в іншу. Пропозицією SELECT може бути будь-який допустимий оператор SELECT. Рядки в точності, що вставляються у вказану таблицю, повинні відповідати рядкам результуючої таблиці, створеної при виконанні вкладеного запиту. Всі обмеження, вказані вище для першої форми оператора SELECT, застосовні і в цьому випадку.

Оскільки оператор SELECT в загальному випадку повертає безліч записів, то оператор INSERT в такій формі приводить до додавання в таблицю аналогічного числа нових записів.

Приклад 9.2. Додати в підсумкову таблицю відомості про загальну суму щомісячних продажів кожного найменування товару.

INSERT INTO Підсумок (Назва, Місяць, Вартість)

SELECT Товар.Назва, Month(Операція.Дата)

AS Місяць, Sum(Товар.Ціна*Операція.Кількість)

AS Вартість

FROM Товар INNER JOIN Операція ON Товар.КодТовара= Операція.КодТовара

GROUP Товар.Назва, Month(Операція.Дата)

Приклад 9.2. Додавання в підсумкову таблицю зведення про загальну суму щомісячних продажів кожного найменування товару.

2 Запит видалення

Оператор DELETE призначений для видалення групи записів з таблиці.

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

<оператор_видалення> ::=DELETE

FROM <ім’я_таблиці>[WHERE <умова_вибірки>]

Тут параметр ім’я_таблиці є або ім'ям таблиці бази даних, або ім'ям уявлення, що оновлюється.

Якщо пропозиція WHERE присутня, видаляються записи з таблиці, що задовольняють умові відбору. Якщо опустити пропозицію WHERE, з таблиці будуть видалені всі записи, проте сама таблиця збережеться.

Приклад 9.3. Видалити всі торішні операції.

DELETE FROM Операція

WHERE Year(Операція.Дата)=Year(GETDATE())-1

Приклад 9.3. Видалення всіх торішніх операцій.

В приведеному прикладі умова відбору формується з урахуванням року (функція Year) від поточної дати (функція GETDATE() ).

Соседние файлы в папке лекции