El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero como sucede con cualquier sistema de normalizaci�n hay excepciones para casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI) no nos servir� para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI ser� interpretable por cualquier motor de datos.
�Breve Historia
La historia de SQL (que se pronuncia deletreando en ingl�s las letras que lo componen, es decir "ese-cu-ele" y no "siquel" como se oye a menudo) empieza en 1974 con la definici�n, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigaci�n de IBM, de un lenguaje para la especificaci�n de las caracter�sticas de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implement� en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisi�n del lenguaje (SEQUEL/2), que a partir de ese momento cambi� de nombre por motivos legales, convirti�ndose en SQL. El prototipo (System R), basado en este lenguaje, se adopt� y utiliz� internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al �xito de este sistema, que no estaba todav�a comercializado, tambi�n otras compa��as empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenz� a entregar sus productos relacionales y en 1983 empez� a vender DB2. En el curso de los a�os ochenta, numerosas compa��as (por ejemplo Oracle y Sybase, s�lo por citar algunos) comercializaron productos basados en SQL, que se convierte en el est�ndar industrial de hecho por lo que respecta a las bases de datos relacionales.
En 1986, el ANSI adopt� SQL (sustancialmente adopt� el dialecto SQL de IBM) como est�ndar para los lenguajes relacionales y en 1987 se transfom� en est�ndar ISO. Esta versi�n del est�ndar va con el nombre de SQL/86. En los a�os siguientes, �ste ha sufrido diversas revisiones que han conducido primero a la versi�n SQL/89 y, posteriormente, a la actual SQL/92.
El hecho de tener un est�ndar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en �l. Desde el punto de vista pr�ctico, por desgracia las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e implementa en la propia base de datos s�lo el coraz�n del lenguaje SQL (el as� llamado Entry level o al m�ximo el Intermediate level), extendi�ndolo de manera individual seg�n la propia visi�n que cada cual tenga del mundo de las bases de datos.
Actualmente, est� en marcha un proceso de revisi�n del lenguaje por parte de los comit�s ANSI e ISO, que deber�a terminar en la definici�n de lo que en este momento se conoce como SQL3. Las caracter�sticas principales de esta nueva encarnaci�n de SQL deber�an ser su transformaci�n en un lenguaje stand-alone (mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la introducci�n de nuevos tipos de datos m�s complejos que permitan, por ejemplo, el tratamiento de datos multimediales.
�Componentes del SQL
El lenguaje SQL est� compuesto por comandos, cl�usulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
�Comandos
Existen dos tipos de comandos SQL:
- Los DLL que permiten crear y definir nuevas bases de datos, campos e �ndices.
- Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Comandos DLL:
Comando | Descripci�n |
---|---|
CREATE | Utilizado para crear nuevas tablas, campos e �ndices |
DROP | Empleado para eliminar tablas e �ndices |
ALTER | Utilizado para modificar las tablas agregando campos o cambiando la definici�n de los campos. |
Comandos DML:
Comando | Descripci�n |
---|---|
SELECT | Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado |
INSERT | Utilizado para cargar lotes de datos en la base de datos en una �nica operaci�n. |
UPDATE | Utilizado para modificar los valores de los campos y registros especificados |
DELETE | Utilizado para eliminar registros de una tabla de una base de datos |
�Cl�usulas
Las cl�usulas son condiciones de modificaci�n utilizadas para definir los datos que desea seleccionar o manipular.
Cl�usula | Descripci�n |
---|---|
FROM | Utilizada para especificar la tabla de la cual se van a seleccionar los registros |
WHERE | Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar |
GROUP BY | Utilizada para separar los registros seleccionados en grupos espec�ficos |
HAVING | Utilizada para expresar la condici�n que debe satisfacer cada grupo |
ORDER BY | Utilizada para ordenar los registros seleccionados de acuerdo con un orden espec�fico |
�Operadores l�gicos
Operador | Uso |
---|---|
AND | Es el "y" l�gico. Evalua dos condiciones y devuelve un valor de verdad s�lo si ambas son ciertas. |
OR | Es el "o" l�gico. Eval�a dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta. |
NOT | Negaci�n l�gica. Devuelve el valor contrario de la expresi�n. |
�Operadores de Comparaci�n
Operador | Uso |
---|---|
< | Menor que |
> | Mayor que |
<> | Distinto de |
<= | Menor � Igual que |
>= | Mayor � Igual que |
= | Igual que |
BETWEEN | Utilizado para especificar un intervalo de valores. |
LIKE | Utilizado en la comparaci�n de un modelo |
In | Utilizado para especificar registros de una base de datos |
�Funciones de Agregado
Las funciones de agregado se usan dentro de una cl�usula SELECT en grupos de registros para devolver un �nico valor que se aplica a un grupo de registros.
Funci�n | Descripci�n |
---|---|
AVG | Utilizada para calcular el promedio de los valores de un campo determinado |
COUNT | Utilizada para devolver el n�mero de registros de la selecci�n |
SUM | Utilizada para devolver la suma de todos los valores de un campo determinado |
MAX | Utilizada para devolver el valor m�s alto de un campo especificado |
MIN | Utilizada para devolver el valor m�s bajo de un campo especificado |