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:
- 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 ]
GÅ
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
GÅ
-- Brug af en skalarfunktion til at få databasenavnet
VÆLG DB_NAME () SOM [ Databasenavn ]
GÅ
-- Brug af en skalarfunktion til at få navnet på den aktuelle bruger
DECLARE @MyUser char ( 30 )
SET @MyUser = USER_NAME ()
VÆLG 'Den aktuelle bruger's databasebrugernavn er: ' + @MyUser
GÅ
-- Brug af en markørfunktion til at hente data fra en anden server
VÆLG * FRA OPENQUERY ( OracleSvr , 'SELECT name, id FROM owner.titles' )
GÅ
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 )
GÅ
-- Bruger DCL
TILDEL VALG PÅ Brugere TIL offentligt
GÅ
-- Bruger DML
VÆLG bruger- ID , brugernavn + ' ' + brugerefternavn AS [ Fuldt brugernavn ] FRA brugere
GÅ
-- Brug af DDL
DROP TABEL TempUsers
GÅ
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
- ↑ Datatyper i T-SQL . info-comp.ru. Hentet 12. oktober 2018. Arkiveret fra originalen 13. oktober 2018. (Russisk)
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. (Russisk)
- 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.
Microsoft SQL Server |
---|
Udviklingsvirksomheder _ |
|
---|
Versioner | Hoved |
- 1.0
- 1.1
- 1.11
- 4.2
- 4.21
- 6,0
- 6.5
- 7,0
- 2000
- 2005
- 2008
- 2008R2
- 2012
- 2014
- 2016
|
---|
Forkortet |
|
---|
Mobil |
- 2005 Mobile Edition
- 2005 Compact Edition
- Kompakt 3.5
- Kompakt 4.0
|
---|
Specialiseret |
|
---|
|
---|
Tjenester |
|
---|
Hjælpeprogrammer |
|
---|
SQL-udvidelser |
|
---|
Derudover |
|
---|