domingo, 26 de febrero de 2012

2.6 Introducción Al Lenguaje De Consulta SQL (historia, comandos básicos):

2.6 Introducción Al Lenguaje De Consulta SQL (historia, comandos básicos):
SQL usa una combinación de álgebra relacional y construcciones del cálculo relacional. Aunque el lenguaje SQL se considere un lenguaje de consultas, contiene muchas otras capacidades además de la consulta en bases de datos. Incluye características para definir la estructura de los datos, para la modificación de los datos en la base de datos y para la especificación de restricciones de seguridad.




No se pretende proporcionar un manual de usuario completo para SQL. Por el contrario, se presentan las construcciones y conceptos fundamentales de SQL. Las distintas implementaciones de SQL pueden diferenciarse en detalles, o pueden admitir sólo un subconjunto del lenguaje completo.


Un poco de Historia Del Lenguaje SQL.
IBM desarrolló la versión original en su Laboratorio de investigación de San José (San José Research Center, actualmente Centro de Investigación de Almadén, Almadén Research Center). IBM implementó el lenguaje, originalmente denominado Sequel, como parte del proyecto System R, a principios de 1970. El lenguaje Sequel ha evolucionado desde entonces y su nombre ha pasado a ser SQL (Structured Query Language, Lenguaje estructurado de consultas). Actualmente, numerosos productos son compatibles con el lenguaje SQL. SQL se ha establecido como el lenguaje estándar de bases de datos relacionales.
En 1986, ANSI (American National Standards Institute, Instituto Nacional Americano de Normalización) e ISO (International Standards Organization, Organización Internacional de Normalización), publicaron una norma SQL, denominada SQL-86. En 1987, IBM publicó su propia norma de SQL corporativo, Interfaz de bases de datos para arquitecturas de aplicación a sistemas (Systems Application Architecture Database Interface,
SAA-SQL ). En 1989 se publicó una norma extendida para SQL denominada SQL-89 y actualmente los sistemas de bases de datos son normalmente compatibles al menos con las características de SQL-89. La siguiente versión de la norma fue SQL-92 y la versión
más reciente es SQL:1999. Las notas bibliográficas proporcionan
referencias a esas normas. En este apartado se presenta una visión general de SQL basada en la norma SQL-92 ampliamente implementada. La norma SQL:1999 es un superconjunto de
la norma SQL-92; en este capítulo se tratan algunas características de SQL:1999 y se proporciona un estudio más detallado en el Capítulo 9. Muchos sistemas de bases de datos soportan algunas de las nuevas constructoras de SQL:1999, aunque ningún sistema de bases datos actual soporta todas las nuevas constructoras. También hay ser consciente de que algunos sistemas de bases de datos ni siquiera soportan todas las características de SQL-92 y de que muchas bases de datos proporcionan características no estándar que no se tratan aquí.

El lenguaje SQL tiene varios componentes:


  • Lenguaje de definición de datos (LDD). El LDD de SQL proporciona órdenes para la definición de esquemas de relación, borrado de relaciones, creación de índices y modificación de esquemas de relación.

  • Lenguaje interactivo de manipulación de datos (LMD). El LMD de SQL incluye un lenguaje de consultas, basado tanto en el álgebra relacional como en el cálculo relacional de tuplas. Incluye también órdenes para insertar, borrar y modificar tuplas de la base de datos.

  • Definición de vistas. El LDD de SQL incluye órdenes para la definición de vistas.

  • Control de transacciones. SQL incluye órdenes para la especificación del comienzo y final de transacciones.

  • • SQL incorporado y SQL dinámico. SQL dinámico e incorporado define cómo se pueden incorporar las instrucciones SQL en lenguajes de pro gramación de propósito general, tales como C, C++, Java, PL/I, Cobol, Pascal y Fortran.

  • Integridad. El LDD de SQL incluye órdenes para la especificación de las restricciones de integridad que deben satisfacer los datos almacenados en la base de datos. Las actualizaciones que violen las restricciones de integridad se rechazan.

  • Autorización. El LDD de SQL incluye órdenes para especificar derechos de acceso para las relaciones y vistas.



Estructura Básica:
Una base de datos relacional consiste en un conjunto de relaciones, a cada una de las cuales se le asigna un nombre único. SQL permite el uso de valores nulos para indicar que el valor o bien es desconocido, o no existe. Se fijan criterios que permiten al usuario especificar a qué atributos no se puede asignar valor nulo.

La estructura básica de una expresión SQL consiste en tres cláusulas: select, from y where.

  • La cláusula select corresponde a la operación proyección del álgebra relacional. Se usa para listar los atributos deseados del resultado de una consulta.

  • La cláusula from corresponde a la operación producto cartesiano del álgebra relacional. Lista las relaciones que deben ser analizadas en la evaluación de la expresión.

  • La cláusula where corresponde al predicado selección del álgebra relacional. Es un predicado que engloba a los atributos de las relaciones que aparecen en la cláusula from.


Un hecho histórico desafortunado es que el término select tiene un significado diferente en SQL que en el álgebra relacional. A continuación se resaltan las diferentes interpretaciones, a fin de minimizar la posible confusión. Una consulta típica en SQL tiene la forma:

select A1, A2,…, An
from r1, r2,…, rm
where P
Cada Ai representa un atributo, y cada ri una relación.
P es un predicado. La consulta es equivalente a la expresión
del álgebra relacional
Π A1, A2,…, An (σP (r1 × r2 × … × rm ))

SQL forma el producto cartesiano de las relaciones incluidas en la cláusula from, lleva a cabo la selección del álgebra relacional usando el predicado de la cláusula where y entonces proyecta el resultado sobre los atributos de la cláusula select. En la práctica, SQL puede convertir la expresión en una forma equivalente que
puede ser procesada más eficientemente.

La Clausula Selec:
El resultado de una consulta SQL es, por supuesto, una relación. Considérese una consulta simple, usando el El resultado es una relación consistente en el único atributo nombre-sucursal. Los lenguajes formales de consulta están basados en la noción matemática de que una relación es un conjunto. Así, nunca aparecen tuplas duplicadas en las relaciones. En la práctica, la eliminación de duplicados consume tiempo. Sin embargo, SQL (como la mayoría de los lenguajes de consulta comerciales) permite duplicados en las relaciones, así como en el resultado de las expresiones SQL. Así, la consulta anterior listará cada nombre-sucursal una vez por cada tupla en la que aparece en la relación préstamo. En aquellos casos donde se quiera forzar la eliminación de duplicados, se insertará la palabra clave distinct después de select. Por lo tanto, se puede reescribir la consulta anterior como

select distinct nombre-sucursal
from préstamo
si se desean eliminar los duplicados. Es importante resaltar que SQL permite usar la palabra clave all para especificar explícitamente que no se eliminan los duplicados:

select all nombre-sucursal
from préstamo.

La cláusula select puede contener también expresiones aritméticas que contengan los operadores, +, –, * y / operando sobre constantes o atributos de la tuplas. Por ejemplo, la consulta

select nombre-sucursal, número-préstamo,

importe * 100

from préstamo

devolverá una relación que es igual que la relación préstamo,
salvo que el atributo importe está multiplicado por 100. SQL también proporciona tipos de datos especiales, tales como varias formas del tipo fecha y permite varias funciones aritméticas para operar sobre esos tipos.

La Clausula where:
A continuación se ilustra con un ejemplo el uso de la cláusula where en SQL. Considérese la consulta «Obtener todos los números de préstamo para préstamos hechos en la sucursal con nombre Navacerrada, en los que el importe sea superior a 1.200 €». Esta consulta puede escribirse en SQL como

select número-préstamo

from préstamo

where nombre-sucursal = ‘Navacerrada’ and importe > 1200
SQL usa las conectivas lógicas and, or y not (en lugar de los símbolos matemáticos ∧, ∨ y ¬) en la cláusula where. Los operandos de las conectivas lógicas pueden ser expresiones que contengan los operadores de comparación <, <=, >, >=, = y <>. SQL permite usar los operadores de comparación para comparar cadenas y expresiones aritméticas, así como tipos especiales,
tales como el tipo fecha. SQL incluye un operador de comparación between para simplificar las cláusulas where que especifica que
un valor sea menor o igual que un valor y mayor o igual que otro valor. Si se desea obtener el número de préstamo de aquellos préstamos por importes entre 90.000€ y 100.000 €, se puede usar la comparación between para escribir:
select número-préstamo

from préstamo

where importe between 90000 and 100000
en lugar de..


select número-préstamo
from préstamo
where importe <= 100000 and importe >= 90000
De forma análoga, se puede usar el operador de comparación
not between.

La Clausula From:
Finalmente, se estudia el uso de la cláusula from. La cláusula from define por sí misma un producto cartesiano de las relaciones que aparecen en la cláusula. Escribir una expresión SQL para la reunión natural es una tarea relativamente fácil, puesto que la reunión natural se define en términos de un producto cartesiano, una selección y una proyección. La expresión del álgebra relacional se escribe como sigue:

Πnombre-cliente, número-préstamo,importe (prestatario préstamo)
para la consulta «Para todos los clientes que tienen un préstamo en el banco, obtener los nombres, números de préstamo e importes». Esta consulta puede escribirse en SQL como
select nombre-cliente, prestatario.número-préstamo, importe
from prestatario, préstamo where prestatario.número-préstamo
= préstamo.número-préstamo.

BiblioGrafia: Fundamentos De Base De Datos, 4ta EdicionAbraham Silberschatz ,Bell Laboratories Henry F. Korth, Bell Laboratories S. Sudarshan Instituto Indio de Tecnología, Bombay

No hay comentarios:

Publicar un comentario