TALLER PRÁCTICO DE BASES DE DATOS TEMA: SQL 1. Ejecutar el archivo llamado ejercicio.sql psql –U
user
–h 172.17.9.66
–d
db_name
-f
archivo.sql
2. Conectarse y Comprobar que todo se hizo correctamente psql –U
user
–h 172.17.9.66
–d
db_name
3. Consultar todos los registros en cada una de las tablas SELECT * FROM table_name Algunas Operaciones más usadas en SQL La operación renombramiento: SQL proporciona una herramienta para renombrar relaciones como atributos, para ello se utiliza el operador AS select sucursal.id, sucursal.nombre, credito.id from sucursal, credito; select sucursal.id AS id_sucursal, sucursal.nombre as nombre_sucursal , credito.id AS id_credito from sucursal, credito; Ejemplo: Determinar el nombre de todas las sucursales que tienen activos mayores que al menos una sucursal de Cali SELECT DISTINCT T.nombre from sucursal as T, sucursal as S where T.activos>S.activos and S.ciudad='Cali';
Operadores de cadenas de caracteres: La operación más usada es la operación sobre comparación de patrones, se usa el operador LIKE % Coincide con cualquier cadena de caracteres _ Coincide con cualquier carácter Ejemplo: Ejecutar las siguientes consultas observar y sacar conclusiones SELECT * FROM sucursal WHERE nombre LIKE 'Calle%'; SELECT * FROM sucursal WHERE nombre LIKE '%Calle';
SELECT * FROM sucursal WHERE nombre LIKE '%Calle%'; SELECT * FROM sucursal WHERE ciudad LIKE '_ali%'; SELECT * FROM sucursal WHERE nombre not LIKE 'Calle%' Ejercicio: Buscar Buscar Buscar Buscar cadena
Todos los clientes cuyo nombre empieza con A los documentos que hablen de bases de datos los documentos que empiezan con la palabra Diseño todos los libros que empiezan con cualquier cadena y terminan en la Colombia.
Operador Between: Sirve para expresar en la cláusula WHERE que un valor este entre un valor menor y un valor mayor. Ej: Seleccionar los créditos que tienen un monto entre $500.000 y $1000.000 SELECT * from credito where monto between 500000 and 1000000; SELECT * from credito where monto >= 500000 and monto <= 1000000;
Ejercicio: Seleccionar los créditos que se hicieron en el año 2008 ORDEN DE PRESENTACION DE LAS TUPLAS Se puede utilizar el operador ORDER BY para mostrar en determinado orden el resultado de la consulta.
select * from sucursal ORDER BY activos; select * from sucursal ORDER BY activos asc; select * from sucursal ORDER BY activos desc;
Ejercicio: Buscar todos los clientes, ordenar alfabéticamente. Buscar todos los créditos, ordenar por monto del crédito ascendente Buscar todos los créditos, ordenar por fecha de apertura FUNCIONES DE AGREGACIÓN Las funciones de agregación son funciones que toman una colección valores como entrada y devuelven un solo valor, las funciones agregadas más usadas son:
Suma (SUM) Promedio (AVG) Mínimo (MIN) Máximo(MAX) Conteo(COUNT) Ejemplos: Seleccionar la suma de todos los créditos . SELECT SUM(monto) FROM credito; Seleccionar el valor promedio de los activos de las sucursales SELECT avg(activos) from sucursal; Ejercicios: •
Seleccionar el valor mínimo del monto de los créditos
•
Obtener cuantos créditos se han aprobado en el banco. Obtener el promedio de los activos de las sucursales que hay en Cali
•
CLAUSULA GROUP BY Se utiliza para aplicar funciones de agregación a un conjunto de Tuplas. El atributo o atributos especificados en la cláusula GROUP BY se usan para formar grupos. Ejemplo: Determinar el saldo promedio de cada cuenta agrupadas por sucursal SELECT id_sucursal, avg(cuenta.saldo) FROM cuenta group by id_sucursal;
Ejercicio: Realizar la consulta anterior pero mostrando el nombre de la sucursal
CLAUSULA HAVING La cláusula Having sirve para aplicar condiciones a los grupos formados con la clausula GROUP BY. Si en la misma consulta aparece al mismo tiempo la clausula WHERE y la clausula HAVING primero se aplica la clausula WHERE. Por ejemplo si se quiere determinar el saldo promedio de cada cuenta agrupadas por sucursal, mostrar solo las sucursales que el promedio es menor a 500.000 SELECT id_sucursal, avg(cuenta.saldo) FROM cuenta GROUP BY id_sucursal HAVING avg(cuenta.saldo) <500000;;
SUBCONSULTAS Ejemplo: SQL permite crear consultas anidadas. Las subconsultas son consultas que están dentro de otra consulta. Seleccionar los créditos que se han abierto entre Enero y Julio de 2008 SELECT credito.id, credito.monto FROM credito WHERE credito.id IN (select credito.id from credito where credito.fecha between '01-01-2008' and '31-07-2008');
Seleccionar las cuentas y su propietario cuyo saldo es mayor al promedio de los créditos aprobados actualmente. SELECT cuenta.id, cuenta.saldo, cliente.nombre FROM cuenta join cliente on cuenta.id_cliente=cliente.identificacion AND cuenta.saldo > (select avg(monto) from credito);
VALORES NULOS: Si se quiere buscar campos que tengan valores nulos se usa el comando IS NULL. Seleccionar los empleados que no tienen jefe.
SELECT * FROM empleado where id_jefe is NULL ;
Seleccionar los empleados que no son jefes
SELECT * FROM empleado where id_jefe is NOT NULL;