Ajutor - de - sql (DML) operatori actualizați și ștergeți

UPDATE modifică datele existente în tabel. Comanda are următoarea sintaxă

Cu un singur operator poate lua valori pentru orice număr de coloane. Cu toate acestea, în același operator UPDATE poate face modificări în fiecare coloană a tabelului menționat doar o singură dată. toate rândurile din tabel vor fi actualizate în absența propunerilor unde.

În cazul în care coloana permite NULL valoare, acesta poate fi specificat în mod explicit. În plus, valoarea existentă la valoarea implicită poate fi înlocuită (DEFAULT) pentru o anumită coloană.

UPDATE laptop SET preț = preț * 0.9

Valorile sunt de asemenea permise anumite coloane atribuite la o altă coloană. De exemplu, să presupunem că doriți să schimbați hard disk-uri mai mici de 10 GB laptop. În acest caz, capacitatea noilor discuri ar trebui să fie jumătate din cantitatea de memorie RAM disponibil în aceste dispozitive. Această problemă poate fi rezolvată după cum urmează:

UPDATE Laptop SET hd = ram / 2 UNDE hd <10;

Desigur, tipurile de date pe coloană HD și berbecul trebuie să fie compatibile. Pentru a aduce tipuri de expresie pot fi utilizate CAST.

În cazul în care datele trebuie să fie schimbat în funcție de conținutul unei coloane, puteți utiliza case expresie. Dacă, să zicem, aveți nevoie pentru a pune hard disk-uri de 20 GB la notebook-uri PC cu memorie mai mică de 128 MB și 40 GB - restul de laptop calculator, este posibil să se scrie o astfel de interogare:

UPDATE laptop
SET hd = CASE CÂND RAM<128 THEN 20 ELSE 40 END

Pentru a calcula valorile coloanelor permise utilizarea subinterogări. De exemplu, este necesar pentru a dota toate notebook-uri PC-uri mai rapide procesoare disponibile. Apoi, putem scrie:

UPDATE laptop
Viteza SET = (SELECT MAX (viteză) DIN laptop)

Este necesar să spun câteva cuvinte despre coloanele de auto-increment. În cazul în care coloana de cod în tabel este definit ca o identitate laptop (1,1). următoarea declarație

Codul UPDATE Laptop SET = 5 WHERE cod = 4

nu va fi executat, deoarece câmp avtoikrementiruemoe nu permite o actualizare și vom primi un mesaj de eroare. Pentru a efectua această sarcină încă, puteți proceda după cum urmează. În primul rând, introduceți linia dorită folosind SET IDENTITY_INSERT. apoi scoateți vechea linie:

SET IDENTITY_INSERT laptop ON
INSERT INTO Laptop_ID (cod, modelul, viteza, berbec, HD, pret, ecran)
SELECT 5, modelul, viteza, berbec, HD, pret, ecran
DE LA Laptop_ID UNDE cod = 4
DELETE FROM Laptop_ID WHERE cod = 4

Desigur, un alt rând cu codul = 5 valoare în tabel nu ar trebui să fie.

În declarația UPDATE Transact-SQL extinde standardul prin utilizarea de propuneri opționale FROM. Propunerea este specificată printr-un tabel care prevede criteriile pentru operația de actualizare. mai multă flexibilitate aici este utilizarea de tabele se alăture operațiunilor.

Exemplu. Să presupunem că doriți să specificați „Nici PC“ (fără PC) în coloana de tipul celor de modele PC-uri din tabelul de produse. pentru care nu există nici un rând corespunzătoare în tabelul PC. prin intermediul unor soluții de conectare tabele poate fi scris ca:

UPDATE produs
Tip SET = 'Nu PC'
DIN STÂNGA pr produs TE PE PC pr.model = pc.model
UNDE type = 'pc' SI pc.model IS NULL

Acesta utilizează o conexiune externă, rezultând într-un modele de PC-uri pe o coloană pc.model, care sunt absente în tabelul PC. Acesta va conține o valoare NULL, care este utilizat pentru a identifica rândurile care urmează să fie actualizate. Desigur, această problemă are o soluție, și în versiunea „standard“:

UPDATE produs
Tip SET = 'Nu PC'
UNDE type = 'PC' și modelul NOT IN (SELECT model din PC)

Declarația șterge rândurile din DELETE tabelele temporare sau permanente de bază, punctele de vedere, sau cursoarele, iar în ultimele două cazuri, acțiunea operatorului este de peste tabelele de bază de la care să extragă date din aceste puncte de vedere sau cursoare. îndepărtați operatorul are o sintaxă simplă:

DELETE FROM <имя таблицы> [UNDE <предикат>];

În cazul în care nu există nici o clauză WHERE, toate rândurile sunt șterse dintr-un tabel sau o vizualizare (vizualizare trebuie să fie actualizate). Cu cât mai repede acest proces (șterge toate rândurile dintr-un tabel) în Transact-SQL poate fi, de asemenea, realizată folosind comanda

tabel trunchia <имя таблицы>

Cu toate acestea, există unele diferențe în punerea în aplicare a comanda TABLE TRUNCATE peste utilizarea operatorului DELETE. care ar trebui să fie păstrate în minte:

Exemplu. Pentru a elimina din tabel toate notebook-urile PC laptop cu o dimensiune a ecranului de mai puțin de 12 inci.

DELETE de pe laptop
UNDE ecran <12;

Toate tampoane pot fi eliminate de către operator