Tranzakció-SQL

A Transact-SQL (T-SQL) a Sybase és a Microsoft nyelvű SQL kiterjesztés tulajdonosa . A Transact-SQL-t eredetileg a Sybase cég fejlesztette ki, azonos nevű adatbázis-motorjának legkorábbi verzióiból. Az Oracle PL / SQL-jéhez hasonlóan a Transact-SQL biztosította az eszközöket a DBMS alapvető funkcióinak kiterjesztésére, "tárolt eljárásoknak" nevezett programokon keresztül. A lefordított forráskód tulajdonképpen az adatbázisban van tárolva, szemben a klasszikus programozási nyelven írt programokkal, amelyeknek egyrészt a forráskódja, másrészt a lefordított kód a fájlrendszer fájljaiban tárolódik.

Amikor a Microsoft bővíteni akarta szoftverkínálatát egy relációs DBMS-re, akkor megállapodást kötött az akkori egyik szereplővel, a kihívóval, főként az Oracle, az RTI Ingres, az Informix: Sybase mögött. A Sybase DBMS-t a Windows rendszerre portolták. A Microsoft fokozatosan szerzett know-how-t a relációs DBMS-ben, és a Sybase törzsből kifejlesztette saját adatbázis-motorját, a Microsoft SQL Server-t. A Sybase a maga részéről továbbfejlesztette DBMS-jét, amely azóta Adaptive Server Enterprise névre vált . A Transact-SQL ezért ma a Microsoft SQL Server és a Sybase Adaptive Server Enterprise DBMS társított programozási nyelv .

Az SQL-hez képest a T-SQL a következő szolgáltatásokat adja hozzá:

Eljárási programozás

A fő kulcs bit procedurális utasítások-SQL BEGINés END, BREAK, CONTINUE, GOTO, IFés ELSE, RETURN, WAITFOR, és WHILE.

IFés ELSElehetővé teszik a feltételes kivégzéseket. Az alábbi példában a "Hétvégén vagyunk" felirat jelenik meg, ha a D-nap a hétvégéhez tartozik, a "Héten vagyunk" a hét egyik napján.

IF DATEPART(dw, GETDATE()) = 6 OR DATEPART(dw, GETDATE()) = 7 PRINT 'Nous sommes en week-end.' ELSE PRINT 'Nous sommes en semaine.'

BEGINés ENDlehatárol egy utasításblokkot. Ha több feltételre van szükség egy feltételes blokkban, akkor a BEGIN és az END parancsokat kell használnia:

IF DATEPART(dw, GETDATE()) = 6 OR DATEPART(dw, GETDATE()) = 7 BEGIN PRINT 'Nous sommes en week-end.' PRINT 'Faites une pause !' END ELSE BEGIN PRINT 'Nous sommes en semaine.' PRINT 'Vite, au boulot !' END

WAITFOR lehetővé teszi az eljárás késleltetését, miközben egy bizonyos időre vagy a nap egy pontos pillanatára vár.

RETURNa tárolt eljárás végrehajtásának azonnali leállítására vagy egy függvény eredményének visszaadására szolgál.

BREAKegy ciklusban végzi a blokkot WHILE, miközben arra CONTINUEkényszeríti, hogy a kör új iterációját hajtsa végre.

Operátorok

Számtani operátorok

A Transact-SQL lehetővé teszi a klasszikus számtani operátorok használatát.

  • + ( Hozzáadás )
  • - ( Kivonás )
  • * ( Szorzás )
  • / ( Osztály )
  • % ( Modulo )

Összehasonlító operátorok

  • = ( Egyenlő )
  • > ( Nagyobb, mint )
  • <( Kevesebb mint )
  • > = ( Nagyobb vagy egyenlő )
  • <= ( Kisebb vagy egyenlő )
  • ! = ( Nem egyenlő )
  • <> ( Eltér ettől ), az ISO nem szabványosítja
  • ! <( Nem kevesebb, mint ), az ISO nem szabványosítja
  • !> ( Nem nagyobb, mint ), az ISO nem szabványosítja
  • nulla ()

Helyi változók

A helyi változókat gyakran számlálóként használják a típusú ciklusokban WHILEvagy blokkokban IF ... ELSE. Használhatók parancsokban vagy tárolt eljárásokban . Az eljárás ezeket a változókat végrehajtáskor automatikusan és nem interaktív módon használja. A helyi változók bárhol használhatók, ahol a Transact-SQL szintaxis egy kifejezés használatát igényli .

Nyilatkozat

A helyi változók deklarálása hasonló a klasszikus imperatív nyelvekéhez . A következő szintaxist követi:

declare @nom_variable type_données [, @nom_variable type_données]...

Példák:

declare @a int declare @b char(20) declare @c float

VAGY

declare @a int, @b char(20), @c float

A második szintaxis a memória és a teljesítmény szempontjából hatékonyabb.

Használja szubrutinokban

A helyi változónak értéket rendelő alprogramnak csak egy értéket kell visszaadnia.

Példák:

declare @veryhigh money select @veryhigh = max(price) from titles if @veryhigh > $20 print "Aïe!"


declare @one varchar(18), @two varchar(18) select @one = "un", @two = "deux" if @one = "un" print @one if @two = "deux" print @two


declare @tcount int, @pcount int select @tcount = (select count(*) from titles), @pcount = (select count(*) from publishers) select @tcount, @pcount

NULL érték

A helyi változók deklaráláskor kezdetben NULL értékűek. A SELECT parancsból NULL is lehetnek. Mivel a NULL speciális érték, a NULL értékű változók és az egyéb NULL értékek összehasonlításához speciális szabályokat kell követni, amelyeket az alábbi táblázat foglal össze.
Egy kifejezés lehet változó , állandó vagy a kettő kombinációja, amely aritmetikai operátorokat tartalmaz .

A nullértékek összehasonlítása
Összehasonlítás típusa Operátor = Operátorok <,>, <= ,! = ,! <,!>, <>
Két null oszlop összehasonlítása HAMIS HAMIS
A NULL érték oszlop és a NULL kifejezés összehasonlítása HAMIS HAMIS
A null kifejezés és a null oszlop összehasonlítása HAMIS HAMIS
Két NULL kifejezés összehasonlítása IGAZ HAMIS

TÖRLÉS és FRISSÍTÉS

A Transact-SQL lehetővé teszi egy záradék hozzáadását FROMa műveletekhez DELETEés UPDATEa táblák összekapcsolását.

Az alábbi példa törölni fogja a táblázatból utilisateurazokat, amelyek " Függőben " zászlóval rendelkeznek .

DELETE utilisateur FROM utilisateur as u JOIN drapeau_utilisateur as d ON u.id = d.id WHERE d.nom = 'En attente'

Megjegyzések és hivatkozások

  1. https://database.guide/what-is-t-sql/

Lásd is

Külső linkek