Bases de datos con MYSQL TERCERA SESION Sentencias

Bases de datos con MYSQL TERCERA SESION

Sentencias en SQL SELECT FROM WHERE GROUP BY HAVING ORDER BY Las sentencias SQL no son casesensitive. Las sentencias SQL pueden estar en una o más líneas. Las palabras reservadas no pueden estar abreviadas o divididas en varias líneas. Las cláusulas por lo general son colocadas en líneas diferentes. Para mejorar la legibilidad es bueno utilizar indentación. Las palabras reservadas por lo general se escriben en mayúsculas. Para su mejor comprension se dividen en sublenguajes:

Escribiendo sentencias SQL � � � DDL (Data Definition Language): Definición de datos. � Que datos queremos guardar: tablas y atributos � Mecanismos de integridad de los datos: llaves primarias y externas, restricciones de usuario (dominios). DML (Data Manipulation Language): Acceso y actualizacion de datos. • Consultas • Inserciones • Actualizaciones • Eliminaciones DCL (Data Control Language): Control del acceso a los datos. • Control seguridad: definición de usuarios y privilegios de acceso. • Control acceso concurrente: gestion de transacciones

SENTENCIA SELECT Sintaxis SELECT, identifica que columnas FROM, identifica de que relación o tabla

Selección de todas las columnas Seleccionar todos libros de la base de datos SELECT FROM * LIBRO; Seleccionar todos los datos de los departamentos SELECT FROM * DEPARTAMENTO

Selección de columnas especificas Recuperar el título y autor de cada libro SELECT FROM titulo, autor LIBRO; Recuperar el código y la localización de los departamentos SELECT FROM id, lugar_id DEPARTAMENTO

Restringiendo filas Restringir datos en una tabla, nos permite seleccionar solo las tuplas que necesitamos. Las tuplas restringidas deben cumplir una condición Sintaxis WHERE condición La condición indica que registros se seleccionan. Hay diferentes operadores de condición según el tipo de atributo. Podemos construir expresiones condicionales con los operadores boléanos AND, OR, NOT.

Usando la cláusula WHERE Seleccionar el id, apellido, trabajo, departamento de los empleados que trabajan en el departamento 90 SELECT FROM WHERE id, apellido, trabajo_id, departamento_id EMPLEADO departamento_id = 90 ;

Condiciones de comparación Estas condiciones de comparacion operan con datos unicos, es decir un número, una fecha, una cadena. Se puede utilizar parentesis para agrupar por prioriodades las condiciones. 06/01/2022

Condiciones de comparación especiales Para poder operar con datos especiales como: Valores null Conjunto de datos Cadenas de caracteres Rangos de valores Tenemos que utilizar los siguientes operadores lógicos: 06/01/2022

Usando BETWEEN Seleccionar todos los datos de los prestamos efectuados durante la gestión 2005 SELECT FROM WHERE * PRESTAMO dia_pres BETWEEN '2005 -01 -01' AND '2005 -12 -31'; Seleccionar apellido y salario de los empleados que ganan entre 5000 y 10000 SELECT FROM WHERE apellido, salario EMPLEADO salario BETWEEN 5000 AND 10000;

Usando la condición IN Se utiliza esta condicion para verificar si un atributo esta presente en una lista de valores especifica Seleccionar a id, apellido, salario y jefe, de todos los empleados q trabajan para alguno de los jefes cuyos ids son : 100, 101, 201 SELECT apellido, salario, jefe_id FROM EMPLEADO WHERE jefe_id IN (100, 101, 201); 06/01/2022

Usando una condición LIKE Usar la condición LIKE para realizar búsquedas con comodines Las condiciones de búsqueda pueden contener caracteres literales o numeros: % denota cero o más caracteres _ denota un caracter SELECT nombre FROM SOCIO WHERE nombre LIKE ‘C%’; SELECT nombre FROM EMPLEADO WHERE nombre LIKE ‘_a%’; 06/01/2022

Usando condiciones NULL Esta condición se utiliza mucho sobre todo para saber que datos no han sido llenados todavía Seleccionar apellido, salario, dia de contratacion de los empleados que no tienen comision SELECT apellido, salario, dia_ent FROM EMPLEADO WHERE comision IS NULL; 06/01/2022

Trabajando con multiples tablas � La reunión o reconstrucción de la relación original se lo realiza a través de las llaves foráneas y también con los operadores de conjunto tradicionales

Tipos de JOINS � Joins del estándar SQL 1999 • Cross Joins Naturales Usando cláusulas Joins completos o de 2 lados Condiciones Join arbitrarias para joins externos • • � � Combinación de los registros de varias tablas, pero solo de los que están relacionados por algún atributo común Normalmente, en la cláusula WHERE se ha de especificar la condición para que las tablas se relacionen

JOIN INTERNO Escribir la condición join en el WHERE Añadir como prefijo el nombre de la tabla al nombre de la columna cuando el mismo nombre de columna aparezca en las 2 tablas que participan del join

Formacion de un JOIN � Para formar un JOIN se tiene que tener el concepto muy claro de LLAVES FORANEAS Y LLAVES LLAVE FORANEA DE PRIMARIAS TABLA DEPARTAMENTOS LLAVE PRIMARIA EN DEPARTAMENTOS

Formacion de un JOIN � Si realizamos una consulta en mostrando todos los datos con la condicion de join tendriamos algo asi: SELECT * FROM EMPLEADO, DEPARTAMENTO WHERE EMPLEADO. TRABAJA_EN = DEPARTAMENTO. NRO

Nombres de columnas ambiguos Usar prefijos de tabla para nombrar los nombres de columnas que están en múltiples tablas. Mejorar el rendimiento usando prefijos de tabla. Distinguir columnas que tienen nombres idénticos pero que están en diferentes tablas mediante el uso de alias. Podemos también identificar a los atributos que tienen el mismo nombre adjunto el nombre de la tabla junto con el atributo SELECT [Nombre tabla]. [nombre atributo]

Usando Alias de tabla Simplificar las consultas usando alias de tablas Mejorar el rendimiento mediante el uso de prefijos de tabla FROM [Nombre tabla] [Alias] FROM [Alias] [Nombre tabla] AS

Ejercicios para la clase � Listar los datos de los nombres de los empleados y el nombre del departamento en que trabajan. � Mostrar todos los empleados que trabajan en cochabamba. � Mostrar el nombre y apellido de los clientes que atendio el empleado de codigo 1

Funciones de Grupo �Las funciones de grupo operan sobre un conjunto de filas (tuplas) agrupadas por el valor de un atributo en comun. Personas que trabajan En el Departamento 1

Directrices para formar grupos � Se tiene que especificar con que atributo, o conjunto de atributos con los que se realizara el grupo � Se tiene que especificar la condicion con que se formara el grupo utilizando la sentencia GROUP BY Grupo formado por la agrupación del atributo Trabaja_en con el valor igual a 1 En este caso GROUP BY = Trabaja_en Ya teniendo la condición realizada Se puede operar los demas atributos con las funciones de grupo

Directrices para funciones de grupo �Existen diversos tipos de funciones de grupo, en esto también algunos DBMS agregan funciones especiales, dentro de las funciones del SQL Standard tenemos: Promedio del atributo AVG( atributo ) seleccionado COUNT( * ) MAX(atributo ) MIN(atributo ) SUM(atributo ) Cuenta las filas de la selección VARIANCE(atributo ) Varianza del atributo Valor máximo del atributo Valor mínimo del atributo Suma todos los valores del atributo

Directrices para funciones de grupo �Las funciones de grupo operan sobre la selección de atributos realizada en la sentencia SELECT

Utilizando las funciones de grupo � Las funciones de grupo, responde a diferentes consultas donde se ve involucrada una previa agrupacion. � Antes de resolver una consulta se debe tener bien definida la idea de cómo se formara el grupo � Ejemplo � ¿Cuál es el salario mas alto de todos los AGRUPACION : TODOS empleados? FUNCION DE GRUPO MAX(ATRIBUTO)

Utilizando funciones de grupo Resolviendo la consulta tendríamos la siguiente sentencia. SELECT MAX(SALARIO) FROM EMPLEADO

Utilizando funciones de grupo � ¿Cuál es el máximo salario de cada departamento? AGRUPACION : DEPARTAMENTO FUNCION DE GRUPO MAX(ATRIBUTO) SELECT TRABAJA_EN , MAX(SALARIO) FROM EMPLEADO GROUP BY TRABAJA_EN

Preguntas para la clase � ¿Cuál es el promedio de los salarios del departamento 1? � ¿Cuál es el promedio de los salarios de todos los departamentos? � ¿Cuál es el salario mas bajo en todos los departamentos? � ¿A cuanto alcanza la suma de los salarios en cada departamento? � Cuantas atenciones a clientes tuvo cada empleado ?

Condicionando grupos � Existe un sentencia que condiciona el resultado de las funciones de grupo : El Promedio De los Salarios por Departamento ¿MOSTRAR SOLO PROMEDIO DE LOS SALARIOS MAYORES A 3000 BS. ?

La clausula HAVING �La clausula HAVING se utiliza para agregar una condicion, despues de haber realizado una funcion de grupo �Se utiliza para condicionar la agrupacion realizada por el GROUP BY

Directrices para utilizar HAVING � Utilizar Having solo para realizar condiciones a funciones de grupo � Tener bien formulado el grupo de datos a trabajar y condiciones a utilizar � Ejm. Promedio de los salarios de los departamentos que sean mayores a 3000 PASO 1 : DEFINIR LA SENTENCIA DE LA FUNCION DE GRUPO SIN LA CONDICION SELECT TRABAJA_EN , AVG(SALARIO) FROM EMPLEADO GROUP BY TRABAJA_EN

Directrices para utilizar HAVING PASO 2 : APLICAR HAVING A LA FUNCION DE GRUPO CONDICIONANDOLO CON UN VALOR SELECT TRABAJA_EN , AVG(SALARIO) FROM EMPLEADO GROUP BY TRABAJA_EN HAVING AVG(SALARIO) > 3000

Preguntas para la Clase � ¿Qué departamentos tienen salarios máximos arriba de 3500? � ¿Qué departamentos en su suma de salarios sobrepasan los 7000 bs. ?
- Slides: 35