Unidad IV Objetivo de la Unidad: El alumno manejará las instrucciones de SQL para consulta y manipulación de las bases de datos. Introducción a SQL 4.1 Introducción •

Download Report

Transcript Unidad IV Objetivo de la Unidad: El alumno manejará las instrucciones de SQL para consulta y manipulación de las bases de datos. Introducción a SQL 4.1 Introducción •

Unidad IV
Objetivo de la Unidad:
El alumno manejará las instrucciones
de SQL para consulta y manipulación
de las bases de datos.
Introducción
a SQL
4.1 Introducción
• El lenguaje SQL (strucured query language –
Lenguaje estructurado de consulta) es una
evolución del lenguaje SEQUEL (structured
english query language) desarrollado en IBM.
• El lenguaje SQL está compuesto por comandos,
cláusulas, operadores y funciones de agregado.
Estos
elementos
se
combinan
en
las
instrucciones, para crear, actualizar y manipular
las B.D.
Estructura del lenguaje:
Comandos:
DDL: Permite la descripción de la estructura de la
BD (tablas, vistas, índices,...)
DML: Permite el manejo de las tablas y las vistas
mediante las cuatro operaciones fundamentales
sobre los datos.
DCL: Contiene los operadores para la gestión de
transacciones (COMMIT y ROLLBACK) y
prioridades de acceso a los datos (GRANT y
REVOKE)
Operadores lógicos
AND "Y" Lógico, evalúa 2 condiciones y
devuelve un valor de verdad si ambos son
ciertos.
OR "O" Evalúa2 condiciones y devuelve un valor
de verdad si alguna de las 2 es cierta.
NOT Negación lógica.
contrario de la expesión
Devuelve
el
valor
Operadores de comparación
BETWEEN: Utilizado para especificar un intervalo
de valores
LIKE: Comparar un valor o dato con un patrón,
utilizado en la comparación de un modelo.
IN: Utilizado para especificar registros
NOT IN: Discriminar un dato que no se encuentre
en el conjunto de valores dados.
>= Mayor o igual que
Operadores de comparación
=
Igual que
<
Menor que
<= Menor o igual que
>
Mayor que
<> Distinto de
Funciones de agregado
AVG.- calcular el promedio de los valores de un
campo determinado
COUNT.- Devolver el número de registros de la
selección.
SUM.- Devolver la suma de todos los valores de un
campo determinado
MAX.- Devolver un valor más alto de un campo
especificado
MIN.- Devolver un valor más bajo
Comodines.
? Representa un carácter cualquiera
* Representa cero o mas caracteres
# Representa un dígito cualquiera (0-9)
Características:
1. El SQL es manejable bajo dos modalidades
distintas: como módulo interactivo que
proporciona un potente lenguaje de
consultas interpretadas y como lenguaje
huésped de un lenguaje anfitrión.
2. Respeta la independencia entre el nivel
conceptual y las aplicaciones (nivel
externo), ya que permite la creación de
esquemas externos personalizados.
3. Garantiza una seguridad total de acceso a
los datos, gracias a una distribución
selectiva de prioridades de acceso.
4. Garantiza la independencia entre el nivel
conceptual y el nivel interno. El usuario no
nota la presencia de un índice, es asunto del
administrador el conseguir la optimización de
las ejecuciones.
5. Permite la gestión multiusuario de los datos.
Cada fila a la que se accede para su
modificación
queda
automáticamente
bloqueada por el sistema. En particular, el
SQL contiene el concepto de transacción, que
permite restaurar el estado anterior de la BD
en caso de anomalías.
6. Independencia de los vendedores. El SQL
es
ofertado
por
los
principales
vendedores. Los programas que lo utilizan
pueden transferirse de un sistema de
gestión de BD a otro con mínimo esfuerzo
de conversión.
4.2 Estructura básica
(SELECT, WHERE)
Su formato completo es:
SELECT listacolumnas
FROM nombretabla[s]
WHERE condición;
Consultar o desplegar toda la tabla completa:
SELECT * FROM PELICULAS;
Desplegar ciertas columnas:
SELECT nombrepelicula, preciopelicula
películas:
from
Usar filtros o condiciones para la consulta:
SELECT * from peliculas WHERE preciopelicula
>= 225.00;
Filtros o condiciones compuestas usando los
operadores lógicos AND OR NOT:
SELECT * from películas WHERE preciopelicula >
200 AND tipopelicula = ‘comedia’;
Ordenar la consulta:
SELECT * from
preciopelicula;
peliculas
ORDER
BY
Se puede usar cualquier campo o columna para
desplegar la tabla ordenada:
SELECT * from peliculas ORDER BY
nombrepelicula;
Ordenar en forma descendente:
SELECT * from peliculas
preciopelicula DESC;
ORDER
BY
Ordenar en forma ascendente:
SELECT
*
from
peliculas
preciopelicula ASC;
ORDER
BY
Seleccionar un subconjunto de renglones que se
encuentran entre determinado rango:
Select * from peliculas where preciopelicula
BETWEEN 150 and 350 ;
Seleccionar renglones que se encuentren en una
lista de valores especificada:
Select from peliculas where tipopelicula IN
(‘acción’ , ‘horror’);
Mostrar valores no nulos.
Select nocontrol,nombre, especialidad
From alumno
Where telefono is not null
Mostrar valores nulos:
Select nocontrol,nombre, especialidad
From alumno
Where telefono is null
Utilizar Like:
Select *
From alumno
Where nombre like “an*”
4.3 Funciones de
Agregación
(Group By, Having)
Funciones de Agrupamiento o
Agregación:
Promedio (AVG).
SELECT Avg(Gastos) AS Promedio
Pedidos WHERE Gastos > 100;
FROM
Contar (COUNT)
SELECT Count(*) AS Total FROM Pedidos;
Minimo y máximo (MAX,MIN)
SELECT Min(Gastos) AS ElMin FROM Pedidos
WHERE Pais = 'España';SELECT Max(Gastos)
AS ElMax FROM Pedidos WHERE Pais =
'España';
Suma (SUM)
SELECT Sum(PrecioUnidad * Cantidad) AS Total
FROM DetallePedido;
GROUP BY.
SQL nos permite agrupar las filas resultado de
una consulta en conjuntos y aplicar funciones
sobre esos conjuntos de filas.
La sintaxis es la siguiente:
SELECT (*) (campos)
FROM tabla
WHERE condición
GROUP BY campo
HAVING condición
ORDER BY campo ASC | DESC;
En la cláusula GROUP BY se colocan las
columnas por las que vamos a agrupar.
HAVING.
Especifica la condición que han de cumplir
los grupos para pasar al resultado.
Ejemplo:
SELECT Id_Familia, Sum(Stock)
FROM Productos
GROUP BY Id_Familia;
Una vez que GROUP BY ha combinado los
registros, HAVING muestra cualquier registro
agrupado por la cláusula GROUP BY que
satisfaga las condiciones de la cláusula
HAVING.
HAVING es similar a WHERE, determina qué
registros se seleccionan. Una vez que los
registros se han agrupado utilizando GROUP
BY, HAVING determina cuáles de ellos se van a
mostrar.
La cláusula HAVING permite especificar
condiciones a los agrupamientos realizados
con GROUP BY. Al utilizar la cláusula HAVING
no se incluyen aquellos grupos que no
cumplan una determinada condición. La
cláusula HAVING siempre va detrás de la
cláusula GROUP BY y no puede existir sin
ésta.
Ejemplo:
SELECT Id_Familia Sum(Stock)
FROM Productos
GROUP BY Id_Familia
HAVING Sum(Stock) > 100
AND NombreProducto Like BOS*;
4.4 Consultas sobre
múltiples tablas.
4.4.1 Subconsultas.
¿Porqué usar subconsultas?
– Para para dividir una consulta compleja en
series de pasos lógicos
– Para hacer consultas que confía en el
resultado de otra consulta
Una subconsulta es una sentencia SELECT que
aparece dentro de otra sentencia SELECT.
Ejemplo:
select co_cliente, nombre, marca, moddelo
from alquileres
where co_cliente = 1 and fecha_alquiler =
(select max(fecha_alquiler)
from alquileres
where co_cliente = 1)
Una subconsulta tiene la misma sintaxis que
una sentencia SELECT normal exceptuando
que aparece encerrada entre paréntesis. La
subconsulta se puede encontrar en la lista de
selección, en la cláusula WHERE o en la
cláusula HAVING de la consulta principal.
Tiene las siguientes restricciones:
• No puede contener la cláusula ORDER BY
• No puede ser la UNION de varias
sentencias SELECT
A veces se han de utilizar en una consulta
los resultados de otra consulta, llamada
subconsulta.
Un ejemplo de esto ocurre cuando
queremos conocer los nombres de los
empleados cuyo salario está por encima de
la media:
Select nombre from emp
Where salario > (select avg (salario)
from emp);
Subconsultas de una única fila:
Es una subconsulta que devuelve como
resultado una única fila.
Ejemplo:
SELECT *
FROM estudiantes
WHERE población =
(SELECT población
FROM estudiantes
WHERE dni=’33445667’);
Subconsultas de una múltiples filas:
SELECT *
FROM profesores
WHERE población IN (SELECT población
FROM estudiantes
WHERE edad>25);
Subconsultas de múltiples columnas:
SELECT *
FROM profesores
WHERE (nombre, apellidos) IN (SELECT
nombre, apellidos
FROM estudiantes
WHERE edad>25);
4.4.1 Operadores JOIN.
Las vinculaciones entre tablas se realizan
mediante la cláusula INNER que combina
registros de dos tablas siempre que haya
concordancia de valores en un campo
común.
Su sintaxis es:
SELECT campos FROM tb1 INNER JOIN tb2
ON tb1.campo1 comp tb2.campo2
En donde:
Combinar las tablas Categorías y Productos
basándose en el campo IDCategoria:
SELECT NombreCategoria, NombreProducto
FROM Categorias
INNER
JOIN
Productos
ON
Categorias.IDCategoria
=
Productos.IDCategoria
También se pueden enlazar varias cláusulas
ON en una instrucción JOIN, utilizando la
sintaxis siguiente:
SELECT campos FROM tabla1 INNER JOIN
tabla2 ON (tb1.campo1 comp tb2.campo1
AND ON tb1.campo2 comp tb2.campo2) OR
ON
(tb1.campo3
comp
tb2.campo3)
También puede anidar instrucciones
utilizando la siguiente sintaxis:
JOIN
SELECT campos FROM tb1 INNER JOIN (tb2
INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER
JOIN ...)] ON tb3.campo3 comp tbx.campox)]
ON
tb2.campo2
comp
tb3.campo3)
ON
tb1.campo1 comp tb2.campo2
4.5 Manipulación de la
base de datos (INSERT,
UPDATE, DELETE)
INSERT:
Agrega uno o más registros a una (y sólo una)
tabla en una base de datos relacional.
Sintaxis:
INSERT INTO tabla
(columna1,columna2,columnaN) VALUES
(valor1,valor2,ValorN) Ejemplo:
INSERT INTO agenda_telefonica (nombre,
numero) VALUES ('Roberto Jeldrez', '4886850');
INSERT INTO agenda_telefonica VALUES
('Roberto Jeldrez', '4886850'); INSERT INTO
agenda_telefonica VALUES ('Roberto Fernández',
'4886850'), ('Alejandro Sosa', '4556550');
UPDATE
Una sentencia UPDATE de SQL es utilizada
para modificar los valores de un conjunto de
registros existentes en una tabla.
Sintaxis:
UPDATE
tabla
SET
columna1
=
valor1,columna2 = valor2WHERE columnaN =
valorN
Ejemplo:
UPDATE Emple2 SET APELLIDO=’RUIZ’
WHERE APELLIDO=’SALA’;
DELETE
Una sentencia DELETE de SQL borra cero
o más registros existentes en una tabla.
Sintaxis:
DELETE FROM Tabla
WHERE criterio
Ejemplo:
DELETE FROM EMPLE2
WHERE OFICIO=’DIRECTOR’ AND DEP