490 likes | 923 Vues
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.
E N D
Unidad IV • Objetivo de la Unidad: • El alumno manejará las instrucciones de SQL para consulta y manipulación de las bases de datos.
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. 4.1 Introducción
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. NOTNegación lógica. Devuelve el valor contrario de la expesión
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: El SQL es manejable bajo dos modalidades distintas: como módulo interactivo que proporciona un potente lenguaje de consultas interpretadas y como lenguaje huéspedde un lenguaje anfitrión. Respeta la independencia entre el nivel conceptual y las aplicaciones (nivel externo), ya que permite la creación de esquemas externos personalizados. Garantiza una seguridad total de acceso a los datos, gracias a una distribución selectiva de prioridades de acceso.
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. 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.
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.
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 from películas: 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 peliculas ORDER BY preciopelicula; 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 ORDER BY preciopelicula DESC;
Ordenar en forma ascendente: SELECT * from peliculas ORDER BY preciopelicula ASC; 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. Selectnocontrol,nombre, especialidad From alumno Wheretelefonoisnotnull Mostrar valores nulos: Selectnocontrol,nombre, especialidad From alumno Wheretelefonoisnull Utilizar Like: Select * From alumno Where nombre like “an*”
Promedio (AVG). SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100; 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*;
¿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: selectco_cliente, nombre, marca, moddelofrom alquilereswhereco_cliente = 1 and fecha_alquiler = (selectmax(fecha_alquiler)from alquilereswhereco_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);
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 JOIN utilizando la siguiente sintaxis: SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tb3.campo3 comptbx.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