Structured Query Language (SQL) är ett standardiserat programspråk för att hämta och modifiera data i en relationsdatabas.

SQL uttalas bokstav för bokstav eller ibland "s'ikuell" som i engelskans "sequel". Det officiella uttalet från ANSI-standardiseringskommissionen är bokstav för bokstav.

Historia redigera

1970 publicerade IBM:s Dr. Edgar F. Codd en artikel i Association for Computing Machinery (ACM) journal[1] Denna artikel kom att bli den accepterade grunden för relationsdatabashanteringssystem (engelska: relational database management systems), allmänt kallat (RDBMS eller RDMS).

Under 1970 utvecklade ett par forskare vid IBM:s forskningscenter i San Jose "System R", som i stort sett baserades på Codds modell. Structured English Query Language ("SEQUEL") var formgivet för att manipulera och extrahera data från System R. Akronymen SEQUEL byttes senare ut mot SQL eftersom 'SEQUEL' var ett varumärke som den brittiska flygplanstillverkaren Hawker Siddeley ägde. Donald D. Chamberlin och Raymond F. Boyce hade blivit influerade av Codds artikel när de formgav språket SEQUEL.

Trots att utvecklingen av SQL hade blivit påverkad av Codds arbete[2], var deras förhoppningar att intresset för SQL skulle öka med deras artikel.

Den första icke kommersiella relationsdatabasen utvecklades på UC Berkeley 1974, och fick namnet Ingres.

Under 1978 testade IBM systemet ute hos sina kunder, för att försöka påvisa nyttan och styrkan i systemet. Testet fick en sådan genomslagskraft för IBM att de började utveckla en kommersiell produkt som implementerade SQL-standarden som baserades på deras prototyp av System R. IBM gick ut 1978 om att de snart skulle släppa System/38.[3] I augusti 1979 släpptes den kommersiella varianten av System/38. System/38 följdes av SQL/DS 1981 och DB2 1983.

Samtidigt som IBM läste Codds artikel, så läste ett annat företag också artikeln och förstod dess betydelse. Företaget hette då Relational Software Inc, men bytte sedan namn till Oracle. Oracle specialskrev sin RDBMS för US Navy, CIA och andra myndigheter. Sommaren 1979 lanserade Oracle V2 (Version2) för VAX-datorer. V2 var den första kommersiella implementationen av SQL. Elaka tungor brukar säga att Oracle hann lansera sin RDBMS två år före IBM, när sanningen är att lanseringen bara var några veckor före. Intresset för RDBMS och dess styrka att hantera stora datamängder resulterade i att IBM:s och Oracles försäljningar ökade drastiskt under flera år. Strax efter började flera andra programvarubolag tillverka sina egna versioner.

1986 fastslog American National Standards Institute (ANSI) SQL som en standard. 1987 antog också Internationella standardiseringsorganisationen (ISO) SQL som en standard.

Enligt ANSI skall SQL uttalas /ɛs kjuː ɛl/, men många engelskspråkiga databasprogrammerare och tekniker kallar det fortfarande för sequel. I Sverige är det vanligast att man uttalar varje bokstav, det vill säga S-Q-L.

Revisioner redigera

År Namn Kallas Kommentar
1986 SQL-87 SQL-87 Antogs först av ANSI och ratificerades av ISO 1987.
1989 SQL-89 Mindre revidering.
1992 SQL-92 SQL2 Stor revidering.
1999 SQL:1999 SQL3 Fastslog standard för triggers, rekursiva frågor, sökningar på reguljära uttryck, icke skalära datatyper och några objektorienterade funktioner. För många relationsdatabasutvecklare är det väldigt kontroversiellt med de icke skalära datatyperna och de objektorienterade funktionerna och det har ännu inte blivit fullt infört i de olika databasmotorerna.
2003 SQL:2003 Introduktion av XML-relaterade funktioner, windowfunktioner, standardiserade sekvenser och kolumner med autogenerade värden (vilket inkluderar identitet-kolumnen). (Se Eisenberg et al.: SQL:2003 Has Been Published)

Databasmotorer som stödjer SQL redigera

Exempel på SQL-frågor redigera

  • Hämta ut värdena namn och arbetsplats från tabellen Person där värdet stad är lika med Stockholm, sorterat efter värdet namn.
 SELECT namn, arbetsplats 
 FROM Person 
 WHERE stad = 'Stockholm' 
 ORDER BY namn;
  • Lägg till en person i tabellen Person med värdena namn = Göran, arbetsplats = Riksdagen och stad = Stockholm.
 INSERT INTO Person (namn,    arbetsplats,  stad       ) 
 VALUES             ('Göran', 'Riksdagen',  'Stockholm');
  • Sätt värdet namn till Fredrik Reinfeldt för alla personer i tabellen Person som har yrke lika med Statsminister.
 UPDATE Person 
 SET namn = 'Fredrik Reinfeldt' 
 WHERE yrke = 'Statsminister';
  • Ta bort alla personer som har värdet stad satt till Atlantis från tabellen Person.
 DELETE FROM Person 
 WHERE stad = 'Atlantis';

Referenser redigera

  1. ^ Codd, E.F. A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, Vol. 13, No. 6, June 1970, ss. 377–387, tillgänglig här Arkiverad 12 juni 2007 hämtat från the Wayback Machine.
  2. ^ Donald D. Chamberlin and Raymond F. Boyce, 1974. "SEQUEL: A structured English query language", International Conference on Management of Data, Proceedings of the 1974 ACM SIGFIDET (now SIGMOD) workshop on Data description, access and control, Ann Arbor, Michigan, pp. 249–264
  3. ^ https://www.ibm.com/ibm/history/history/year_1978.html

Externa länkar redigera