close

Transact SQL

Gå til navigation Gå til søg

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:

  • kontroloperatører,
  • lokale og globale variabler,
  • forskellige ekstra funktioner til behandling af strenge, datoer, matematik osv.,
  • understøttelse af Microsoft Windows-godkendelse.

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:

  • Tal - til lagring af numeriske variable (bit, int, tinyint, smallint, bigint, numerisk, decimal, penge, smallmoney, float, real).
  • Datoer - til lagring af datoer og klokkeslæt (datotid, lille datoklokkeslæt, dato, klokkeslæt, datotid2, datotidsforskydning).
  • Symboler - til lagring af karakterdata (char, nchar, varchar, nvarchar).
  • Binær - til lagring af binære data (binær, varbinær, billede [1] ).
  • Large - datatyper til lagring af store binære data (tekst, ntext, billede).
  • Special - pointere (markør), 16-byte hexadecimalt tal, der bruges til GUID (uniqueidentifier), linjeskiftstempel (tidsstempel), rækkeversion (rowversion), tabeller (tabel).

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:

  • @ er identifikatoren for en lokal variabel (bruger).
  • @@ er en global variabel identifikator (indbygget).
  • # er identifikatoren for den lokale tabel eller procedure.
  • ## er identifikatoren for den globale tabel eller procedure.
  • [ ] - identifikator til at gruppere ord i en variabel (de fungerer som standard " ").

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å

Noter

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

Litteratur