SQL
De Viquipèdia
SQL (Structured Query Language o Llenguatge de consulta estructurat) és un llenguatge estàndar de comunicació amb bases de dades relacionals. És a dir, un llenguatge normalitzat que permet treballar amb la majoria de bases de dades relacionals. L'SQL es pot hostatjar (es pot utilitzar) dins d'altres llenguatges de programació. La principal característica d'aquest llenguatge és la seua simplicitat, ja que amb pocs coneixements es poden fer consultes bàsiques sobre una base de dades, encara que no per això deixa de ser un llenguatge complet, tant relacionalment com computacionalment (a partir de la versió SQL3 publicada el 1999).
El llenguatge SQL es pot dividir en tres conjunts d'instruccions o sentències segons la seva funció:
- Les sentències de definició (DDL Data Definition Language) permeten crear, modificar i esborrar estructures de dades.
- Les sentències de manipulació (DML Data Manipulation Language) permeten llegir, inserir, modificar i esborrar registres.
- Les sentències de control (DCL Data Control Language) permeten finalitzar o rebutjar transaccions i autoritzar o revocar els permisos dels usuaris.
L'SQL també estandaritza les sentències que s'utilitzen per hostatjar-se dins d'altres llenguatges.
Taula de continguts |
[edita] Origens i evolució
Els origens de SQL estan lligats a les bases de dades relacionals. El 1970 Codd proposa el model relacional i associat a aquest un subllenguatge d'acces a les dades basat en el càlcul de predicats. Basant-se en aquestes idees els laboratoris de IBM defineixen el llenguatge SEQUEL (Structured English QUEry Language) que més tard seria ampliament implementat pel SGBD experimental System R, desenvolupat el 1977 també per IBM. Tot i així, va ser Oracle qui el va introduir per primer cop el 1979 en un programa comercial.
El SEQUEL acabaria sent el predecessor de SQL, sent aquest una versió evolucionada del primer. El SQL passa a ser el llenguatge per excel·lència dels diversos SGBD relacionals surgits els anys següents i per fi és estandaritzat el 1986 pel ANSI, donant lloc a la primera versió estàndard d'aquest llenguatge, el SQL-86 o SQL1. L'any següent aquest estàndard és adoptat per l'ISO.
Tot i així aquest primer estàndard no cobreix totes les necessitats dels desenvolupadors i inclou funcionalitats de definició d'emmagatzemats que es consideren eliminar. Així el 1992 es llença un nou estàndard ampliat i revisat de SQL anomenat SQL-92 o SQL2.
Actualment SQL és l'estàndard de facto de l'immensa majoria dels SGBD comercials. I, tot i que la diversitat d'afegits particulars que inclouen les diferents implementacions comercials del llenguatge s'amplia, el suport estàndard SQL-92 és general i molt ampli.
El ANSI SQL va sufrir varies revisions i afegits al llarg del temps:
Any | Nom | Alies | Comentaris |
---|---|---|---|
1986 | SQL-86 | SQL-87 | Primera publicació feta per ANSI. Confirmada per l'ISO el 1987. |
1989 | SQL-89 | Revisió menor. | |
1992 | SQL-92 | SQL2 | Revisió major. |
1999 | SQL:1999 | SQL3 | Es van afegir expressions regulars, consultles recursive (per relacions jeràrquiques), triggers i algunes característiques orientades a objectes. |
2003 | SQL:2003 | Introdueix algunes característiques de XML, canvis en les funcions, estandarització de l'objecte sequence i de les columnes autonumèriques. |
[edita] Característiques generals
SQL és un llenguatge d'accès a bases de dades que explota la flexibilitat i potència dels sistemes relacionals permetent gran varietat d'operacions sobre els mateixos.
És un llenguatge declaratiu d'alt nivell o de no procediment, que gràcies a la seva forta base teòrica i la seva orientació a la gestió de conjunts de registres, i a no registres individuals, permet una altra productivitat de codificació. D'aquesta forma una sola sentència pot equivaldre a un o més programes que utilitzessin un llenguatge de baix nivell orientat a registre.
[edita] Funcionalitat
SQL proporciona una rica funcionalitat més enllà de la simple consulta (o recuperació) de dades. Assumeix el paper de llenguatge de definició de dades (LDD), llenguatge de definició de vistes (LDV) i llenguatge de manipulació de dades (LMD). A més permet la concesió i denegació de permisos, l'implementació de restriccions d'integritat i controls de transacció i l'alteració d'esquemes.
Les primeres versions de SQL incluien funcions propies de llenguatge de definició d'emmagatzematge (LDA) però van ser suprimides pels estàndard més nous amb el fi de mantenir els estàndards més nous amb l'objectiu de mantenir el llenguatge només a nivell conceptual i extern.
[edita] Modes d'ús
El SQL permet dos modes d'ús:
- Un ús interactiu, destinat principalment als usuaris finals avançats o ocasionals, en el que les diverses sentències SQL s'escriuen i s'executen a la línia de comandes, o un entorn semblant.
- Un ús integrat, destinat a l'ús per part dels programadors dins de programes escrits en qualsevol llenguatge de programació amfitrió. En aquest cas SQL agafa el paper de subllenguatge de dades.
En el cas de fer un ús embès del llenguatge podem usar dues tècniques de programació. En una d'elles, en la que el llenguatge s'anomena SQL estàtic, les sentències usades no canvien durant l'execució del programa. En l'altre, on el llenguatge reb el nom de SQL dinàmic, es produeix una modificació total o parcial de les sentències en el transcurs de l'execució del programa.
L'utilització de SQL dinàmic permet més flexibilitat i més complexitat en les sentències, però com a contra punt obteninim una eficiència menor i l'ús de tècniques de programació més complexes en la gestió de memoria i variables.
[edita] Optimizació
Com ja s'ha comentat, i com sol ser comú en els llenguatges d'accés a bases de dades d'alt nivell, SQL és un llenguatge declaratiu. Ho sigui, que especifica que és el que es necessita i no com aconseguir-lo, per tant una sentència no estableix explícitament una ordre d'execució.
L'odre d'execució intern d'una sentència pot afectar greument l'eficiència del SGBD, per tant es fa necessari que aquest porti a cap una optimització abans de l'execució de la mateixa. Molt vegades, l'ús d'índexs accelera una instrucció de consulta, però ralentitza l'actualització de les dades, depenent de l'ús de l'aplicació, es donarà prioritat a l'accès indexat o a una ràpida actualització de l'informació. L'optimització varia sensiblement a cada motor de base de dades i depen de molts factors.
Hi ha una ampliació de SQL coneguda com FSQL (Fuzzy SQL, SQL difús) que permet l'accés a bases de dades difuses, usant la lògica difusa. Aquest llenguatge ha sigut implementat a nivell experimental i està evolucionant ràpidament.