Transact SQL

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. december 2021; checks kræver 2 redigeringer .

Transact-SQL ( T-SQL ) er en proceduremæssig udvidelse af SQL -sproget skabt af Microsoft (til Microsoft SQL Server ) og Sybase (til Sybase ASE ).

SQL er blevet udvidet med yderligere funktioner såsom:

Transact-SQL-sproget er nøglen til at bruge MS SQL Server. Alle applikationer, der interagerer med en instans af MS SQL Server, uanset deres implementering og brugergrænseflade, sender Transact-SQL-sætninger til serveren.

Syntakselementer

Script-direktiver

Script-direktiver er specifikke kommandoer, der kun bruges i MS SQL. Disse kommandoer hjælper serveren med at bestemme reglerne for arbejde med scriptet og transaktioner. Typiske repræsentanter: GO - informerer SQL Server-programmer om slutningen af ​​en batch af Transact-SQL-sætninger, EXEC (eller EXECUTE) - udfører en procedure eller skalarfunktion.

Kommentarer

Kommentarer bruges til at skabe forklaringer til scriptblokke, samt til midlertidigt at deaktivere kommandoer ved fejlretning af et script. Kommentarer kan enten være inline eller blokere kommentarer:

-- - en linjekommentar udelukker kun en linje fra udførelse efter to minusser.

/* */ — blokkommentar udelukker fra eksekvering hele blokken af ​​kommandoer, der er indeholdt i den specificerede konstruktion. Tillader indlejrede kommentarer.

Datatyper

Ligesom programmeringssprog har SQL forskellige datatyper til lagring af variabler:

Bemærk. For at bruge russiske tegn (ikke ASCII-kodninger) bruges datatyper med præfikset "n" (nchar, nvarchar, ntext), som koder tegn i to bytes. Med andre ord, for at arbejde med Unicode, bruges datatyper med "n" (fra ordet national). Unicode- strengkonstanter skrives også med "n" i begyndelsen.

Bemærk. For data af variabel længde anvendes datatyper med præfikset "var". Datatyper uden præfikset "var" har en fast længde af hukommelsesområdet, hvis ubrugte del er fyldt med mellemrum eller nuller.

Identifikatorer

Identifikatorer er specialtegn, der bruges sammen med variabler til at identificere deres type eller til at gruppere ord i en variabel. Identifikatortyper:

Variabler

Variabler bruges i scripts og til at gemme midlertidige data. For at arbejde med en variabel skal den deklareres, og erklæringen skal foretages i den transaktions- og instruktionspakke, hvori kommandoen, der bruger denne variabel, udføres. Med andre ord, efter afslutningen af ​​transaktionen, såvel som efter GO-kommandoen, ødelægges variablen.

Deklarationen af ​​en variabel udføres af kommandoen DECLARE, værdien af ​​variablen indstilles enten af ​​kommandoen SET eller SELECT:

BRUG TestDatabase -- Erklæring af variabler DECLARE @EmpID int , @EmpName varchar ( 40 ) -- Indstil værdien af ​​@EmpID- variablen INDSTIL @EmpID = 1 -- Indstil værdien for @EmpName- variablen VÆLG @EmpName = Brugernavn FRA Brugere WHERE UserID = @EmpID -- Udskrivning af @ EmpName- variablen i forespørgselsresultatet VÆLG @EmpName AS [ Medarbejdernavn ]

Bemærk. Dette eksempel bruger gruppering af ord i et token - [Medarbejdernavn]-konstruktionen behandles som et enkelt token, da ordene er omgivet af firkantede parenteser.

Operatører

Operatører er specielle kommandoer designet til at udføre simple operationer på variabler:

  • Aritmetiske operatorer: "*" - gange, "/" - dividere, "%" - resten af ​​division, "+" - addere, "-" - subtrahere, "()" - parenteser.
  • Sammenligningsoperatorer: "=" - lig med, ">" - større end, "<" - mindre end, ">=" - større end eller lig, " <=" mindre end eller lig, "<>" ("!=") – ikke ens, mellem (i stedet for ">=", "<=").
  • Forbindelsesoperatorer: "+" - forbindelse (sammenkædning) af strenge.
  • Logiske operatorer: "AND" - og "ELLER" - eller "NOT" - ikke.
  • Indstil operatører: "IN".

Systemfunktioner

Transact-SQL-specifikationen udvider i høj grad standardfunktionerne i SQL med indbyggede funktioner:

  • Aggregerede funktioner er funktioner, der opererer på samlinger af værdier og producerer en enkelt værdi. Typiske repræsentanter: AVG - gennemsnitsværdi af kolonnen, SUM - sum af kolonne, MAX - maksimal værdi af kolonne, MIN - minimumværdi af kolonne, COUNT - antal kolonneelementer.
  • Skalarfunktioner er funktioner, der returnerer en enkelt værdi, der opererer på skalardata eller slet ingen input. Typiske repræsentanter: DATEDIFF - forskellen mellem datoer, ABS - talmodul, DB_NAME - databasenavn, USER_NAME - nuværende brugernavn, VENSTRE - del af strengen til venstre.
  • Pointerfunktioner er funktioner, der bruges som referencer til andre data. Typiske repræsentanter: OPENXML - en pointer til datakilden i form af en XML-struktur, OPENQUERY - en pointer til datakilden i form af en anden forespørgsel.

Bemærk. En komplet liste over funktioner kan findes i SQL Server Hjælp.

Bemærk. Skalarfunktioner inkluderer også globale variabler, som kaldes af dobbelthunden "@@" i scriptteksten.

Eksempel:

BRUG TestDatabase -- Brug af en aggregeret funktion til at beregne den gennemsnitlige løn VÆLG AVG ( Grundløn ) AS [ Gennemsnitsløn ] FRA Stillinger -- Brug af en skalarfunktion til at databasenavnet VÆLG DB_NAME () SOM [ Databasenavn ] -- Brug af en skalarfunktion til at navnet på den aktuelle bruger DECLARE @MyUser char ( 30 ) SET @MyUser = USER_NAME () VÆLG 'Den aktuelle bruger's databasebrugernavn er: ' + @MyUser -- Brug af en markørfunktion til at hente data fra en anden server VÆLG * FRA OPENQUERY ( OracleSvr , 'SELECT name, id FROM owner.titles' )

Udtryk

Et udtryk er en kombination af symboler og operatorer, der tager en skalarværdi som input og returnerer en anden værdi eller udfører en handling som output. Der er 3 typer udtryk i Transact-SQL: DDL, DCL og DML.

  • DDL (Data Definition Language) - bruges til at oprette objekter i databasen. De vigtigste repræsentanter for denne klasse er: CREATE - oprettelse af objekter, ALTER - ændring af objekter, DROP - sletning af objekter.
  • DCL (Data Control Language) - designet til at tildele rettigheder til databaseobjekter. De vigtigste repræsentanter for denne klasse er: GRANT - tilladelse til et objekt, DENY - forbud mod et objekt, REVOKE - annullering af tilladelser og forbud mod et objekt.
  • DML (Data Manipulation Language) - bruges til at forespørge og ændre data. De vigtigste repræsentanter for denne klasse: SELECT - datavalg, INSERT - dataindsættelse, UPDATE - datamodifikation, DELETE - datasletning.

Eksempel:

BRUG TestDatabase -- Brug af DDL OPRET TABEL TempUsers ( BrugerID int , Brugernavn nvarchar ( 40 ), DepartmentID int ) -- Bruger DCL TILDEL VALG Brugere TIL offentligt -- Bruger DML VÆLG bruger- ID , brugernavn + ' ' + brugerefternavn AS [ Fuldt brugernavn ] FRA brugere -- Brug af DDL DROP TABEL TempUsers

Kontrol af scriptudførelse

Der er specielle kommandoer i Transact-SQL, som giver dig mulighed for at kontrollere flowet af scriptudførelse ved at afbryde det eller omdirigere det til den korrekte gren.

  • En grupperingsblok er en struktur, der kombinerer en liste af udtryk til én logisk blok (BEGIN ... END).
  • En betingelsesblok er en struktur, der kontrollerer, om en bestemt betingelse er opfyldt (HVIS ... ELSE).
  • Cyklusblok - en struktur, der organiserer gentagelsen af ​​udførelsen af ​​en logisk blok (MENS ... BREAK ... FORTSÆT).
  • Jump er en kommando, der udfører overgangen af ​​scriptudførelsestråden til den angivne etiket (GOTO).
  • Delay er en kommando, der forsinker udførelsen af ​​et script (WAITFOR).
  • Hæv en fejl er en kommando, der genererer en scriptudførelsesfejl (RAISERROR).

Se også

  • PL/SQL

Noter

  1. Datatyper i T-SQL . info-comp.ru. Hentet 12. oktober 2018. Arkiveret fra originalen 13. oktober 2018.

Litteratur

  • Mike Ganderloy, Joseph Jorden, David Chantz. Del II. Transact-SQL programmeringssprog // Mastering Microsoft SQL Server 2005 = Mastering Microsoft SQL Server 2005. - M .: "Dialectics" , 2007. - S. 139-280. — ISBN 0-7821-4380-6 .
  • Robert Vieira. Kapitel 3. T-SQL Grundlæggende // MS SQL Server 2005 Database Programmering for Professionals = Professionel Microsoft SQL Server 2005 Programmering. - M . : "Dialektik" , 2007. - S. 86-129. — 1072 s. - ISBN 978-5-8459-1329-6 .
  • Vitaly Bochkarev. Bare om Transact-SQL (25. januar 2010). Arkiveret fra originalen den 14. februar 2012.
  • Microsoft Corporation. Kursus MS-2071 "Oprettelse af forespørgsler i Microsoft SQL Server 2000 ved hjælp af Transact-SQL"  (eng.) (13. oktober 2004). Arkiveret fra originalen den 14. februar 2012.