Está en la página 1de 5

3.

1 Introduccin a SQL, sentencias SQL, sub lenguaje DDL,


SELECT y sub lenguaje DML.
Historia (Lorentz, 2000)

El lenguaje de Consultas de Consultas en Ingles Estructurado o Structured English Query


Language ("SEQUEL") fue desarrollado por IBM Corporation, Inc., para aplicar el modelo
relacional de Codd. SEQUEL posteriormente se transform en SQL (que mantena el mismo
sonido fontico del nombre original al pronunciar estas siglas como "sequel"). El 1979, Relational
Software, Inc. conocida actualmente como Oracle Corporation introdujo la primer implementacin
comercial de SQL. En la actualidad SQL es aceptado como el lenguaje estndar para los motores
relacionales de base de datos.

En Wikipedia encontramos otra definicin (Wiki, 2009):

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".

En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD comerciales.


Y, aunque la diversidad de aadidos particulares que incluyen las distintas implementaciones
comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es general y muy amplio.

El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo (ver Cuadro1):

Ao Nombre Alias Comentarios

1986 SQL-86 SQL-87 Primera publicacin hecha por ANSI. Confirmada por ISO en 1987.

1989 SQL-89 Revisin menor.

Materia: Base de Datos I -1-


Profesor: Calixto Maldonado
1992 SQL-92 SQL2 Revisin mayor.

1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para relaciones
jerrquicas), triggers y algunas caractersticas orientadas a objetos.

2003 SQL:2003 Introduce algunas caractersticas de XML, cambios en las funciones,


estandarizacin del objeto secuencia y de las columnas auto numricas.
(Ver Eisenberg et al.: SQL: 2003 Has Been Published.)

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.

Cuadro 1. Avances relacionados con las distintas versiones de estndares de SQL

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

Materia: Base de Datos I -2-


Profesor: Calixto Maldonado
actualizacin de los datos. Dependiendo del uso de la aplicacin, se priorizar el acceso indexado
o una rpida actualizacin de la informacin. La optimizacin difiere sensiblemente en cada motor
de base de datos y depende de muchos factores.

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]

Qu es SQL? (Forta, 2007)

Es un lenguaje diseado especficamente para la comunicacin con Bases de datos. A contrario


de otros lenguajes hablados como el ingls, o de programacin como Java o Visual Basic, SQL se
basa en muy pocas palabras. Esto es deliberado, ya que SQL est diseado para una hacer una
cosa y hacerlo bien, proveer un modo simple y eficiente modo para leer y escribir datos en una
base de datos relacional.

Cules son las ventajas de SQL?


A modo de sntesis queremos destacar por qu es bueno este lenguaje:
SQL no es un lenguaje propiedad de un proveedor de Base de datos.
La mayora de los sistemas de administracin de Base de datos usa SQL, por lo que
aprender este lenguaje permite interactuar con todas las bases de datos con las que
interacte.
SQL es fcil de aprender, esta construido con unas pocas palabras habituales del Ingls.
Aunque su apariencia es simple, SQL es un lenguaje poderoso e, inteligentemente usado,
puede ejecutar operaciones de Base de Datos sofisticadas y complejas

En este mdulo y en el siguiente pretendemos iniciarnos con los bsicos de las sentencia
SELECT hasta avanzar en consultas mas complejas.

Cmo trabaja SQL?

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.

Entre otras caractersticas SQL encontramos que:

Procesa los datos como grupos y no como unidades individuales.


Provee navegacin automtica a los datos.
Sus sentencias son complejas y poderosas individualmente

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

Materia: Base de Datos I -3-


Profesor: Calixto Maldonado
SQLServer de Mircrosoft, SQL-PL de DB2 de IBM y PSQL de PostgresSQL. En general estas
extensiones procedimentales complementan a SQL para construir procedimientos almacenados,
paquetes y disparadores.

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

SQL provee sentencias para una variedad de tareas, incluyendo:


Consultas de datos
Insercin, actualizacin y borrado de filas en una tabla
Creacin, reemplazo, alteracin y eliminacin de objetos
Control de acceso a la base de datos y a sus objetos
Garantizar la consistencia e integridad de la base de datos

En SQL se unen todas las tareas anteriores en un lenguaje consistente.

Un lenguaje Comn para todas las bases de datos Relacionales


Todos los sistemas de administracin de bases de datos relacionales soportan SQL, as se puede
transferir todas las habilidades adquiridas en SQL de una base de datos a otra. Adems las
consultas escritas en SQL son portables en su gran mayora y a veces movidas de una base a
otra con muy pequeas modificaciones. (Lorentz, 2007)

SQL Empotrado o Embebido


SQL empotrado esta referido al uso de las sentencias estndares SQL insertados en un lenguaje
de programacin procedimental. Las sentencias posibles de incorporar las sentencias SQL son:

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.

Materia: Base de Datos I -4-


Profesor: Calixto Maldonado
La idea es simple elija una forma de escribir las palabras propias de la sintaxis y otra forma para
los nombres de columnas, tablas y variables. Se puede adoptar el criterio de escribir en
mayscula las palabras reservadas de la sentencia y en minscula los nombres de tablas,
columnas y variables.

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.

Ejemplo en la bases de datos Oracle 10g:


Una sentencia que trae los nombres (columna ENAME) y el salario (SAL multiplicado por 12), y la
diferencia de meses (MONTHS_BETWEEN) que hay entre la fecha de contratacin (HIREDATE) y
la fecha del sistema (SYSDATE) escrita rpidamente con en maysculas, sera:

SELECT ENAME,SAL*12,MONTHS_BETWEEN(HIREDATE,SYSDATE) FROM EMP;


Cambia usando Maysculas y minsculas y dividiendo en clusulas o cuando aparezca un
separador como la coma:

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;

Este ejemplo en MySQL es

SELECT ename,
sal * 12,
DATEDIFF(current_date, hiredate)/30
FROM empleados;

Un poco ms legible, no les parece?

Materia: Base de Datos I -5-


Profesor: Calixto Maldonado

También podría gustarte