Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lectura 15 - Introducción A SQL CORREGIDO
Lectura 15 - Introducción A SQL CORREGIDO
SQL es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar
diversos tipos de operaciones en stas. Una de sus caractersticas es el manejo del lgebra y el
clculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla-
informacin de inters de una base de datos, as como tambin hacer cambios sobre ella. Es un
lenguaje de cuarta generacin (4GL).
El SEQUEL terminara siendo el predecesor de SQL, siendo ste una versin evolucionada del
primero. El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos
en los aos siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera
versin estndar de este lenguaje, el "SQL-86" o "SQL1". Al ao siguiente este estndar es
tambin adoptado por la ISO.
Sin embargo este primer estndar no cubre todas las necesidades de los desarrolladores e incluye
funcionalidades de definicin de almacenamiento que se consideraron suprimir. As que en 1992
se lanza un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".
El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo (ver Cuadro1):
1986 SQL-86 SQL-87 Primera publicacin hecha por ANSI. Confirmada por ISO en 1987.
1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para relaciones
jerrquicas), triggers y algunas caractersticas orientadas a objetos.
2006 SQL:2006 ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede
utilizar conjuntamente con XML. Define maneras importar y guardar
datos XML en una base de datos SQL, manipulndolos dentro de la base
de datos y publicando el XML y los datos SQL convencionales en forma
XML. Adems, proporciona facilidades que permiten a las aplicaciones
integrar dentro de su cdigo SQL el uso de XQuery, lenguaje de consulta
XML publicado por el W3C (World Wide Web Consortium) para acceso
concurrente a datos ordinarios SQL y documentos XML.
2008 SQL:2008 Permite el uso de la clusula ORDER BY fuera de las definiciones de los
cursores. Incluye los disparadores del tipo INSTEAD OF. Aade la
sentencia TRUNCATE.
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales permitiendo gran variedad de operaciones en stos ltimos.
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base
terica y su orientacin al manejo de conjuntos de registros, y no a registros individuales, permite
una alta productividad en codificacin y la orientacin a objetos. De esta forma una sola sentencia
puede equivaler a uno o ms programas que utilicen un lenguaje de bajo nivel orientado a registro.
Optimizacin
Como ya se dijo arriba, y suele ser comn en los lenguajes de acceso a bases de datos de alto
nivel, el SQL es un lenguaje declarativo. O sea, que especifica qu es lo que se quiere y no cmo
conseguirlo, por lo que una sentencia no establece explcitamente un orden de ejecucin.
El orden de ejecucin interno de una sentencia puede afectar gravemente a la eficiencia del
SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de su
ejecucin. Muchas veces, el uso de ndices acelera una instruccin de consulta, pero ralentiza la
Existe una ampliacin de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el
acceso a bases de datos difusas, usando la lgica difusa. Este lenguaje ha sido implementado a
nivel experimental y est evolucionando rpidamente. [Wiki,2009]
En este mdulo y en el siguiente pretendemos iniciarnos con los bsicos de las sentencia
SELECT hasta avanzar en consultas mas complejas.
Las fortalezas de SQL ofrecen beneficios a todo tipo de usuarios como los programadores de
aplicacin, administradores de bases de datos, gerentes y usuarios finales. Tcnicamente
hablando, SQL es un sub lenguaje de datos. Su propsito es ser una interfaz con una base de
datos y todas sus sentencias son instrucciones para la base de datos. Difiere entonces de los
lenguajes de programacin de propsito general como COBOL, C, Basic.
SQL no tiene sentencias de control de flujo desde su origen, aunque recientemente, se han visto
incluidas como partes opcionales aceptadas del estndar de SQL, ISO/IEC 9075-5: 1996.
Comnmente estas sentencias de control de flujo, son conocidas como "mdulos persistentes
almacenados" y son considerados como extensiones procedimentales del lenguaje. Los
proveedores de Bases de datos, tienen estas extensiones, como PL/SQL de Oracle, T-SQL de
Para profundizar en el uso de SQL, es importante mencionar que es necesario ocuparse de los
detalles de implementacin cuando se pretende manipular los datos. Por ejemplo, para recuperar
un conjunto de filas de una tabla, se define una condicin usada para filtrar las filas y todas las
filas que la cumplan sern recuperadas en un solo paso como una unidad para el usuario, a otra
sentencia SQL o a una aplicacin. No es necesario tratar a las filas unas a unas ni se tiene que
ocupar sobre cmo estn almacenadas fsicamente o como son recuperadas.
Todas las sentencias SQL usan el optimizador, que es el componente de programacin que
determina los medios ms eficientes de acceso a los datos especificados. En general los motores
tienen tcnicas que se pueden aplicar para que este optimizador realice la tarea mejor, es decir,
en el menor tiempo de ejecucin posible
Todas las sentencias SQL incluidas SELECT e INSERT y las sentencia dinmicas SQL tales
como PREPARE y OPEN, que integran al lenguaje estndar de SQL dentro de un lenguaje de
programacin procedimental.
Una vez incluidas las sentencias SQL un programa llamado pre-compilador las traduce en
sentencias del lenguaje anfitrin que permite as ser compilado normalmente por el compilador del
lenguaje elegido.
Convenciones Lxicas
Las siguientes convenciones lxicas para escribir sentencias SQL se aplican para cualquier motor
y estn orientados a facilitar la lectura y comprensin de la sentencias, ayudando muchas veces a
encontrar ms rpidamente errores sintcticos, palabras faltantes y tambin comprender mas
fcilmente una sentencia con varias clusulas.
Otro criterio que se puede adoptar es escribir una clusula por lnea, y cuando esta clusula tenga
una extensin mayor al campo visual disponible, partirla en los operadores completos o en la
coma de una lista de columnas.
SELECT ENAME,
SAL * 12,
MONTHS_BETWEEN( HIREDATE, SYSDATE )
FROM EMP;
Y con el uso de maysculas para palabras reservadas y minsculas para nombres de objetos,
quedara as
SELECT ename,
sal * 12,
MONTHS_BETWEEN( hiredate, SYSDATE )
FROM emp;
SELECT ename,
sal * 12,
DATEDIFF(current_date, hiredate)/30
FROM empleados;