SQL-syntax
Syntaxen för SQL- programmeringsspråket definieras och underhålls av ISO/IEC SC 32 som en del av ISO /IEC 9075 . Denna standard är inte fritt tillgänglig. Trots existensen av standarden är SQL-koden inte helt portabel mellan olika databassystem utan justeringar.
Språkelement
SQL-språket är uppdelat i flera språkelement, inklusive:
-
Nyckelord är ord som är definierade i SQL-språket. De är antingen reserverade (t.ex.
SELECT
,COUNT
ochYEAR
), eller icke-reserverade (t.ex.ASC
,DOMAIN
ochKEY
). Lista över reserverade SQL-ord . -
Identifierare är namn på databasobjekt, som tabeller, kolumner och scheman. En identifierare kanske inte är lika med ett reserverat nyckelord, såvida det inte är en avgränsad identifierare. Avgränsade identifierare betyder identifierare omslutna av dubbla citattecken. De kan innehålla tecken som normalt inte stöds i SQL-identifierare, och de kan vara identiska med ett reserverat ord, t.ex. en kolumn med namnet
YEAR
anges som"YEAR"
.- I MySQL är dubbla citattecken stränga bokstavliga avgränsare som standard istället. Aktivering av
ansi_quotes
SQL-läge upprätthåller SQL-standardbeteendet. Dessa kan också användas oavsett detta läge genom backticks: `YEAR`
.
- I MySQL är dubbla citattecken stränga bokstavliga avgränsare som standard istället. Aktivering av
- Klausuler , som är ingående komponenter i uttalanden och frågor. (I vissa fall är dessa valfria.)
- Uttryck , som kan producera antingen skalära värden eller tabeller som består av kolumner och rader med data
- Predikat , som specificerar villkor som kan utvärderas till SQL- logik med tre värden (3VL) (sant/falskt/okänt) eller booleska sanningsvärden och används för att begränsa effekterna av satser och frågor, eller för att ändra programflödet.
- Frågor , som hämtar data baserat på specifika kriterier. Detta är en viktig del av SQL .
-
Uttalanden , som kan ha en bestående effekt på scheman och data, eller som kan styra transaktioner, programflöde, anslutningar, sessioner eller diagnostik.
- SQL-satser inkluderar även semikolon (";")-satsterminator. Även om det inte krävs på varje plattform, definieras det som en standarddel av SQL-grammatiken.
- Obetydligt blanksteg ignoreras i allmänhet i SQL-satser och frågor, vilket gör det lättare att formatera SQL-kod för läsbarhet.
Operatörer
Operatör | Beskrivning | Exempel |
---|---|---|
=
|
Lika med |
Författare = 'Alcott'
|
<>
|
Inte lika med (många DBMS accepterar != förutom <> ) |
Avdelning <> 'Försäljning'
|
>
|
Större än |
Hire_Date > '2012-01-31'
|
<
|
Mindre än |
Bonus < 50 000 . 00
|
>=
|
Större än eller lika med |
Beroende >= 2
|
<=
|
Mindre än eller lika |
0 Betygsätt <= . 05
|
[ INTE ] MELLAN [ SYMMETRIC ]
|
Mellan ett inkluderande intervall. SYMMETRIC inverterar intervallgränserna om den första är högre än den andra. |
Kostnad MELLAN 100 . 00 OCH 500 . 00
|
[ INTE ] GILLA [ ESCAPE ]
|
Börjar med ett teckenmönster |
Full_Name LIKE "Will%"
|
Innehåller ett teckenmönster |
Full_Name LIKE '%Will%'
|
|
[ INTE ] IN
|
Lika med ett av flera möjliga värden |
DeptCode IN ( 101 , 103 , 209 )
|
ÄR [ INTE ] NULL
|
Jämför med null (data saknas) |
Adressen ÄR INTE NULL
|
ÄR [ INTE ] SANT eller ÄR [ INTE ] FALSK
|
Booleskt sanningsvärdetest |
PaidVacation ÄR SANT
|
SKILJER INTE FRÅN _
|
Är lika med värde eller båda är nollvärden (data saknas) |
Skuld skiljer sig INTE FRÅN - Fordringar
|
SOM
|
Används för att ändra ett kolumnnamn när du visar resultat |
VÄLJ medarbetare AS avdelning1
|
Andra operatörer har ibland föreslagits eller implementerats, som skyline-operatören (för att bara hitta de rader som inte är "sämre" än alla andra).
SQL har case
-uttrycket, som introducerades i SQL-92 . I sin mest allmänna form, som kallas ett "sökt fall" i SQL-standarden:
0
0
FALL NÄR n > DÅ "positiv" NÄR n < DÅ "negativ" ANNARS "noll" SLUT
SQL testar WHEN-
villkoren i den ordning de visas i källan. Om källan inte anger ett ELSE
-uttryck, har SQL som standard ELSE NULL
. En förkortad syntax som kallas "enkla skiftlägen" kan också användas:
FALL n NÄR 1 DÅ "En" NÄR 2 DÅ "Två" ANNAT "Jag kan inte räkna så högt" SLUT
Den här syntaxen använder implicita likhetsjämförelser, med de vanliga varningarna för jämförelse med NULL .
Det finns två korta former för speciella CASE-
uttryck: COALESCE
och NULLIF
.
COALESCE -uttrycket returnerar värdet för den första icke-NULL-operanden, hittad genom att arbeta från vänster till höger, eller NULL om alla operander är lika med NULL .
SAMMA ( x1 , x2 )
är ekvivalent med:
FALL NÄR x1 INTE ÄR NULL DÅ SLUTAR x1 ANNARS x2
NULLIF -
uttrycket har två operander och returnerar NULL om operanderna har samma värde, annars har det värdet av den första operanden.
NULLIF ( x1 , x2 )
är ekvivalent med
FALL NÄR x1 = x2 SÅ NULL ANNAT x1 SLUT
Kommentarer
Standard SQL tillåter två format för kommentarer : -- comment
, som avslutas med den första nya raden , och /* comment */
, som kan sträcka sig över flera rader.
Frågor
Den vanligaste operationen i SQL, frågan, använder sig av den deklarativa SELECT-
satsen. SELECT
hämtar data från en eller flera tabeller eller uttryck. Standard SELECT-
satser har inga bestående effekter på databasen. Vissa icke-standardiserade implementeringar av SELECT
kan ha beständiga effekter, som SELECT INTO
-syntaxen som finns i vissa databaser.
Frågor tillåter användaren att beskriva önskad data, lämnar databashanteringssystemet (DBMS) för att planera , optimera och utföra de fysiska operationerna som krävs för att producera det resultatet som den väljer.
En fråga innehåller en lista med kolumner som ska inkluderas i det slutliga resultatet, normalt omedelbart efter nyckelordet SELECT .
En asterisk (" *
") kan användas för att ange att frågan ska returnera alla kolumner i de efterfrågade tabellerna. SELECT
är den mest komplexa satsen i SQL, med valfria nyckelord och satser som inkluderar:
- FROM
-
satsen, som indikerar tabell(er) att hämta data från. FROM-
satsen kan inkludera valfriaJOIN-
undersatser för att specificera reglerna för sammanfogning av tabeller. - WHERE
-
satsen innehåller ett jämförelsepredikat, som begränsar raderna som returneras av frågan. WHERE-
satsen eliminerar alla rader från resultatuppsättningen där jämförelsepredikatet inte utvärderas till True. - GROUP
BY-
satsen projicerar rader med gemensamma värden till en mindre uppsättning rader. [ förtydligande behövs ]GROUP BY
används ofta i kombination med SQL-aggregationsfunktioner eller för att eliminera dubbletter av rader från en resultatuppsättning. WHERE-
satsen tillämpas föreGROUP BY-
satsen. - HAVING
-
satsen inkluderar ett predikat som används för att filtrera rader som härrör frånGROUP BY-
satsen. Eftersom den verkar på resultaten avGROUP BY-
satsdelen, kan aggregeringsfunktioner användas iHAVING-
satspredikatet. - ORDER
BY
-satsen identifierar vilka kolumner som ska användas för att sortera de resulterande data och i vilken riktning de ska sorteras (stigande eller fallande). Utan enORDER BY-
sats är ordningen på rader som returneras av en SQL-fråga odefinierad. - Nyckelordet
DISTINCT
eliminerar dubbletter av data. - OFFSET
-
satsen anger antalet rader som ska hoppa över innan man börjar returnera data. - FETCH
FIRST
-satsen anger antalet rader som ska returneras. Vissa SQL-databaser har istället icke-standardiserade alternativ, t.ex.LIMIT
,TOP
ellerROWNUM
.
Klausulerna i en fråga har en speciell ordningsföljd, som betecknas med numret på höger sida. Det är som följer:
VÄLJ <kolumner> |
5. |
FRÅN <tabell> |
1. |
WHERE <predikat på rader> |
2. |
GRUPPER EFTER <kolumner> |
3. |
HA <predikat på grupper> |
4. |
BESTÄLL EFTER <kolumner> |
6. |
OFFSET |
7. |
HÄMTA FÖRST |
8. |
Följande exempel på en SELECT-
fråga returnerar en lista med dyra böcker. Frågan hämtar alla rader från boktabellen där priskolumnen innehåller ett värde som är större än 100,00. Resultatet sorteras i stigande ordning efter titel . Asterisken (*) i urvalslistan anger att alla kolumner i boktabellen ska inkluderas i resultatuppsättningen.
VÄLJ * FRÅN Boka VAR pris > 100 . 00 BESTÄLL EFTER titel ;
Exemplet nedan visar en fråga med flera tabeller, gruppering och aggregering, genom att returnera en lista med böcker och antalet författare som är associerade med varje bok.
VÄLJ bok . titel AS Titel , antal ( * ) AS Författare FRÅN bok GÅ MED Bok_författare PÅ bok . isbn = Bokförfattare . isbn GROUP BY Bok . titel ;
Exempelutdata kan likna följande:
Titel Författare ---------------------- ------- SQL-exempel och guide 4 Glädjen med SQL 1 En introduktion till SQL 2 Fallgropar i SQL 1
Under förutsättningen att isbn är det enda vanliga kolumnnamnet för de två tabellerna och att en kolumn med namnet titel bara finns i boktabellen , kan man skriva om frågan ovan i följande form:
VÄLJ titel , antal ( * ) SOM författare FRÅN bok NATURLIG GÅ MED Bokförfattare GRUPP EFTER titel ;
Många [ kvantifiera ] leverantörer stöder dock inte detta tillvägagångssätt eller kräver vissa kolumnnamnskonventioner för att naturliga kopplingar ska fungera effektivt.
SQL innehåller operatorer och funktioner för att beräkna värden på lagrade värden. SQL tillåter användning av uttryck i urvalslistan för att projicera data, som i följande exempel, vilket returnerar en lista med böcker som kostar mer än 100,00 med en extra kolumn omsättningsskatt som innehåller ett momsbelopp beräknat till 6 % av priset .
0
SELECT isbn , title , price , price * . 06 AS sales_tax FROM Boka WHERE pris > 100 . 00 BESTÄLL EFTER titel ;
Underfrågor
Frågor kan kapslas så att resultaten från en fråga kan användas i en annan fråga via en relationsoperator eller aggregeringsfunktion. En kapslad fråga kallas även en underfråga . Medan joins och andra tabelloperationer ger beräkningsmässigt överlägsna (dvs. snabbare) alternativ i många fall, introducerar användningen av subqueries en hierarki i exekvering som kan vara användbar eller nödvändig. I följande exempel tar aggregeringsfunktionen AVG
emot resultatet av en underfråga som indata:
VÄLJ isbn , titel , pris FRÅN Bok VAR pris < ( VÄLJ AVG ( pris ) FRÅN bok ) BESTÄLL EFTER titel ;
En underfråga kan använda värden från den yttre frågan, i vilket fall den kallas en korrelerad underfråga .
Sedan 1999 tillåter SQL-standarden WITH
-satser för subqueries, dvs namngivna subqueries, vanligtvis kallade vanliga tabelluttryck (även kallad subquery factoring ). CTE kan också vara rekursiva genom att hänvisa till sig själva; den resulterande mekanismen tillåter träd- eller grafövergångar (när de representeras som relationer), och mer allmänt fixpunktsberäkningar .
Härledd tabell
En härledd tabell är användningen av att referera till en SQL-underfråga i en FROM-sats. I huvudsak är den härledda tabellen en underfråga som kan väljas från eller kopplas till. Den härledda tabellfunktionaliteten tillåter användaren att referera till underfrågan som en tabell. Den infogade vyn kallas också för en inlinevy eller ett underval .
I följande exempel involverar SQL-satsen en koppling från den initiala "Book"-tabellen till den härledda tabellen "sales". Denna härledda tabell fångar associerad bokförsäljningsinformation med hjälp av ISBN för att ansluta till tabellen "Bok". Som ett resultat ger den härledda tabellen resultatuppsättningen med ytterligare kolumner (antalet sålda artiklar och företaget som sålde böckerna):
VÄLJ b . isbn , b . titel , b . pris , försäljning . varor_sålda , försäljning . company_nm FROM Book b JOIN ( VÄLJ SUMMA ( Items_Sold ) Items_Sold , Company_Nm , ISBN FROM Book_Sales GROUP BY Company_Nm , ISBN ) sales ON sales . isbn = b . isbn
Noll eller trevärdig logik (3VL)
Konceptet Null tillåter SQL att hantera saknad information i relationsmodellen. Ordet NULL
är ett reserverat nyckelord i SQL, som används för att identifiera specialmarkören Null. Jämförelser med Null, till exempel likhet (=) i WHERE-satser, resulterar i ett okänt sanningsvärde. I SELECT-satser returnerar SQL endast resultat för vilka WHERE-satsen returnerar värdet True; dvs den exkluderar resultat med värden False och utesluter även de vars värde är Okänt.
Tillsammans med Sant och Falskt, för det okända som härrör från direkta jämförelser med Null således ett fragment av trevärdig logik till SQL. Sanningstabellerna SQL använder för OCH, ELLER och INTE motsvarar ett vanligt fragment av Kleene och Lukasiewicz trevärdiga logik (som skiljer sig i deras definition av implikation, men SQL definierar ingen sådan operation).
|
|
|
|
Det finns dock tvister om den semantiska tolkningen av null i SQL på grund av dess behandling utanför direkta jämförelser. Som framgår av tabellen ovan returnerar direkta likhetsjämförelser mellan två NULL:er i SQL (t.ex. NULL = NULL
) ett sanningsvärde på Okänt. Detta är i linje med tolkningen att Null inte har ett värde (och inte är medlem i någon datadomän) utan snarare är en platshållare eller "markering" för saknad information. Men principen att två nollvärden inte är lika med varandra bryts i praktiken i SQL-specifikationen för UNION-
och INTERSECT-
operatorerna, som identifierar nollvärden med varandra. Följaktligen kan dessa uppsättningsoperationer i SQL ge resultat som inte representerar säker information, till skillnad från operationer som involverar explicita jämförelser med NULL (t.ex. de i en WHERE
-sats som diskuteras ovan). I Codds förslag från 1979 (som i grunden antogs av SQL92) rationaliseras denna semantiska inkonsekvens genom att argumentera att borttagning av dubbletter i uppsättningsoperationer sker "på en lägre detaljnivå än likhetstester vid utvärdering av hämtningsoperationer". Datavetenskapsprofessor Ron van der Meyden drog dock slutsatsen att "Inkonsekvenserna i SQL-standarden gör att det inte är möjligt att tillskriva någon intuitiv logisk semantik till behandlingen av nollor i SQL."
Dessutom, eftersom SQL-operatorer returnerar Okänd när man jämför något med Null direkt, tillhandahåller SQL två nollspecifika jämförelsepredikat: IS NULL
och IS NOT NULL
testar om data är eller inte är Null. SQL stöder inte uttryckligen universell kvantifiering och måste fungera som en negerad existentiell kvantifiering . Det finns också den infixade jämförelseoperatorn < radvärdeuttryck> ÄR DISTINKT FRÅN <radvärdeuttryck>, som returnerar TRUE om inte båda operanderna är lika eller båda är NULL.
På samma sätt definieras IS NOT DISTINCT FROM som NOT (<radvärdeuttryck> IS DISTINCT FROM <radvärdeuttryck>)
. SQL:1999 introducerade även variabler av typen BOOLEAN
, som enligt standarden även kan innehålla okända värden om de är nullbara. I praktiken implementerar ett antal system (t.ex. PostgreSQL ) BOOLEAN Unknown som en BOOLEAN NULL, vilket standarden säger att NULL BOOLEAN och ONKÄNDA "kan användas omväxlande för att betyda exakt samma sak".
Manipulation av data
Data Manipulation Language (DML) är den delmängd av SQL som används för att lägga till, uppdatera och ta bort data:
INSERT INTO exempel ( kolumn1 , kolumn2 , kolumn3 ) VÄRDEN ( 'test' , 'N' , NULL );
-
UPDATE
ändrar en uppsättning befintliga tabellrader, t.ex.
UPDATE- exempel SET column1 = 'uppdaterat värde' WHERE kolumn2 = 'N' ;
-
DELETE
tar bort befintliga rader från en tabell, t.ex.
DELETE FROM exempel WHERE kolumn2 = 'N' ;
-
MERGE
används för att kombinera data från flera tabeller. Den kombinerar elementenINSERT
ochUPDATE .
Det är definierat i SQL:2003-standarden; dessförinnan tillhandahöll vissa databaser liknande funktionalitet via annan syntax, ibland kallad " upsert ".
SLÅ IN TILL tabellnamn ANVÄNDA tabellreferens PÅ ( villkor ) NÄR MATCHAR DÅ UPPDATERAS SET kolumn1 = värde1 [, kolumn2 = värde2 ...] NÄR INTE MATCHAT SÄTTA IN ( kolumn1 [ , kolumn2 ...]) VÄRDEN ( värde1 [, värde2 ... ])
Transaktionskontroller
Transaktioner, om tillgängliga, avslutar DML-operationer:
-
START TRANSACTION
(ellerBEGIN WORK
, ellerBEGIN TRANSACTION
, beroende på SQL-dialekt) markerar starten på en databastransaktion , som antingen slutförs helt eller inte alls. -
SAVE TRANSACTION
(ellerSAVEPOINT
) sparar tillståndet för databasen vid den aktuella transaktionspunkten
CREATE TABLE tbl_1 ( id int ); INSERT INTO tbl_1 ( id ) VALUES ( 1 ); INSERT INTO tbl_1 ( id ) VALUES ( 2 ); ÅTGÄRDER ; UPPDATERING tbl_1 SET id = 200 WHERE id = 1 ; SAVEPOINT id_1upd ; UPPDATERING tbl_1 SET id = 1000 WHERE id = 2 ; ROLLBACK till id_1upd ; VÄLJ ID från tbl_1 ;
-
COMMIT
gör alla dataändringar i en transaktion permanenta. -
ROLLBACK
kasserar alla dataändringar sedan den senasteCOMMIT
ellerROLLBACK
, och lämnar data som den var före dessa ändringar. NärCOMMIT
-satsen är klar kan transaktionens ändringar inte återställas.
COMMIT
och ROLLBACK
avslutar den aktuella transaktionen och släpper datalås. I avsaknad av en START TRANSACTION
eller liknande uttalande är SQLs semantik implementeringsberoende. Följande exempel visar en klassisk överföring av pengar, där pengar tas bort från ett konto och läggs till ett annat. Om antingen borttagningen eller tillägget misslyckas, rullas hela transaktionen tillbaka.
0
0 STARTA TRANSAKTIONEN ; UPPDATERA konto SET belopp = belopp - 200 WHERE account_number = 1234 ; UPPDATERA Konto SET belopp = belopp + 200 WHERE account_number = 2345 ; IF ERRORS = COMMIT ; OM FEL <> ROLLBACK ;
Datadefinition
Data Definition Language (DDL) hanterar tabell- och indexstruktur. De mest grundläggande objekten i DDL är CREATE
, ALTER
, RENAME
, DROP
och TRUNCATE
-satserna:
-
CREATE
skapar ett objekt (till exempel en tabell) i databasen, t.ex.
CREATE TABLE exempel ( kolumn1 HELTAL , kolumn2 VARCHAR ( 50 ), kolumn3 DATUM INTE NULL , PRIMÄRNYCKEL ( kolumn1 , kolumn2 ) ) ;
-
ALTER
ändrar strukturen för ett befintligt objekt på olika sätt, till exempel genom att lägga till en kolumn i en befintlig tabell eller en begränsning, t.ex.
ALTER TABLE exempel ADD kolumn4 INTEGER DEFAULT 25 NOT NULL ;
-
TRUNCATE
raderar all data från en tabell på ett mycket snabbt sätt, tar bort data inuti tabellen och inte själva tabellen. Det innebär vanligtvis en efterföljande COMMIT-operation, dvs. den kan inte återställas (data skrivs inte till loggarna för återställning senare, till skillnad från DELETE).
TRUNCATE TABLE exempel ;
-
DROP
tar bort ett objekt i databasen, vanligtvis oåterkalleligt, dvs det kan inte återställas, t.ex.
DROP TABLE exempel ;
Datatyper
Varje kolumn i en SQL-tabell deklarerar den eller de typer som kolumnen kan innehålla. ANSI SQL innehåller följande datatyper.
- Karaktärssträngar och nationella karaktärssträngar
-
CHARACTER( n )
(ellerCHAR( n ) ):
n -teckensträng med fast bredd , vadderad med mellanslag efter behov -
CHARACTER VARYING( n )
(ellerVARCHAR( n )
): sträng med variabel bredd med en maximal storlek på n tecken -
CHARACTER STOR OBJECT( n [ K | M | G | T ])
(ellerCLOB( n [ K | M | G | T ])
): tecken stort objekt med en maximal storlek på n [ K | M | G | T ] tecken -
NATIONELL CHARACTER( n )
(ellerNCHAR( n )
): sträng med fast bredd som stöder en internationell teckenuppsättning -
NATIONELL KARAKTÄR VARIERAR( n )
(ellerNVARCHAR( n ) ):
NCHAR-
sträng med variabel bredd -
NATIONELL KARAKTÄR STORT OBJEKT( n [ K | M | G | T ])
(ellerNCLOB( n [ K | M | G | T ])
): nationell karaktär stort objekt med en maximal storlek på n [ K | M | G | T ] tecken
För datatyperna CHARACTER LARGE OBJECT
och NATIONAL CHARACTER LARGE OBJECT kan
multiplikatorerna K
(1 024), M
(1 048 576), G
(1 073 741 824) och T
(1 099 511 627 776) användas valfritt när du anger längden.
- Binär
-
BINÄR( n )
: Binär sträng med fast längd, maximal längd n . -
BINÄR VARIERANDE( n )
(ellerVARBINÄR( n )
): Binär sträng med variabel längd, maximal längd n . -
BINÄRT STORT OBJEKT( n [ K | M | G | T ])
(ellerBLOB( n [ K | M | G | T ])
): binärt stort objekt med maximal längd n [ K | M | G | T] .
För datatypen BINARY LARGE OBJECT kan
multiplikatorerna K
(1 024), M
(1 048 576), G
(1 073 741 824) och T
(1 099 511 627 776) användas valfritt när längden specificeras.
- Boolean
BOOLEAN
Datatypen BOOLEAN
kan lagra värdena TRUE
och FALSE
.
- Numerisk
-
INTEGER
(ellerINT
),SMALLINT
ochBIGINT
-
FLYTANDE
,RIKTIGT
ochDUBBEL PRECISION
-
NUMERISK( precision ; skala )
ellerDECIMAL( precision ; skala )
-
DECFLOAT( precision
)
Till exempel har talet 123,45 en precision på 5 och en skala på 2. Precisionen är ett positivt heltal som bestämmer antalet signifikanta siffror i en viss radix (binär eller decimal). Skalan är ett icke-negativt heltal . En skala på 0 indikerar att talet är ett heltal. För ett decimaltal med skala S är det exakta numeriska värdet heltalet för de signifikanta siffrorna dividerat med 10 S .
SQL tillhandahåller funktionerna CEILING
och FLOOR
för att runda numeriska värden. (Populära leverantörsspecifika funktioner är TRUNC
(Informix, DB2, PostgreSQL, Oracle och MySQL) och ROUND
(Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server och Mimer SQL.))
- Temporal (datumtid)
-
DATUM
: för datumvärden (t.ex.2011-05-03
). -
TID
: för tidsvärden (t.ex.15:51:36
). -
TID MED TIDZON
: samma somTID
, men inklusive information om tidszonen i fråga. -
TIMESTAMP
: Detta är ettDATUM
och enTID
sammansatta i en variabel (t.ex.2011-05-03 15:51:36.123456 )
. -
TIMESTAMP WITH TIME ZONE
: samma somTIMESTAMP
, men inklusive information om tidszonen i fråga.
SQL-funktionen EXTRACT
kan användas för att extrahera ett enstaka fält (till exempel sekunder) av ett datetime- eller intervallvärde. Databasserverns aktuella systemdatum/tid kan anropas genom att använda funktioner som CURRENT_DATE
, CURRENT_TIMESTAMP
, LOCALTIME
eller LOCALTIMESTAMP
. (Populära leverantörsspecifika funktioner är TO_DATE
, TO_TIME
, TO_TIMESTAMP
, YEAR
, MONTH
, DAY
, HOUR
, MINUTE
, SECOND
, DAYOFYEAR
, DAYOFMONTH
och DAYOFWEEK
.)
- Intervall (datumtid)
-
ÅR( precision )
: ett antal år -
ÅR( precision ) TILL MÅNAD
: ett antal år och månader -
MONTH( precision )
: ett antal månader -
DAY( precision )
: ett antal dagar -
DAY( precision ) TO HOUR
: ett antal dagar och timmar -
DAG( precision ) TILL MINUTT
: ett antal dagar, timmar och minuter -
DAG( precision ) TILL SEKUND( skala )
: ett antal dagar, timmar, minuter och sekunder -
HOUR( precision )
: ett antal timmar -
HOUR( precision ) TO MINUTE
: ett antal timmar och minuter -
HOUR( precision ) TO SECOND( skala )
: ett antal timmar, minuter och sekunder -
MINUTE( precision )
: ett antal minuter -
MINUTE( precision ) TILL SEKUND( skala )
: ett antal minuter och sekunder
Datakontroll
Data Control Language (DCL) tillåter användare att komma åt och manipulera data. Dess två huvudsakliga uttalanden är:
-
GRANT
auktoriserar en eller flera användare att utföra en operation eller en uppsättning operationer på ett objekt. -
REVOKE
eliminerar ett anslag, vilket kan vara standardbeviljandet.
Exempel:
GRANT SELECT , UPPDATERA PÅ exempel TO some_user , another_user ; REVOKE SELECT , UPPDATERA PÅ exempel FRÅN some_user , another_user ;
Anteckningar
- ^ ANSI/ISO/IEC internationell standard (IS). Databasspråk SQL—Del 2: Foundation (SQL/Foundation). 1999.
- ^ "Transact-SQL-referens". SQL Server Språkreferens . SQL Server 2005 böcker online. Microsoft. 2007-09-15 . Hämtad 2007-06-17 .
-
^
Användarhandbok för SAS 9.4 SQL-procedurer . SAS Institutet. 2013. sid. 248. ISBN 9781612905686 . Hämtad 2015-10-21 .
Även om UNIQUE-argumentet är identiskt med DISTINCT är det inte en ANSI-standard.
-
^
Leon, Alexis ; Leon, Mathews (1999). "Eliminera dubbletter - VÄLJ med DISTINCT". SQL: En fullständig referens . New Delhi: Tata McGraw-Hill Education (publicerad 2008). sid. 143. ISBN 9780074637081 . Hämtad 2015-10-21 .
[...] nyckelordet DISTINCT [...] eliminerar dubbletter från resultatuppsättningen.
- ^ "Vad är ordningsföljden för utförande av en SQL-fråga? - Designcise.com" . www.designcise.com . 29 juni 2015 . Hämtad 2018-02-04 .
- ^ a b Hans-Joachim, K. (2003). "Nullvärden i relationsdatabaser och säkra informationssvar". Semantik i databaser. Second International Workshop Dagstuhl Castle, Tyskland, 7–12 januari 2001. Reviderade papper . Föreläsningsanteckningar i datavetenskap. Vol. 2582. s. 119–138. doi : 10.1007/3-540-36596-6_7 . ISBN 978-3-540-00957-3 .
- ^ a b Ron skåpbil der Meyden, "Logiska förhållningssätt till ofullständig information: en undersökning" i Chomicki, Jan; Saake, Gunter (Eds.) Logics for Databases and Information Systems , Kluwer Academic Publishers ISBN 978-0-7923-8129-7 , sid. 344
- ^ ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation" . ISO/IEC.
- ^ Negri, M.; Pelagatti, G.; Sbattella, L. (februari 1989). "Semantik och problem med universell kvantifiering i SQL" . Datorjournalen . 32 (1): 90–91. doi : 10.1093/comjnl/32.1.90 . Hämtad 2017-01-16 .
- ^ Fratarcangeli, Claudio (1991). "Teknik för universell kvantifiering i SQL" . ACM SIGMOD Record . 20 (3): 16–24. doi : 10.1145/126482.126484 . S2CID 18326990 . Hämtad 2017-01-16 .
- ^ Kawash, Jalal (2004) Komplex kvantifiering i Structured Query Language (SQL): en handledning som använder relationskalkyl ; Journal of Computers in Mathematics and Science Teaching ISSN 0731-9258 Volym 23, nummer 2, 2004 AACE Norfolk, Virginia. Thefreelibrary.com
- ^ C. Datum (2011). SQL och relationsteori: Hur man skriver korrekt SQL-kod . O'Reilly Media, Inc. sid. 83. ISBN 978-1-4493-1640-2 .
- ^ ISO/IEC 9075-2:2011 §4.5
- ^ "ISO/IEC 9075-1:2016: Informationsteknologi – Databasspråk – SQL – Del 1: Framework (SQL/Framework)" .