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:
- operatori de control,
- variabile locale și globale,
- diverse funcții suplimentare pentru procesarea șirurilor de caractere, date, matematică etc.,
- suport pentru autentificare Microsoft Windows.
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:
- Numere - pentru stocarea variabilelor numerice (bit, int, tinyint, smallint, bigint, numeric, decimal, money, smallmoney, float, real).
- Date - pentru stocarea datelor și orelor (datetime, smalldatetime, date, time, datetime2, datetimeoffset).
- Simboluri - pentru stocarea datelor de caractere (char, nchar, varchar, nvarchar).
- Binar - pentru stocarea datelor binare (binare, varbinare, imagine [1] ).
- Large - tipuri de date pentru stocarea datelor binare mari (text, ntext, imagine).
- Special - pointeri (cursor), număr hexazecimal de 16 octeți care este utilizat pentru GUID (identificator unic), ștampilă de schimbare a liniilor (marca temporală), versiunea rândului (versiunea rândului), tabele (tabel).
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:
- @ este identificatorul unei variabile locale (utilizator).
- @@ este un identificator global de variabilă (încorporat).
- # este identificatorul tabelului sau procedurii locale.
- ## este identificatorul tabelului sau procedurii globale.
- [ ] - identificator pentru gruparea cuvintelor într-o variabilă (funcționează ca standardul „ „).
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
Note
- ↑ Tipuri de date în T-SQL . info-comp.ru. Consultat la 12 octombrie 2018. Arhivat din original la 13 octombrie 2018. (Rusă)
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. (Rusă)
- 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.
Microsoft SQL Server |
---|
Companii de dezvoltare |
|
---|
Versiuni | Principal |
- 1.0
- 1.1
- 1.11
- 4.2
- 4.21
- 6.0
- 6.5
- 7.0
- 2000
- 2005
- 2008
- 2008 R2
- 2012
- 2014
- 2016
|
---|
Abreviat |
|
---|
Mobil |
- Ediția mobilă 2005
- Ediția compactă 2005
- Compact 3.5
- Compact 4.0
|
---|
De specialitate |
|
---|
|
---|
Servicii |
|
---|
Utilități |
|
---|
Extensii SQL |
|
---|
În plus |
|
---|