SQL:1999 (også kalt SQL 3) var den fjerde utgaven av database-spørrespråket SQL. Den introduserte mange nye funksjoner, hvorav mange krevde avklaringer i den påfølgende SQL:2003. SQL:1999 er tilbaketrukket og erstattet av nyere utgaver av standarden.

Sammendrag

rediger

Mellom 1999 og 2002 ble ISO-standarddokumentene publisert flere ganger, og den første utgaven bestod av flere deler. I motsetning til tidligere utgaver hadde denne standarden navn med et kolon i stedet for bindestrek etter samme mønster som andre ISO-standarder. Den første delen av SQL:1999 hadde 5 deler:

Ytterligere 3 deler som også er betraktet som en del av SQL:1999 ble publisert senere:

Nye funksjoner

rediger

Datatyper

rediger

Boolske datatyper

rediger

SQL:1999-standarden krever en boolsk type,[1] men mange kommersielle SQL-servere (Oracle Database, IBM DB2) støtter hverken dette som kolonnetype, variabeltype eller tillater den i resultatmengden. Microsoft SQL Server er et av få databasesystemer som på korrekt måte støtter BOOLEAN-verdier ved å bruke sin BIT-datatype.[trenger referanse] Hvert 1-8 bitfelt opptar en full byteplass i lagringsområdet. MySQL tolker BOOLEAN som et synonym for TINYINT (8-biters fortegnede heltall).[2] PostgreSQL har en boolsk type som samsvarer med standarden.[3]

Distinkte brukerdefinerte potenstyper

rediger

Distinkte brukerdefinerte typer ble introdusert som en valgfri funksjon (S011) for å tillate eksisterende atomiske typer å utvides med en særegen betydning for å skape en ny type, og derved gjøre det mulig for typekontrollmekanismen å detektere visse logiske feil, som for eksempel dersom man ved et uhell legger en alder til en lønn. Eksempelvis vil:

create type age as integer FINAL;
create type salary as integer FINAL;

opprette to forskjellige og inkompatible typer. De distinkte SQL-typene bruker navneekvivalens, og ikke strukturell ekvivalens som for eksempel typedef i C. Det er fortsatt mulig å utføre kompatible operasjoner (på kolonner eller data) av distinkte typer ved å bruke en eksplisitt CAST-type.

Få SQL-systemer støtter disse funksjonene. IBM DB2 støtter dem.[4] Oracle Database støttet dem ikke per 2012, og anbefalte i stedet å etterligne dem ved hjelp av strukturerte typer.[5]

Strukturerte brukerdefinerte typer

rediger

Dette er ryggraden i den objektrelasjonelle utvidelsen i SQL:1999. De er analoge med klasser i objektorienterte programmeringsspråk. SQL:1999 tillater bare enkel arv.

Felles tabelluttrykk og rekursive spørringer

rediger

SQL:1999 la til WITH [RECURSIVE]-konstruktøren[bør utdypes] som tillater rekursive spørringer (som transitiv tillukning) å spesifiseres i selve spørrespråket; se felles tabelluttrykk.

GROUP BY ble utvidet med ROLLUP, CUBE og GROUPING SETS.

Rollebasert tilgangskontroll

rediger

Full støtte for RBAC via CREATE ROLE.

Nøkkelord

rediger

SQL:1999 introduserte UNNEST-nøkkelordet.[6]

Referanser

rediger
  1. ^ ISO/IEC 9075-2:1999 section 4.6 Boolean types
  2. ^ «MySQL :: MySQL 5.0 Reference Manual :: 11.4 Using Data Types from Other Database Engines». Dev.mysql.com. Besøkt 30. januar 2014. 
  3. ^ PostgreSQL documentation about Boolean Type
  4. ^ «IBM Information Management Software for z/OS Solutions Information Center». Publib.boulder.ibm.com. Besøkt 30. januar 2014. 
  5. ^ «Oracle Compliance To Core SQL:2003». Docs.oracle.com. Besøkt 30. januar 2014. 
  6. ^ Jones, Arie; Stephens, Ryan K.; Plew, Ronald R.; Garrett, Robert F.; Kriegel, Alex. «Appendix B ANSI and Vendor Keywords». SQL Functions Programmer's Reference. John Wiley & Sons. s. 680. ISBN 9780764598074. Besøkt 16. mai 2016. 

Videre lesning

rediger