Definicion de SQL
Enviado por adriywillis • 23 de Octubre de 2013 • Tesis • 3.476 Palabras (14 Páginas) • 215 Visitas
Definicion de SQL
El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar de forma sencilla información de interés de bases de datos, así como hacer cambios en ella.
La sigla que se conoce como SQL corresponde a la expresión inglesa Structured Query Language (entendida en español como Lenguaje de Consulta Estructurado), la cual identifica a un tipo de lenguaje vinculado con la gestión de bases de datos de carácter relacional que permite la especificación de distintas clases de operaciones entre éstas.
Caracteristicas de SQL
A manera de resumen, podemos enunciar las siguientes características de SQL:
• Es un lenguaje basado en el idioma Inglés que usa frases en inglés para manipular la base de datos.
• Es no procedimental. Usted especifica la información requerida, más no las operaciones o la forma de
llegar a la información. Cada RDBMS tiene un optimizador de búsquedas, el cual traduce sus cláusulas en SQL y elabora el camino o la ruta óptima para llegar a los datos.
• Cuando se trabaja con los datos, todas las filas afectadas por los comandos se tratan como un solo bloque, no son tratadas una por una
• Adicionalmente, SQL permite que los resultados de una consulta sean los datos de entrada para una nueva.
Tipos de Consulta de SQL
Una consulta en SQL consta básicamente de dos cláusulas obligatorias (SELECT y FROM) a las
que se le pueden añadir opcionalmente otras cuatro cláusulas (WHERE, GROUP BY, HAVING y
ORDER BY).
3.1. Las cláusulas SELECT / FROM
La cláusula SELECT que inicia cada sentencia especifica la lista de atributos de los datos que
queremos recuperar en la consulta. Corresponde con la operación de proyección del álgebra
relacional.
Para especificar la lista de elementos seleccionados podemos escribir cualquiera de los elementos
siguientes teniendo en cuenta que, si hay más de uno, estarán separados por comas.
• El nombre de una columna, que hará referencia a un atributo de la tabla que especifiquemos en
la cláusula FROM. Más adelante veremos que, en determinadas ocasiones, al tener más de una
tabla en la cláusula FROM necesitaremos además especificar el nombre de la tabla a la que
pertenece dicho atributo escrito de la siguiente forma: mi_tabla.atributo_seleccionado
• El valor *, para indicar que se desea información de todas las columnas que forman la tabla.
• Una constante, especificando que el valor constante va a aparecer en todas las filas de los
resultados de la consulta.
• O una expresión SQL, indicando que SQL debe calcular el valor a colocar en los resultados
según el estilo especificado por la expresión, por ejemplo: AVG .Esto lo veremos más adelante.
La cláusula FROM es la que indica sobre que tabla/s se desea recuperar información. Si hay más
de una, se separan los nombres de las tablas por comas (y esto correspondería al producto cartesiano
del álgebra relacional).
El resultado de una consulta SQL es siempre una tabla de datos, semejante a las tablas de base de
datos. Generalmente los resultados de la consulta formarán una tabla con varias columnas y filas.
Por ejemplo, si queremos saber ”el listado de los
nombres, oficinas y fechas de contrato de todos los
vendedores”, la consulta sería:
SELECT nombre, oficina_rep, contrato FROM
repventas ;
Dando como resultado una tabla de tres columnas
(hemos seleccionado 3 atributos) y diez filas (ya que
hay diez vendedores) que es la tabla de la derecha.
Sin embargo, si pedimos “El nombre, cuota y ventas del empleado número 107”, la consulta
produce una única fila, ya que sólo hay un vendedor que tenga el número de empleado solicitado.
SELECT nombre, cuota, ventas FROM repventas WHERE num_empl=107 ;
NOMBRE CUOTA VENTAS
Natalia Martin 27500 34432
En algunos casos los resultados de la consulta pueden ser un único valor, como en el caso de pedir
“el promedio de ventas de los vendedores”:
SELECT AVG(ventas) FROM repventas ;
NOMBRE OFICINA_REP CONTRATO
Jose Maldonado 11 14/06/1998
Carlos Martinez 12 19/05/1997
Belen Aguirre 13 12/02/1998
Maria Garcia 11 12/10/1999
Lorenzo Fernandez 21 12/10/1999
Soledad Martinez 21 10/12/1996
Daniel Gutierrez 12 20/10/1996
Antonio Valle NULL 13/01/2000
Pedro Cruz 12 01/03/1997
Natalia Martin 22 14/11/1998
AVG (ventas)
24758.20 14748 - Bases de Datos – Biblioteconomía. 2003-2004 Tema 5: Lenguajes de Consulta. SQL.
6
E incluso en otros puede producir cero filas de resultados. Por ejemplo si realizamos la consulta “el
nombre y fecha de contrato de cualquier vendedor con ventas superiores a 75000”:
SELECT nombre, contrato FROM repventas WHERE ventas>75000 ;
NOMBRE CONTRATO
Aún en esta situación, el resultado sigue siendo una tabla. Se trata de una tabla vacía con dos
columnas y cero filas.
Por otra parte, hay que tener en cuenta que la cláusula SELECT nos va a mostrar tantas filas como
datos respondan a la consulta. Si la consulta incluye la clave primaria de una tabla en su lista de
selección, entonces cada fila de resultados será única (ya que la clave primaria tiene un valor
diferente en cada fila). Si no se incluye la clave primaria en los resultados pueden producirse filas
duplicadas. Por ejemplo, supongamos que pedimos “La lista de las regiones en que se encuentran
las oficinas”:
SELECT region FROM oficinas ;
Los resultados tienen cinco filas (uno por oficina), pero observamos que hay filas
duplicadas dado que las regiones se repiten. Probablemente, estos resultados no son
los que uno pretendía con la consulta, es decir, si existen tan solo dos regiones
diferentes cabría esperar que aparecieran solo las dos regiones.
Se pueden eliminar filas duplicadas de los resultados de la consulta insertando la palabra clave
DISTINCT en la sentencia SELECT, justo antes de la lista de selección. Veamos la consulta anterior
modificada:
SELECT DISTINCT region FROM
...