Здавалка
Главная | Обратная связь

Видалення з вкладеним під запитом



Мова реляційних БД SQL: модифікація даних

DМL: команди модифікації даних

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

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

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

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

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

Ключові фрази запитів модифікації (дії):

DELETE (видалити)

INSERT (вставити)

UPDATE (обновити)

Об’єкти, до яких застосовуються оператори модифікації:

таблиці;

представлення

Запит на додавання даних (INSERT). Формати запитів на додавання

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

<оператор_вставки>::=INSERT INTO <ім'я_таблиці>

[(ім'я_стовпця [,...n])]

{VALUES (значення[,...n]) | <SELECT_оператор>};

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

Перша форма оператору INSERT з параметром VALUES призначена для вставки одного рядка у вказану таблицю.

INSERT INTO

{базова таблиця | представлення}

[(стовпець [,стовпець] ...)]

VALUES ({константа | змінна} [,{константа | змінна}] ...);

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

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

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

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

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

INSERT INTOТовар

VALUES("Світоч ніжний", " шоколад ", 12);

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

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

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

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

INSERT INTO Підсумок

(Назва, Місяць, Вартість)

SELECT Товар.Назва, Month(Угода.Дата)

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

AS Вартість

FROM Товар INNER JOIN Угода

ON Товар.КодТовару= Угода.КодТовару

GROUP BY Товар.Назва, Month(Угода.Дата);


3. Запит на видалення (DELETE ). Застосування підзапитів в запиті на видалення

Для видалення групи записів з таблиці застосовується оператор DELETE.

Форматречення DELETE:

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

FROM <ім'я_таблиці>

[WHERE <умова_відбору>];

Параметр <ім'я_таблиці> є або іменем таблиці бази даних, або іменем оновлюваного представлення.

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

Приклад.Видалити дані по всіх угодах.

DELETE

FROMУгода;

Приклад.Видалити всі торішні угоди:

DELETE

FROMУгода

WHEREYear(Угода.Дата)=Year(GETDATE())-1;

Приклад.Лишити лише угоди поточного року:

DELETE

FROM Угода

WHERE Year(Угода.Дата) < > Year(GETDATE());

Видалення з вкладеним під запитом

Приклад.Видалити всі торішні угоди клієнтів з фірми “Крокус”

DELETE

FROMУгода

WHEREYear(Угода.Дата) =Year(GETDATE())-1

ANDУгода.КодКлієнтаIN

(SELECTКлієнт.КодКлієнта

FROMКлієнт

WHEREКлієнт.Фірма = ‘Крокус') ;







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.