Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Модифікація даних за допомогою конструкції where

Конструкція WHEREвиконує дві функції:

  • задає які рядки необхідно відновити (умова);

  • указує рядки вихідної таблиці, з яких витягаються дані для відновлення, якщо також задана конструкція FROM.

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

USE Pubs

UPDATE NewBooks

SET BookType = 'popular'

WHERE BookType = 'popular_comp'

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

Модифікація даних за допомогою конструкції from

За допомогою конструкції FROMвдається замінити дані в обновлюваній таблиці даними з однієї або декількох таблиць або відображень. Наприклад, у наступному прикладі в операторіUPDATEу конструкціюFROMвходить внутрішнє з'єднання, що з'єднує заголовки книг у таблицяхNewBooksіTitles:

USE Pubs

UPDATE NewBooks

SET Price - Titles.Price

FROM NewBooks JOIN Titles

ON NewBooks.BookTitle = Titles.Tiile

Цей оператор обновляє значення стовпця Priceу таблиціNewBooksзначеннями однойменного стовпця з таблиціTitles.

Модифікація даних за допомогою api і курсорів

ADO, OLE DB і API ODBCпідтримують відновлення поточного рядка в результуючому наборі, отриманим додатком. Крім того, при використанні серверного курсору Transact-SQL можна обновлювати поточний рядок за допомогою оператораUPDATE, у який входить конструкціяWHERECURRENT OF. Зміни стосуються тільки того рядка, на якій установлений курсор.

Модифікація даних типу ntext, text і image

SQL Server надає кілька методів для відновлення значень типу ntext, textіimage:

  • відносно невеликі дані задаються в операторі UPDATEтак само, як дані типуchar, nchar або binary;

  • оператори Transact-SQL WRITETEXTіUPDATETEXTдозволяють обновити значення типуtext, ntextабо image;

  • додатки ADOздатні задавати більші за обсягом дані типуtext, ntext і image за допомогою методуAppendChunk;

  • додатки OLE DBздатні записувати нові значення типуtext, ntext і imageза допомогою інтерфейсуISequentialStream;

  • додатки ODBCвикористовують для запису нових значень типуtext, ntextіimageфункціюSQLPutData;

  • додатки DB-Libraryзастосовують функціюDbwritetext.

SQL Server також підтримує відновлення значень типу ntext, text абоimageвроздріб. ВDB-Libraryтаку ж процедуру можна виконати засобами функціїDbudatetext. Всі інші додатки й сценарії мовою Transact-SQL, пакети, збережені процедури й тригери дозволяється використовувати для відновлення лише частини поля типуntext, textабо imageоператоромUPDATETEXT.

3. Видалення даних із бд sql Server

SQL Server підтримує кілька методів видалення даних з існуючих таблиць:

  • оператор DELETE;

  • API і курсори;

  • оператор TRUNCATE TABLE.

Оператори, що видаляють дані, працюють як з відображеннями, так і з таблицями (з деякими обмеженнями).

Видалення даних оператором delete

Оператор DELETEвидаляє з таблиці або відображення один або кілька рядків. У спрощеному вигляді синтаксис оператораDELETEвиглядає так:

DELETE таблиця _або_ відображення

FROM вихідна_таблиця

WHERE умова_пошуку

Таблиця_або_відображення визначає ім'я таблиці або відображення, звідки потрібно видалити рядки. Видаляються всі рядки таблиці або відображення, які відповідають умові пошуку, заданій конструкцієюWHERE. Якщо конструкціюWHEREне задано, то віддаляються всі рядки таблиці або відображення. КонструкціяFROMзадає додаткові таблиці, відображення або умови з'єднання, які можна використати в предикатах умови пошуку конструкціїWHERE, що визначає рядки, що підлягають видаленню з таблиці або відображення. Рядки не видаляються з названої в конструкціїFROMтаблиці, а тільки з таблиці, названої в конструкціїDELETE. Будь-яка таблиця, з якої вилучені всі рядки, залишається в базі даних. Дія оператораDELETEпоширюється тільки на рядки таблиці. Самі таблиці видаляються з бази даних операторомDROP TABLE. Розглянемо наступний операторDELETE:

USE Pubs

DELETE NewBooks

FROM Titles

WHERE NewBooks.BookTitle = Titles.Title

AND Titles.Royalty = 10

Цей оператор видаляє рядки з таблиці NewBooks, якщо гонорар за ці книги становить 10%. Сума гонорару залежить від значень стовпцяRoyaltyтаблиціTitles.