Akcioni upit-INSERT

Pomoću jezika T-SQL možete da ažurirate podatke, da ih upisujete u tabele i da ih uklanjate iz tabela Upite koje smo do sada videli su upiti SELECT. To znači da se pomoću tih upita podaci izdvajaju iz jedne ili više tabela. Upiti koje ćete sada videti su akcioni upiti (action Query). To su upiti pomoću kojih se menjaju podaci, to su: INSERT, UPDATE, SELECT INTO, DELETE, TRUNCATE, MERGE proces i OUTPUT klauzula.

Iskaz INSERT koristite za upisivanje podataka u postojeću tabelu. Sintaksa iskaza INSERT je:

INSERT [INTO] table [(col1, col2...)] VALUES (value1, value2)


Primer:

INSERT INTO SalesLT.ProductCategory
   (ParentProductCategoryID
    , Name, rowguid,ModifiedDate)
VALUES (  4,
   'Student', '3C17C9AE-D906-48B4-BDD3-60E28D46DCDF',
   '1998-06-01 00:00:00.000')

 

U primeru se zadate vrednosti upisuju u zadata polja tabele SalesLT.ProductCategory.

 

Iskaz SELECT INTO

Iskaz INSERT se koristi za upisivanje podataka u postojeću tabelu, a iskaz SELECT into se koristi za pravljenje nove tabele.

Primer:

SELECT  ProductID
      , Name
      , ProductNumber
      , Color
      , StandardCost
      , ListPrice
      , Size
      , Weight
      , ProductCategoryID
      , ProductModelID
      , SellStartDate
      , SellEndDate
      , DiscontinuedDate
      , ThumbNailPhoto
      , ThumbnailPhotoFileName
      , rowguid
      , ModifiedDate
INTO  SalesLT.Product_pom FROM SalesLT.Product
where ProductNumber = 'FR-R92B-58'

 

Svi proizvodi čiji je ProductNumber 'FR-R92B-58' se prebacuju u tabelu SalesLT.Product_pom.

 

Akcioni upit-UPDATE

Ažuriranje podataka pomoću iskaza UPDATE

Pomoću iskaza UPDATE se ažuriraju podaci tabele. Iskaz UPDATE ima sledeću definiciju:

UPDATE tabela set column1 = value1, [column2=value2 ... ,]


Primer:

UPDATE SalesLT.Product_pom
SET ListPrice = '1431.90'
where ProductNumber = 'FR-R92B-58'

 

Ažurira se tabela SalesLT.Product_pom, svim redovima gde je ProductNumber = 'FR-R92B-58' menja ListPrice u  '1431.90'

 

Akcioni upit-DELETE

Uklanjanje podataka pomoću iskaza DELETE [FROM]  tabela [WHERE uslov]

Primer:
 
DELETE FROM SalesLT.Product_pom
WHERE ProductID = 680
 

 

Iskaz DELETE se koristi za uklanjanje redova iz tabele.

Definicija je:

DELETE [ FROM] table-name [WHERE uslov]

 

Iskaz TRUNCATE

Iskaz obriše sve redove iz tabele.

Definicija:

TRUNCATE table SalesLT.Product_pom

 

Iskaz Merge

Pomoću Iskaza Merge se obezbeđuje izvršavanje svih odgovarajućih operacija unosa, ažuriranja i uklanjanja vezanih za tabelu, na osnovu podataka u spojenim tabelama. Ova tehnika obezbeđuje konzistentnost podataka, kao i integritet podataka. Rezultat izvršavanja naredbe je takav da se promene iz jedne odredišne tabele spajaju sa izvornom tabelom.

Sintaksa je:

MERGE <target>
USING
   (select <expression> FROM <source> as <alias>
   ON <intersection>
WHEN MATCHED
   THEN <UPDATE | DELETE >
WHEN TARGET NOT MATCHED [AND <condition >]
   THEN <INSERT>
WHEN SOURCE NOT MATCHED [AND <condition >]
   THEN <UPDATE | DELETE >[;]


Primer:

CREATE TABLE LIST_STUDENT1
(
    RBR     int,
    Val     varchar(20)
 );
 
CREATE TABLE LIST_STUDENT2
(
    RBR     int,
    Val     varchar(20)
 );
 
INSERT INTO LIST_STUDENT1
values (1, 'Student1'),
          (2, 'Student2'),
          (3, 'Student3');
       
INSERT INTO LIST_STU2
values (1, 'NAJ_Uspesniji_Stud'),
          (4, 'StudentNN');
   
MERGE LIST_STUDENT1 as target
USING (SELECT * FROM dbo.LIST_STUDENT2)as source
ON source.RBR = target.RBR
WHEN MATCHED
THEN UPDATE SET target.Val=source.Val
WHEN NOT MATCHED
THEN INSERT VALUES (source.RBR, source.Val);

 

U primeru se pronađena vrsta ažurira i postignuta kozistentnost vrednost podataka između dve tabele u vrstama koje odgovaraju jedna drugoj.

Izvor uopšte ne mora da bude tabela, može da bude izvedena tabela definisana SQL naredbom. Znači moguće je više izmena u odredišnoj tabeli pomoću jedne naredbe ako  napisan upit prikaže konačan oblik podataka nakon izvršavanja izmena.

 

OUTPUT klauzula

Output klauzula omogućava da smestite željene vrednosti u tabeli koja je rezidentna u memoriji, nije permanentni deo strukture tabela i izvršavaju se samo onda kada to od njih zahtevate.

Primer:

use Northwind
set IDENTITY_INSERT Naziv_tabele on;
GO

DECLARE @InsertedData table
(
    kolona1    tip_podataka,
    kolona2    tip_podataka
 );
 
INSERT INTO Naziv_tabele(Kolona1, kolona2....kolona99)
OUTPUT INSERTED.kolona1, INSERTED.kolona1
        INTO @InsertedData
SELECT kol1, kol2... kol99
from tabela;
 
select * from @InsertedData;
 
SET IDENTITY_INSERT Naziv_tabele OFF;
go

 

U primeru se vidi kako se kreira specijalna tabela koja je rezidentna u memoriji i čije su vrednosti definisane vrednostima koje je neophodno uneti. Nakon izvršavanja upita, specijalna tabela se uklanja. Podaci se keširaju u promenljivu u obliku tabele, koja se naziva @InsertedData, vrednosti tabele koristimo u naredbi.

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Menjanje podataka pomoću akcionih upita 1
  • Menjanje podataka pomoću akcionih upita 2
  • Menjanje podataka pomoću akcionih upita 3