Академический Документы
Профессиональный Документы
Культура Документы
Lenguaje de Consulta
Estructurado SQL
Bases de Datos I
MTI Remedios Fabián Velasco
Ver. 1.1
Cuarto Semestre
Licenciatura en Informática
Temario
6 Lenguaje de consulta estructurado (SQL).
6.1 Introducción.
6.1.1 ¿Qué es el SQL?
6.1.2 Características del lenguaje.
6.1.3 Cómo interpretar un diagrama sintáctico.
6.2 Consultas simples.
6.2.1 Sintaxis de la SELECT (para consultas simples).
6.2.2 La tabla origen (cláusula FROM).
6.2.3 Selección de columnas.
6.2.4 Ordenación de las filas (ORDER BY).
6.2.5 Selección de filas.
6.2.6 Las cláusulas DISTINCT / ALL.
6.2.7 La cláusula TOP.
6.2.8 La cláusula WHERE.
6.2.9 Condiciones de selección.
6.2.10 Expresiones válidas.
6.2.11 Operadores lógicos.
6.2.12 Caracteres comodines.
6.3 Las consultas multitabla.
6.3.1 La unión de tablas.
6.3.2 La composición de tablas.
6.3.3 El operador UNION.
6.3.4 El producto cartesiano.
6.3.5 El INNER JOIN.
6.3.6 El LEFT/RIGHT JOIN.
6.4 Las consultas de resumen.
6.4.1 Las funciones de columna.
6.4.2 Selección en el origen de datos.
6.4.3 Origen múltiple.
Bases de Datos I
6.4.4 La cláusula GROUP BY. Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.5 La cláusula HAVING.
Temario
6.5 Las subconsultas.
6.5.1 Definiciones.
6.5.2 Referencias externas.
6.5.3 Anidar subconsultas.
6.5.4 Subconsulta en la lista de selección.
6.5.5 Subconsulta en la cláusula FROM.
6.5.6 Subconsulta en las cláusulas WHERE y HAVING.
6.5.7 Condiciones de selección con subconsultas.
6.6 Actualización de datos.
6.6.1 Insertar una fila INSERT INTO VALUES.
6.6.2 Insertar varias filas INSERT INTO SELECT.
6.6.3 Insertar filas en una tabla nueva SELECT INTO.
6.6.4 Modificar el contenido de las filas UPDATE.
6.6.5 Borrar fila DELETE.
6.6.6 Conceptos básicos de integridad referencial.
6.7 Tablas de referencias cruzadas.
6.7.1 La sentencia TRANSFORM.
6.7.2 Las columnas dinámicas.
6.7.3 Las columnas fijas.
6.8 El DDL (lenguaje de definición de datos).
6.8.1 La sentencia CREATE TABLE.
6.8.2 La sentencia ALTER TABLE.
6.8.3 La sentencia DROP TABLE.
6.8.4 La sentencia CREATE INDEX.
6.8.5 La sentencia DROP INDEX.
6.8.6 Integridad referencial.
6.8.7 Los índices.
6.8.8 Tipos de datos.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1 Introducción.
1974 D. Chamberlin Laboratorio San José de
IBM Structured English Query Language o
SEQUEL.
1976 SEQUEL/2 versión mejorada
renombrada a SQL (sicuel) por razones
legales
IBM desarrolló prototipo basado en SEQUEL/2,
denominado System R, el propósito era validar la
factibilidad del sistema relacional.
SQL es resultado del desarrollo de este proyecto
(System R)
Las raíces de SQL se encuentran en el lenguaje
SQUARE (Specifying Queries As Relational
Expressions, especificación de consultas como
expresiones relacionales) anterior al proyecto
System R. SQUARE fue diseñado como lenguaje
de investigación para implementar el álgebra
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1 Introducción.
A finales de los 70’s Oracle Corporation desarrolló el
SMBD Oracle, que fue la primera versión
implementación comercial de un SMBD relacional
basado en SQL.
1982 ANSI comenzó a trabajar en un lenguaje de
bases de datos relacional (RDL, Relational
Database Language). RDL fue abandonado en
1984 y el borrador del estándar adoptó una forma
parecida a las implementaciones existentes de
SQL).
1986 ANSI (American Nacional Standard Institute)
definió un estándar para SQL que fue adoptado en
1987 como estándar internacional por ISO
(International Organization for Standardization).
Actualmente se utiliza en centenares de SMBD.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.1. ¿Qué es SQL?
Lenguaje estándar para las bases de datos
relacionales
El SQL (Structured Query Language), lenguaje
de consulta estructurado, es un lenguaje que
surgió de un proyecto de investigación de IBM
para el acceso a bases de datos relacionales.
Actualmente se ha convertido en un estándar de
lenguaje de bases de datos, y la mayoría de los
sistemas de bases de datos lo soportan, desde
sistemas para ordenadores personales, hasta
grandes ordenadores.
Definición del lenguaje SQL hecha por ISO.
Lenguaje portable, debe ajustarse a un estándar
reconocido
SQL es un ejemplo de lenguaje orientado a la
transformación, diseñado para usar relaciones con
el fin de transformar los datos de entrada en las
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.1. ¿Qué es SQL?
Como su nombre indica, el SQL nos permite realizar
consultas a la base de datos. Pero SQL además realiza
funciones de definición, control y gestión de la base de
datos. Las sentencias SQL se clasifican según su finalidad
dando origen a tres ‘lenguajes’ o mejor dicho sublenguajes:
DDL (Data Description Language), lenguaje de definición de
datos, incluye órdenes para definir, modificar o borrar las tablas
en las que se almacenan los datos y de las relaciones entre
estas. (Es el que más varia de un sistema a otro)
DCL (Data Control Language), lenguaje de control de datos,
contiene elementos útiles para trabajar en un entorno
multiusuario, en el que es importante la protección de los datos,
la seguridad de las tablas y el establecimiento de restricciones
en el acceso, así como elementos para coordinar la compartición
de datos por parte de usuarios concurrentes, asegurando que no
interfieren unos con otros.
DML (Data Manipulation Language), lenguaje de
manipulación de datos, nos permite recuperar los datos
almacenados en la base de datos y también incluye órdenes para
permitir al usuario actualizar la base de datos añadiendo nuevos
datos, suprimiendo datos antiguos o modificando datos
previamente almacenados.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.1. ¿Qué es SQL?
Idealmente debe permitir:
CREAR la base de datos y las estructuras
de relación
Realizar TAREAS básicas DE GESTION DE
DATOS, como la inserción, modificación y
borrado de los datos de las relaciones.
Realizar CONSULTAS tanto simples como
complejas.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.2. Características del
lenguaje
Sintaxis y estructura fácil
Lenguaje no procedimental, SQL no requiere que
se especifique el método de acceso a los datos.
SQL es de formato libre.
La estructura de los comandos esta compuesta
por palabras inglesas normales, por ejemplo:
CREATE TABLE, INSERT, SELECT. Por ejemplo:
CREATE TABLE Personal (noPersonal VARCHAR(5) PRIMARY
KEY, nombrePersonal VARCHAR(15), apellidoPersonal
VARCHAR(15), salario DECIMAL(7,2);
INSERT INTO Personal VALUES (‘SG16’, ‘Carlos’, ‘Ríos’,
6300);
SELECT noPersonal, apellidoPersonal, salario FROM
Personal WHERE salario > 5000;
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.2. Características del
lenguaje
Una sentencia SQL es como una frase (escrita en
inglés) con la cual, decimos lo que queremos
obtener y de donde obtenerlo.
Todas las sentencias empiezan con un verbo
(palabra reservada que indica la acción a realizar),
seguido del resto de cláusulas, algunas
obligatorias y otras opcionales que completan
la frase.
Todas las sentencias siguen una sintaxis para
que se puedan ejecutar correctamente, para
describir esa sintaxis utilizaremos un diagrama
sintáctico.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.3. Cómo interpretar un
diagrama sintáctico
Diagrama sintáctico: Representación desentencia
Una sintaxis de las se
válida
cláusulas SQL construye siguiendo la línea a
través del diagrama hasta el
punto que marca el final. Las
líneas se siguen de izquierda a
derecha y de arriba abajo.
Cuando se quiere alterar el
orden normal se indica con una
flecha, por ejemplo: el uso de la
coma (,) si existe más de un
elemento a listar.
Las palabras que aparecen en mayúsculas son palabras
reservadas se tienen que poner tal cual y no se pueden utilizar
para otro fin, por ejemplo, en el diagrama de la figura tenemos
las palabras reservadas SELECT, ALL, DISTINCT, FROM,
WHERE.
Las palabras en minúsculas son variables que el usuario deberá
sustituir por un dato concreto. En el diagrama tenemos
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.1.3. Cómo interpretar un
diagrama sintáctico
¿Cómo se interpretaría el diagrama sintáctico de la figura?
Palabras reservadas Palabras opcionales Campos o columnas
FROM alumnos
Condición
WHERE edad=19
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2. Consultas Simples
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2. Consultas Simples
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.1 Sintaxis de la SELECT (para
consultas simples).
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.2 La tabla origen (cláusula
FROM).
FROM especifica la tabla o tablas que hay
que usar
From r1, r2, rN = (r1 X r2 X rN)
SQL forma el producto cartesiano de las
relaciones incluidas en la cláusula FROM
SELECT {* | [expresionColumna AS nuevoNombre]] [,…] }
FROM NombreTabla [alias] [,…]
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.3 Selección de columnas.
Campos calculados:
SELECT COUNT nomAlumno AS numAlumnos FROM
estudiante;
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.4 Ordenación de las filas
(ORDER BY).
ORDER BY especifica el orden de la salida
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.5 Selección de filas.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.6 Las cláusulas DISTINCT / ALL.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.7 La cláusula TOP.
La cláusula TOP permite sacar las n primeras filas de la
tabla origen.
No elige entre valores iguales. Siempre se guía por una
columna de ordenación, la que aparece en la cláusula
ORDER BY o en su defecto la clave principal de la tabla.
Por ejemplo, para saber los dos empleados más antiguos
de la empresa.
SELECT TOP 2 numemp, nombre
FROM empleado
ORDER BY contrato;
Lista el código y nombre de los empleados ordenándolos
por fecha de contrato, sacando únicamente los dos
primeros (serán los dos más antiguos).
SELECT TOP 10 PERCENT nombre
FROM empleado
ORDER BY contrato
Lista el nombre de los empleados ordenándolos por fecha
de contrato, mostrando únicamente un 10% del total de
empleados. Como tenemos 10 empleados, sacará el
primero, si fueran 100 empleados sacaría los 10 primeros.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.8 La cláusula WHERE.
WHERE filtra las filas de acuerdo con alguna
condición
Para restringir las filas que hay que extraer , se
hace mediante la cláusula WHERE seguida de una
condición de búsqueda que especifica las filas que
hay que extraer.
SELECT nombre
FROM alumnos
WHERE materia = ‘Bases de Datos I’;
SELECT nombre
FROM alumnos
WHERE carrera IN (‘Informática’);
SELECT nombre
Bases de Datos I FROM empleadosUniversidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.9 Condiciones de selección.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.9 Condiciones de selección.
Rango. Comprueba si el valor de una expresión cae dentro del
rango específico de valores
Condiciona a una búsqueda de rango
BETWEEN AND, NOT BETWEEN. Esta condición hace una
búsqueda indicada en los puntos extremos del rango. La
función NOT sirve para buscar a los que se encuentren fuera
del rango especificado.
Bases de Datos I
FROM Personal Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.9 Condiciones de selección.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.2.12 Caracteres comodines.
% secuencia de 0 o más caracteres
_ cualquier carácter individual
‘___%’ cualquier cadena con al menos tres caracteres
‘%cer%’ cualquier cadena que contenga cer
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.3 Las consultas multitabla.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.3.1 La unión de tablas.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.3.2 La composición de tablas.
La composición de tablas consiste en concatenar
filas de una tabla con filas de otra. En este caso
obtenemos una tabla con las columnas de la
primera tabla unidas a las columnas de la
segunda tabla, y las filas de la tabla resultante
son concatenaciones de filas de la primera
tabla con filas de la segunda tabla.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.3.4 El producto cartesiano.
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:
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4 Las consultas de resumen.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.1 Las funciones de
columna.
En la lista de selección de una consulta de
resumen aparecen funciones de columna
también denominadas funciones de dominio
agregadas.
Una función de columna se aplica a una columna y
obtiene un valor que resume el contenido de la
columna.
Tenemos las siguientes funciones de columna:
Media: avg
Mínimo: min
Máximo: max
Total: sum
Cuenta: count
SELECT SUM(ventas)
FROM empleados
WHERE oficina = 12;
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.3 Origen múltiple.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.4 La cláusula GROUP BY.
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.4 La cláusula GROUP BY.
SELECT SUM(ventas)
FROM oficinas
GROUP BY region,ciudad;
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
6.4.5 La cláusula HAVING.
SELECT oficina
FROM empleados
GROUP BY oficina
HAVING AVG(ventas) > 50000
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco
Bibliografía utilizada
Libros:
Fundamentos de Bases de Datos. Abraham
Silberschatz, Henry F. Korth, S. Sudarshan
Manual MySQL incorporado en la aplicación
Bases de Datos I Universidad del Mar 07/2008 MTI Remedios Fabián Velasco