Base de datos
Tema 3
Lenguaje SQL
Lenguaje SQL
1
Introducción a SQL
Structured Query Language (SQL)
Lenguaje declarativo de acceso a bases de datos que combina
construcciones del álgebra relacional y el cálculo relacional.
Originalmente desarrollado en los '70 por IBM en su Research
Laboratory de San José a partir del cálculo de predicados creado por
Codd.
Lenguajeestándar de facto en los SGBD comerciales
Estándares:
SEQUEL(Structured English QUEry Language), IBM 1976
SQL-86 (ANSI SQL)
SQL-89 (SQL1)
SQL-92 (SQL2), gran revisión del estándar
SQL:1999 (SQL3), Añade disparadores, algo de OO, ...
SQL:2003. Añade XML, secuencias y columnas autonuméricas.
Lenguaje SQL
2
Características de SQL
El Lenguage de Definición de Datos (LDD)Proporciona comandos para la creación, borrado y modificación de
esquemas relacionales
El Lenguaje de Manipulación de Datos (LMD)
Basado en el álgebra relacional y el cálculo relacional permite realizar
consultas y adicionalmente insertar, borrar y actualizar de tuplas
Ejecutado en una consola interactiva
Embebido dentro de un lenguaje de programación de propósito general
Definición de vistasAutorización
Definición de usuarios y privilegios
Integridad de datos
Control de Transacciones
Lenguaje SQL
3
Estructura de la sentencia SELECT
SELECT A1, …, An
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
FROM T1, …, Tn
WHERE P
- Nombres de las tablas / vistas
- Condiciones deselección de filas
GROUP BY Ai1, …, Ain
HAVING Q
- Nombre de las columnas
- Condiciones de selección de grupo
ORDER BY Aj1, …, Ajn
- Nombres de columnas
Lenguaje SQL
4
Estructura básica de la sentencia SELECT
Consta de tres cláusulas: SELECT, FROM y WHERE.
SELECT corresponde a la operación de proyección del álgebra
relacional.
La lista de los atributos que se incluirán enel resultado de una consulta.
FROM corresponde al producto cartesiano del álgebra relacional.
Especifica las relaciones que se van a usar como origen en el proceso de
la consulta.
WHERE corresponde al predicado de selección del álgebra relacional.
Consta de un predicado que implica atributos de las relaciones de la
cláusula FROM.
Lenguaje SQL
5
Estructura básica de la sentenciaSELECT
Una consulta SQL tiene la forma:
SELECT A1, ..., An
FROM R1, ..., Rm
WHERE P;
/* Lista de atributos */
/* Lista de relaciones */
/* Condición. Cláusula OPCIONAL */
Es posible que existan el mismo nombre de atributo en dos relaciones
distintas.
Se añade "NOMBRE_RELACION." antes del nombre para desambiguar.
Es equivalente a la siguiente expresión del álgebra relacional:ΠA1,A2,...,An ( σP ( R1 × R2 × … × Rm ) )
El orden de ejecución de la expresión anterior es el mismo que el de la
consulta SQL.
ADVERTENCIA: la selección del AR y el SELECT de SQL no
funcionan igual.
El resultado de una consulta SELECT puede tener tuplas repetidas.
Lenguaje SQL
6
Proyección de algunas columnas
SELECT DEPTNO, DEPTNAME, ADMRDEPT
FROM DEPARTMENT
DEPTNO
A00
B01C01
D01
D11
D21
E01
E11
E21
DEPTNAME
ADMRDEPT
SPIFFY COMPUTER SERVICE DIV.
PLANNING
INFORMATION CENTER
DEVELOPMENTCENTER
MANUFACTURING SYSTEMS
ADMINISTRATION SYSTEMS
SUPPORT SERVICES
OPERATIONS
SOFTWARE SUPPORT
A00
A00
A00
A00
D01
D01
A00
E01
E01
Lenguaje SQL
7
Eliminación de filas duplicadas
SQL permite duplicados debido a la gran cantidad de tiempo
quepuede llevar eliminarlos
Para eliminar las tuplas repetidas se utiliza la cláusula
DISTINCT.
También es posible pedir explícitamente la inclusión de
tuplas repetidas mediante el uso de la cláusula ALL.
SELECT ADMRDEPT
FROM DEPARTMENT
ADMRDEPT
A00
A00
A00
A00
D01
D01
A00
E01
E01
SELECT DISTINCT ADMRDEPT
FROM DEPARTMENT
SELECT ALL ADMRDEPT
FROM DEPARTMENT
Lenguaje SQL...
Regístrate para leer el documento completo.