Transagera SQL
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 24 december 2021; kontroller kräver
2 redigeringar .
Transact-SQL ( T-SQL ) är en procedurförlängning av SQL -språket skapat av Microsoft (för Microsoft SQL Server ) och Sybase (för Sybase ASE ).
SQL har utökats med ytterligare funktioner som:
- kontrolloperatörer,
- lokala och globala variabler,
- olika tilläggsfunktioner för bearbetning av strängar, datum, matematik, etc.,
- stöd för Microsoft Windows-autentisering.
Transact-SQL-språket är nyckeln till att använda MS SQL Server. Alla applikationer som interagerar med en instans av MS SQL Server, oavsett implementering och användargränssnitt, skickar Transact-SQL-satser till servern.
Syntaxelement
Skriptdirektiv
Skriptdirektiv är specifika kommandon som endast används i MS SQL. Dessa kommandon hjälper servern att bestämma reglerna för att arbeta med skriptet och transaktioner. Typiska representanter: GO - informerar SQL Server-program om slutet på en sats av Transact-SQL-satser, EXEC (eller EXECUTE) - kör en procedur eller skalär funktion.
Kommentarer
Kommentarer används för att skapa förklaringar för skriptblock, samt för att tillfälligt inaktivera kommandon vid felsökning av ett skript. Kommentarer kan vara antingen infogade eller blockerade kommentarer:
-- - en radkommentar utesluter endast en rad som föregås av två minus från exekvering.
/* */ — blockkommentar utesluter från exekvering hela blocket av kommandon som ingår i den specificerade konstruktionen. Tillåter kapslade kommentarer.
Datatyper
Liksom programmeringsspråk har SQL olika datatyper för att lagra variabler:
- Tal - för att lagra numeriska variabler (bit, int, tinyint, smallint, bigint, numerisk, decimal, pengar, smallmoney, float, real).
- Datum - för att lagra datum och tider (datumtid, liten datumtid, datum, tid, datumtid2, förskjutning av datum och tid).
- Symboler - för att lagra teckendata (char, nchar, varchar, nvarchar).
- Binär - för lagring av binär data (binär, varbinär, bild [1] ).
- Large - datatyper för lagring av stora binära data (text, ntext, bild).
- Special - pekare (markör), 16-byte hexadecimalt nummer som används för GUID (uniqueidentifier), linjeändringsstämpel (tidsstämpel), radversion (radversion), tabeller (tabell).
Notera. För att använda ryska tecken (inte ASCII-kodningar) används datatyper med prefixet "n" (nchar, nvarchar, ntext), som kodar tecken i två byte. Med andra ord, för att arbeta med Unicode används datatyper med "n" (från ordet national). Unicode- strängkonstanter skrivs också med "n" i början.
Notera. För data med variabel längd används datatyper med prefixet "var". Datatyper utan prefixet "var" har en fast längd på minnesområdet, vars oanvända del är fylld med mellanslag eller nollor.
Identifierare
Identifierare är specialtecken som används med variabler för att identifiera deras typ eller för att gruppera ord i en variabel. Identifieringstyper:
- @ är identifieraren för en lokal variabel (användare).
- @@ är en global variabelidentifierare (inbyggd).
- # är identifieraren för den lokala tabellen eller proceduren.
- ## är identifieraren för den globala tabellen eller proceduren.
- [ ] - identifierare för att gruppera ord i en variabel (de fungerar som standard " ").
Variabler
Variabler används i skript och för att lagra temporär data. För att arbeta med en variabel måste den deklareras och deklarationen måste göras i transaktions- och instruktionspaketet där kommandot som använder denna variabel exekveras. Med andra ord, efter slutförandet av transaktionen, såväl som efter GO-kommandot, förstörs variabeln.
Deklarationen av en variabel utförs av kommandot DECLARE, variabelns värde ställs antingen in med kommandot SET eller SELECT:
ANVÄND TestDatabas
-- Deklarera variabler
DECLARE @EmpID int , @EmpName varchar ( 40 )
-- Ställ in värdet för @EmpID- variabeln
SET @EmpID = 1
-- Ställ in värdet för variabeln @EmpName
VÄLJ @EmpName = UserName FROM Users WHERE UserID = @EmpID
-- Skriver ut variabeln @EmpName i frågeresultatet
VÄLJ @EmpName AS [ Employee Name ]
GÅ
Notera. Det här exemplet använder gruppering av ord i en token - konstruktionen [Anställds namn] behandlas som en enda token, eftersom orden är omgivna av hakparenteser.
Operatörer
Operatörer är specialkommandon utformade för att utföra enkla operationer på variabler:
- Aritmetiska operatorer: "*" - multiplicera, "/" - dividera, "%" - resten av division, "+" - addera, "-" - subtrahera, "()" - parenteser.
- Jämförelseoperatorer: “=” – lika med, “>” – större än, “<” – mindre än, “>=” – större än eller lika, “ <=” mindre än eller lika, “<>” (“!=”) – inte lika, mellan (istället för ">=", "<=").
- Anslutningsoperatorer: "+" - anslutning (sammankoppling) av strängar.
- Logiska operatorer: "AND" - och, "ELLER" - eller, "NOT" - inte.
- Ställ in operatorer: "IN".
Systemfunktioner
Transact-SQL-specifikationen utökar avsevärt standardfunktionerna i SQL med inbyggda funktioner:
- Aggregatfunktioner är funktioner som arbetar på samlingar av värden och producerar ett enda värde. Typiska representanter: AVG - medelvärde för kolumnen, SUM - summa av kolumnen, MAX - maxvärde för kolumnen, MIN - minsta värde för kolumnen, ANTAL - antal kolumnelement.
- Skalära funktioner är funktioner som returnerar ett enda värde, som arbetar på skalär data eller ingen indata alls. Typiska representanter: DATEDIFF - skillnaden mellan datum, ABS - nummermodul, DB_NAME - databasnamn, USER_NAME - aktuellt användarnamn, VÄNSTER - del av strängen till vänster.
- Pekarfunktioner är funktioner som används som referenser till annan data. Typiska representanter: OPENXML - en pekare till datakällan i form av en XML-struktur, OPENQUERY - en pekare till datakällan i form av en annan fråga.
Notera. En komplett lista över funktioner finns i SQL Server-hjälpen.
Notera. Skalära funktioner inkluderar även globala variabler, som anropas av dubbelhunden "@@" i skripttexten.
Exempel:
ANVÄND TestDatabas
-- Använda en aggregatfunktion för att beräkna medellönen
VÄLJ AVG ( BaseSalary ) AS [ Genomsnittlig lön ] FROM Positioner
GÅ
-- Använda en skalär funktion för att få databasnamnet
VÄLJ DB_NAME () SOM [ Databasnamn ]
GÅ
-- Använda en skalär funktion för att få namnet på den aktuella användaren
DECLARE @MyUser char ( 30 )
SET @MyUser = USER_NAME ()
VÄLJ 'Den nuvarande användarens databasanvändarnamn är: ' + @MyUser
GÅ
-- Använda en pekarfunktion för att hämta data från en annan server
VÄLJ * FRÅN OPENQUERY ( OracleSvr , 'SELECT name, id FROM owner.titles' )
GÅ
Uttryck
Ett uttryck är en kombination av symboler och operatorer som tar ett skalärt värde som indata och returnerar ett annat värde eller utför någon åtgärd som utdata. Det finns 3 typer av uttryck i Transact-SQL: DDL, DCL och DML.
- DDL (Data Definition Language) - används för att skapa objekt i databasen. De viktigaste representanterna för denna klass är: CREATE - skapa objekt, ALTER - ändra objekt, DROP - ta bort objekt.
- DCL (Data Control Language) - utformat för att tilldela rättigheter till databasobjekt. De huvudsakliga representanterna för denna klass är: GRANT - tillstånd till ett objekt, DENY - förbud mot ett objekt, REVOKE - annullering av behörigheter och förbud mot ett objekt.
- DML (Data Manipulation Language) - används för att fråga och modifiera data. De viktigaste representanterna för denna klass: SELECT - dataurval, INSERT - datainfogning, UPDATE - datamodifiering, DELETE - dataradering.
Exempel:
ANVÄND TestDatabas
-- Använder DDL
SKAPA TABELL TempUsers ( UserID int , UserName nvarchar ( 40 ), DepartmentID int )
GÅ
-- Använder DCL
GE VAL PÅ användare TILL offentliga
GÅ
-- Använder DML
VÄLJ UserID , UserName + ' ' + UserSurname AS [ User Full Name ] FROM Users
GÅ
-- Använder DDL
SLÄPP TABELL TempUsers
GÅ
Kontroll av skriptkörning
Det finns speciella kommandon i Transact-SQL som låter dig kontrollera flödet av skriptkörning genom att avbryta det eller omdirigera det till rätt gren.
- Ett grupperingsblock är en struktur som kombinerar en lista med uttryck till ett logiskt block (BEGIN ... END).
- Ett villkorsblock är en struktur som kontrollerar om ett visst villkor är uppfyllt (IF ... ELSE).
- Cykelblock - en struktur som organiserar upprepningen av exekveringen av ett logiskt block (MED ... AVBRYT ... FORTSÄTT).
- Jump är ett kommando som utför övergången av skriptexekveringstråden till den angivna etiketten (GOTO).
- Delay är ett kommando som fördröjer exekveringen av ett skript (WAITFOR).
- Öka ett fel är ett kommando som genererar ett skriptexekveringsfel (RAISERROR).
Se även
Anteckningar
- ↑ Datatyper i T-SQL . info-comp.ru. Hämtad 12 oktober 2018. Arkiverad från originalet 13 oktober 2018. (ryska)
Litteratur
- Mike Ganderloy, Joseph Jorden, David Chantz. Del II. Transact-SQL programmeringsspråk // 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 Grunderna // MS SQL Server 2005 Databasprogrammering för proffs = Professional Microsoft SQL Server 2005 Programmering. - M . : "Dialektik" , 2007. - S. 86-129. — 1072 sid. - ISBN 978-5-8459-1329-6 .
- Vitaly Bochkarev. Just About Transact-SQL (25 januari 2010). Arkiverad från originalet den 14 februari 2012. (ryska)
- Microsoft Corporation. Kurs MS-2071 "Skapa frågor i Microsoft SQL Server 2000 med Transact-SQL" (eng.) (13 oktober 2004). Arkiverad från originalet den 14 februari 2012.