Transact SQL

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 24 decembrie 2021; verificările necesită 2 modificări .

Transact-SQL ( T-SQL ) este o extensie procedurală a limbajului SQL creat de Microsoft (pentru Microsoft SQL Server ) și Sybase (pentru Sybase ASE ).

SQL a fost extins cu funcții suplimentare, cum ar fi:

Limbajul Transact-SQL este cheia pentru utilizarea MS SQL Server. Toate aplicațiile care interacționează cu o instanță de MS SQL Server, indiferent de implementarea lor și de interfața cu utilizatorul, trimit instrucțiuni Transact-SQL către server.

Elemente de sintaxă

Directive Script

Directivele de script sunt comenzi specifice care sunt utilizate numai în MS SQL. Aceste comenzi ajută serverul să determine regulile de lucru cu scriptul și tranzacțiile. Reprezentanți tipici: GO - informează programele SQL Server despre sfârșitul unui lot de instrucțiuni Transact-SQL, EXEC (sau EXECUTE) - execută o procedură sau o funcție scalară.

Comentarii

Comentariile sunt folosite pentru a crea explicații pentru blocurile de script, precum și pentru a dezactiva temporar comenzile la depanarea unui script. Comentariile pot fi fie inline, fie comentarii blocate:

-- - un comentariu de linie exclude de la execuție doar o linie precedată de două minusuri.

/* */ — comentariul bloc exclude de la execuție întregul bloc de comenzi incluse în construcția specificată. Permite comentarii imbricate.

Tipuri de date

La fel ca limbajele de programare, SQL are diferite tipuri de date pentru stocarea variabilelor:

Notă. Pentru a utiliza caractere rusești (nu codificări ASCII), se folosesc tipuri de date cu prefixul „n” (nchar, nvarchar, ntext), care codifică caractere pe doi octeți. Cu alte cuvinte, pentru a lucra cu Unicode, sunt folosite tipuri de date cu „n” (din cuvântul national). Constantele șirului Unicode sunt de asemenea scrise cu „n” la început.

Notă. Pentru datele de lungime variabilă se folosesc tipuri de date cu prefixul „var”. Tipurile de date fără prefixul „var” au o lungime fixă ​​a zonei de memorie, a cărei parte neutilizată este umplută cu spații sau zerouri.

Identificatori

Identificatorii sunt caractere speciale care sunt folosite cu variabile pentru a identifica tipul lor sau pentru a grupa cuvinte într-o variabilă. Tipuri de identificare:

Variabile

Variabilele sunt folosite în scripturi și pentru a stoca date temporare. Pentru a lucra cu o variabilă, aceasta trebuie declarată, iar declarația trebuie făcută în pachetul de tranzacții și instrucțiuni în care este executată comanda care utilizează această variabilă. Cu alte cuvinte, după finalizarea tranzacției, precum și după comanda GO, variabila este distrusă.

Declararea unei variabile se realizează prin comanda DECLARE, valoarea variabilei este setată fie prin comanda SET, fie SELECT:

USE TestDatabase -- Declararea variabilelor DECLARE @EmpID int , @EmpName varchar ( 40 ) -- Setați valoarea variabilei @EmpID SET @EmpID = 1 -- Setați valoarea variabilei @EmpName SELECT @EmpName = UserName FROM Users WHERE UserID = @EmpID -- Imprimarea variabilei @EmpName în rezultatul interogării SELECTAȚI @EmpName AS [ Numele angajatului ] MERGE

Notă. Acest exemplu folosește gruparea cuvintelor într-un simbol - constructul [Numele angajatului] este tratat ca un singur simbol, deoarece cuvintele sunt cuprinse între paranteze drepte.

Operatori

Operatorii sunt comenzi speciale concepute pentru a efectua operații simple asupra variabilelor:

  • Operatori aritmetici: "*" - înmulțire, "/" - împărțire, "%" - restul împărțirii, "+" - adunare, "-" - scadere, "()" - paranteze.
  • Operatori de comparație: „=” – este egal, „>” – mai mare decât, „<” – mai mic decât, „>=” – mai mare sau egal, „ <=” mai mic sau egal, „<>” (“!=”) – nu este egal, între (în loc de „>=", „<=").
  • Operatori de conexiune: "+" - conexiune (concatenare) de șiruri.
  • Operatori logici: "ȘI" - și, "SAU" - sau, "NU" - nu.
  • Setați operatori: „IN”.

Funcțiile sistemului

Specificația Transact-SQL extinde foarte mult caracteristicile standard ale SQL cu funcții încorporate:

  • Funcțiile agregate sunt funcții care operează pe colecții de valori și produc o singură valoare. Reprezentanți tipici: AVG - valoarea medie a coloanei, SUM - suma coloanei, MAX - valoarea maximă a coloanei, MIN - valoarea minimă a coloanei, COUNT - numărul elementelor coloanei.
  • Funcțiile scalare sunt funcții care returnează o singură valoare, funcționând pe date scalare sau fără nicio intrare. Reprezentanți tipici: DATEDIFF - diferența dintre date, ABS - modul de număr, DB_NAME - numele bazei de date, USER_NAME - numele utilizatorului curent, LEFT - parte a șirului din stânga.
  • Funcțiile pointer sunt funcții care sunt folosite ca referințe la alte date. Reprezentanți tipici: OPENXML - un pointer către sursa de date sub forma unei structuri XML, OPENQUERY - un pointer către sursa de date sub forma unei alte interogări.

Notă. O listă completă de funcții poate fi găsită în Ajutorul SQL Server.

Notă. Funcțiile scalare includ și variabile globale, care sunt numite de „@@” în textul scriptului.

Exemplu:

USE TestDatabase -- Utilizarea unei funcții agregate pentru a calcula salariul mediu SELECTAȚI AVG ( Salariul de bază ) AS [ Salariul mediu ] FROM Poziții MERGE -- Utilizarea unei funcții scalare pentru a obține numele bazei de date SELECTAȚI DB_NAME () AS [ Numele bazei de date ] MERGE -- Utilizarea unei funcții scalare pentru a obține numele utilizatorului curent DECLARE @MyUser char ( 30 ) SET @MyUser = USER_NAME () SELECTează numele de utilizator al bazei de date „Utilizatorul curent” este: „ + @MyUser MERGE -- Utilizarea unei funcții pointer pentru a obține date de la un alt server SELECT * FROM OPENQUERY ( OracleSvr , 'SELECT name, id FROM owner.titles' ) MERGE

Expresii

O expresie este o combinație de simboluri și operatori care ia o valoare scalară ca intrare și returnează o valoare diferită sau efectuează o acțiune ca ieșire. Există 3 tipuri de expresii în Transact-SQL: DDL, DCL și DML.

  • DDL (Data Definition Language) - folosit pentru a crea obiecte în baza de date. Principalii reprezentanți ai acestei clase sunt: ​​CREATE - crearea de obiecte, ALTER - schimbarea obiectelor, DROP - ștergerea obiectelor.
  • DCL (Data Control Language) - conceput pentru a atribui drepturi obiectelor bazei de date. Principalii reprezentanți ai acestei clase sunt: ​​GRANT - permisiunea unui obiect, DENY - interdicția unui obiect, REVOKE - anularea permisiunilor și interzicerea unui obiect.
  • DML (Data Manipulation Language) - folosit pentru interogarea și modificarea datelor. Principalii reprezentanți ai acestei clase: SELECT - selectarea datelor, INSERT - inserarea datelor, UPDATE - modificarea datelor, DELETE - ștergerea datelor.

Exemplu:

USE TestDatabase -- Folosind DDL CREATE TABLE TempUsers ( ID utilizator int , Nume utilizator nvarchar ( 40 ), ID departament int ) MERGE -- Folosind DCL Acordați SELECTARE PE utilizatorilor către public MERGE -- Folosind DML SELECT UserID , UserName + ' ' + UserSurname AS [ User Full Name ] FROM Users MERGE -- Folosind DDL DROP TABLE TempUsers MERGE

Controlul execuției scriptului

Există comenzi speciale în Transact-SQL care vă permit să controlați fluxul de execuție a scriptului prin întreruperea acestuia sau redirecționarea către ramura corectă.

  • Un bloc de grupare este o structură care combină o listă de expresii într-un singur bloc logic (BEGIN ... END).
  • Un bloc de condiții este o structură care verifică dacă o anumită condiție este îndeplinită (IF ... ELSE).
  • Bloc de ciclu - o structură care organizează repetarea execuției unui bloc logic (ÎN CÂND ... ÎNTREBUIE ... CONTINUAȚI).
  • Jump este o comandă care execută tranziția firului de execuție a scriptului la eticheta specificată (GOTO).
  • Delay este o comandă care întârzie execuția unui script (WAITFOR).
  • Raise an error este o comandă care generează o eroare de execuție a scriptului (RAISERROR).

Vezi și

  • PL/SQL

Note

  1. Tipuri de date în T-SQL . info-comp.ru. Consultat la 12 octombrie 2018. Arhivat din original la 13 octombrie 2018.

Literatură

  • Mike Ganderloy, Joseph Jorden, David Chantz. Partea a II-a. Limbajul de programare Transact-SQL // Mastering Microsoft SQL Server 2005 = Mastering Microsoft SQL Server 2005. - M .: "Dialectics" , 2007. - P. 139-280. — ISBN 0-7821-4380-6 .
  • Robert Vieira. Capitolul 3. Bazele T-SQL // Programarea bazelor de date MS SQL Server 2005 pentru profesioniști = Programare profesională Microsoft SQL Server 2005. - M . : „Dialectica” , 2007. - S. 86-129. — 1072 p. - ISBN 978-5-8459-1329-6 .
  • Vitali Bochkarev. Doar despre Transact-SQL (25 ianuarie 2010). Arhivat din original pe 14 februarie 2012.
  • Microsoft Corporation. Curs MS-2071 „Crearea de interogări în Microsoft SQL Server 2000 folosind Transact-SQL”  (Eng.) (13 octombrie 2004). Arhivat din original pe 14 februarie 2012.