1986 fastslog ANSI (American National Standards Institute) SQL som en standard. 1987 antog också ISO (International Organization for Standardization) SQL som en standard. Enligt ANSI så skall SQL uttalas bokstav för bokstav, men många engelsk-språkiga databasprogrammerare och tekniker kallar det fortfarande för sequel.
År | Namn | Kortnamn | Kommentar |
---|---|---|---|
1986 | SQL-87 | SQL-87 | Antogs först av ANSI och ratificerades av ISO 1987. |
1989 | SQL-89 | FIPS 127-1 | Mindre revidering, som huvudsakligen handlade om integritet för constraints. |
1992 | SQL-92 | SQL2 | Stor revidering. Datatyper för date, time, timestamp, interval, bit, varchar mm. Stöd för andra teckenuppsättningar. Strängsammanfogning, datumfunktioner, villkor, omvandling, scrolling cursors mm. |
1999 | SQL:1999 | SQL3 | Fastslog standard för triggers, rekursiva frågor, sökningar på "vanliga uttryck" (eng. Regular expression), icke skalära datatyper och några objektorienterade funktioner. |
2003 | SQL:2003 | Introduktion av XML-relaterade funktioner, windowsfunktioner, standardiserade sekvenser och kolumner med autogenerade värden (vilket inkluderar identitet-kolumner). | |
2006 | SQL:2006 | ISO/IEC 9075-14:2006 definierar hur SQL kan användas tillsammans med XML, bland annat hur XML data skall hanteras. Hanterar även interaktion med XQuery, XML Query Language. | |
2008 | SQL:2008 | Legaliserar ORDER BY utanför cursors. Lägger till INSTEAD OF triggers, och kommandot TRUNCATE. | |
2011 | SQL:2011 | Lägger till stöd för temporal data definiering och manipulation. |
SQL kan indelas i fyra olika användningsområden: sökning, manipulering, definition och säkerhet. Syntaxen för villkor vid sökning och manipulering är identisk. Sökning och manipulering kallar man ibland för CRUD-operationer: Create, Read, Update och Delete.
Frågor börjar alltid med nyckelordet SELECT, och påverkar normalt inte databasens persistenta innehåll. Men vissa SQL-dialekter har utökningar som kan göra det. Till exempel i Microsoft SQL Server skapar kommandot SELECT INTO en helt ny tabell.
För att ställa frågor som använder flera tabeller används huvudsakligen nyckelordet JOIN, men även UNION kan användas för att kombinera flera olika frågor.
Kommandon som påverkar datat använder nyckelorden INSERT INTO, UPDATE eller DELETE. Även nyckelordet TRUNCATE som tömmer en tabell helt är vanligt, men det ingår ej i standarden. I SQL:2003 har nyckelordet MERGE tillkommit, vilket sammanfogar data från flera tabeller. Innan dess hade några databaser stöd för 'upsert' med liknande funktionalitet.
För att säkerställa att datat hänger ihop används transaktioner runt manipuleringen av data. Innan manipuleringen används nyckelorden START TRANSACTION eller BEGIN WORK beroende på SQL-dialekt. Efter manipuleringen används antingen COMMIT eller ROLLBACK beroende på om transaktionen skall genomföras eller ej.
De vanligaste kommandon för att definiera databasens innehåll är CREATE, DROP, ALTER och RENAME. Alla kommersiella databaser har egna utökningar av dessa för att kunna skapa och hantera sina egna icke-standardiserade finesser.
FÖr att kunna styra läs och skrivrättigheter i databasen används nyckelorden GRANT och REVOKE.
SQL är ett set-baserat deklarativt språk i motsats till procedurella (imperativa eller sekventiella) språk som C eller BASIC. Det finns dock utvidgningar som tillåter procedurell funktionalitet:
Källa | Kortnamn | Namn |
---|---|---|
ANSI | SQL/PSM | SQL/Persistent Stored Modules |
Interbase/Firebird | PSQL | Procedural SQL |
IBM DB2 | SQL PL | SQL Procedural Language |
IBM Informix | SPL | Stored Procedural Language |
IBM Netezza | NZPLSQL | Netezza Procedural Language/SQL (baserat på Postgres PL/pgSQL) |
Microsoft | T-SQL | Transact-SQL |
MimerSQL | SQL/PSM | SQL/Persistent Stored Modules |
MySQL | SQL/PSM | SQL/Persistent Stored Modules |
NuoDB | SSP | Starkey Stored Procedures |
Oracle | PL/SQL | Procedural Language/SQL |
PostgreSQL | PL/pgSQL | Procedural Language/PostgreSQL Structured Query Language |
PostgreSQL | PL/PSM | Procedural Language/Persistent Stored Modules |
Sybase | T-SQL | Transact-SQL |
Sybase | Watcom-SQL | SQL Anywhere Watcom SQL |
Teradata | SPL | Stored Procedural Language |
Kortnamn | Namn | Beskrivning |
---|---|---|
SQL/Framework | SQL Framework | Själva ramverket för vad standarden innehåller. |
SQL/Foundation | SQL Foundation | Definierar grunderna i SQL. |
SQL/CLI | SQL Call-Level Interface | Definierar SQL-anrop från andra programspråk. |
SQL/PSM | SQL Persistent Stored Modules | Definierar procedurella utvidgningar av SQL. |
SQL/MED | SQL Management of External Data | Definierar datalinktyper och lager för att hantera externa data. |
SQL/OLB | SQL Object Language Bindings | Definierar syntax och semantik för SQLJ, 'SQL embedded in Java'. |
SQL/Schemata | SQL Information and Definition Schemas | Definierar hur SQL-databasen skall beskrivas. |
SQL/JRT | SQL Routines and Types Using the Java Programming Language | Stöd för Java-kod i databasen. |
SQL/XML | SQL XML-Related Specifications | Definierar bla datatypen XML, XML-funktioner samt XML-till-SQL mappning. |
källa: en.wikipedia.org/wiki/SQL mfl
Senast uppdaterat 29 augusti 2014 av Christer Tärning