Помощ - по - SQL (DML) оператори обновяване и изтриване

изявление UPDATE променя съществуващите данни в таблицата. Командата има следния синтаксис

С един единствен оператор може да се даде стойности за произволен брой колони. Въпреки това, в една и съща UPDATE операторът може да направи промени във всяка колона от таблицата за само веднъж. всички редове в таблицата, ще бъдат актуализирани при липсата на предложения къде.

Ако колоната позволява NULL стойност, тя може да бъде определен изрично. В допълнение, и стойността на съществуващите към стойността по подразбиране може да бъде заменен (по подразбиране) за дадена колона.

UPDATE лаптоп SET цена = цена * 0.9

Стойностите са разрешени някои колони възложени друга колона. Да предположим, че искате да сменяте твърди дискове по-малко от 10 GB в преносим компютър. В този случай, на капацитета на новите дискове трябва да бъде половината от количеството RAM на разположение в тези устройства. Този проблем може да бъде решен, както следва:

UPDATE лаптоп SET HD = овен / 2, когато HD <10;

Естествено, HD на типове данни, колона и овена трябва да са съвместими. За да събере видове експресия могат да бъдат използвани CAST.

Ако данните трябва да се промени в зависимост от съдържанието на колона, можете да използвате израз случая. Ако, да речем, трябва да се сложи твърди дискове от 20 GB за PC преносими компютри с памет по-малко от 128 MB и 40 гигабайта - останалата част на лаптопа, че е възможно да се напише такава заявка:

UPDATE лаптоп
SET HD = случая, когато овен<128 THEN 20 ELSE 40 END

За да се изчислят стойностите на колони допускат използването на подзаявки. Например, той е длъжен да оборудва всички PC преносими компютри на разположение най-бързите процесори. Тогава можем да запишем:

UPDATE лаптоп
скорост SET = (SELECT MAX (скорост) ОТ лаптоп)

Необходимо е да се каже няколко думи за колоните автоматично инкрементиране. Ако код колона в таблицата се определя като лаптоп ИДЕНТИЧНОСТ (1,1). следното твърдение

UPDATE лаптоп SET код = 5, когато код = 4

няма да бъде изпълнен, тъй като avtoikrementiruemoe поле не позволява актуализация и ние ще получите съобщение за грешка. За да изпълните тази задача, все още можете да се процедира както следва. Първо, поставете желаната линия с помощта на SET IDENTITY_INSERT. След това отстранете стария ред:

SET IDENTITY_INSERT лаптопа
Вмъкнете в Laptop_ID (код, модел, скорост, овен, HD, цена, екран)
SELECT 5, модел, скорост, овен, HD, цена, екран
ОТ КОИТО Laptop_ID код = 4
Изтрива от Laptop_ID КЪДЕТО код = 4

Разбира се, друг ред с код = 5 стойност в таблицата не трябва да бъде.

В изявление Transact-SQL UPDATE простира на стандарта чрез използването на допълнителни предложения от. Предложението се определя от таблица, която осигурява критериите за работата на актуализация. Допълнителна гъвкавост тук е използването на таблици се присъединят операции.

Пример. Да предположим, че искате да посочите "Не PC" (без PC) в колоната от типа на тези модели PC от таблицата на продукта. за които няма съответен ред в компютъра на масата. с помощта на разтвор маси връзка може да се запише като:

UPDATE Каталог
тип SET = "Не PC"
От продуктовия PR НАЛЯВО JOIN PC ON pr.model = pc.model
КЪДЕ тип = "компютър" И pc.model е нула

Тя използва външна връзка, което води до PC модели колона pc.model, които липсват в таблицата на компютър. Тя ще съдържа NULL стойност, която се използва за определяне на реда да бъдат актуализирани. Естествено, този проблем има решение, а в "стандартен" версия:

UPDATE Каталог
тип SET = "Не PC"
КЪДЕ тип = "компютър" и модел НЕ ПО (SELECT модел от PC)

ИЗТРИВАНЕ изявлението изтрива редове от временни или постоянни базови таблици, мненията и курсори, а в последните два случая, действието на оператора е над базовите таблици, от които да се извличат данни в тези възгледи и курсори. премахване на оператора има прост синтаксис:

Изтрий от <имя таблицы> [КЪДЕТО <предикат>];

Ако няма клауза WHERE, всички редове се изтриват от таблица или изглед (изглед трябва да се актуализира). Колкото по-бързо този процес (изтриване на всички редове от таблица) в Transact-SQL може да се извърши с помощта на командата

TRUNCATE TABLE <имя таблицы>

Все пак, има някои разлики в изпълнението на TRUNCATE TABLE командването на използването на оператора изтриете. което трябва да се има предвид следното:

Пример. За да премахнете от масата всички лаптоп PC преносими компютри с размер на екрана на по-малко от 12 инча.

Изтрий от лаптоп
КЪДЕ екран <12;

Всички подложки могат да бъдат отстранени от оператора