Bases de Datos Ejercicios de SQL



Documentos relacionados
Informática Básica Práctica Tema 3 Ejercicios de SQL

Bases de Datos I Práctica 1 Ejercicios de SQL

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

Ejercicios SQL - Select TutorialesNET Versión Revisión 1 25 de julio de 2015

Bases de Datos Relacionales III

2. Distinguir entre los comandos SQL*Plus y las sentencias SQL. 3. Consultar la estructura de una tabla, por ejemplo emp.

Escribiendo sentencias básicas de SQL

Ampliación de Bases de Datos Práctica 1: El lenguaje PL/SQL de Oracle Sesión 1: Introducción al PL/SQL

Creación de Vistas. Copyright Oracle Corporation, All rights reserved.

Visualización de Datos a partir de Varias Tablas. Copyright Oracle Corporation, All rights reserved.

Unidad. Lenguaje SQL. (Structured Query Language)

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

Escritura Básica de Sentencias SQL. Copyright Oracle Corporation, All rights reserved.

Subconsultas Multi-Columna. Copyright Oracle Corporation, All rights reserved.

Constraints (Restricciones) Copyright Oracle Corporation, All rights reserved.

Introducción a Oracle SQL-Plus. Introducción a Oracle SQL-Plus

Introducción al lenguaje SQL

Introducción a SQL. Bloque III (Prácticas) Informática Básica - Curso 2010/2011

6.1. Introducción. Guía 5. SQL.

Tutorial de SQL - El comando SELECT

Manipulación de Datos. Copyright Oracle Corporation, All rights reserved.

Diseño de bases de datos Práctica-1 Definición de datos

Subconsultas. Copyright Oracle Corporation, All rights reserved.

Tema 2. Bases de Datos Relacionales

1. Introducción Tablas de referencia Expresiones 6

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Funciones a Nivel de Fila. Copyright Oracle Corporation, All rights reserved.

Guía de ejercicios de SQL Prof. Mauricio E. Fernández N. Semestre Agosto-Diciembre de 2012

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

Definición y Manipulación de Bases de Datos con SQL. 1. Muestra la estructura de la tabla dept. Muestra todos los datos de la tabla dept.

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

Conceptos Avanzados de Programación en Internet

Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Tema 4. Manipulación de datos con SQL

Características del lenguaje SQL

Practicas de BB. DD. ORACLE

3. El catálogo 26. Laboratorio de Bases de Datos

GONZALEZ VARGAS ANA KAREN GUTIERREZ MUNGUIA LUIS DANIEL TELLEZ ARCOS DIANA FATIMA PROBLEMA A RESOLVER

Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ingeniería en Ciencias y Sistemas

Instalación de oracle en GNU/Linux Debian o Ubuntu.

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

Nombre: 1. Selecciona todos los registros de la tabla EMPLOYEES. Anota el nº de filas obtenidas.

Ejercicios Algebra Relacional y SQL / Tienda

Departamento de Lenguajes y Sistemas Informáticos

GUIA DE EJERCICIOS PARA RESOLVER: SQL

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

Introducción a SQL sobre Oracle

PRESENTACION SQL SENTENCIAS SQL 5TO SEMESTRE DE INGENIERIA PROFESOR INGENIERO EDGAR SANDOVAL

Desarrollo de Aplicaciones Informáticas

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

APÉNDICE D. INTRODUCCIÓN A SQL

Introducción a las Bases de Datos y al Modelo Relacional

Conceptos Avanzados de Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

Universidade da Coruña Departamento de Computación. Ampliación de SQL. Luis A. González Ares.

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

MANUAL BÁSICO DEL LENGUAJE SQL

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

INTRODUCCION A SQL CARACTERÍSTICAS DEL LENGUAJE ESTRUCTURADO DE CONSULTA SQL COMPONENTES DEL SQL

Conceptos Avanzados de Bases de datos

Manipulación de datos en SQL

Tema 5. Lenguaje de Definición de Datos

Capítulo 3: Álgebra Relacional

Lenguaje SQL - Ejercicios

Está basado en el álgebra y en el cálculo relacional.

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Terminología Equivalente

Ejemplo de gestión de datos con SQL

MATERIAL INTRODUCTORIO ORACLE 11G

Capítulo 4. Realización de consultas

Computación Web (Curso 2015/2016)

Transact-SQL. Declaraciones del Data Control Language (DCL) que se utilizan para determinar quién ve o modifica los datos.

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Tema 4: Dinámica del Modelo Relacional. El lenguaje SQL

REGLAS DE CODD DEL MODELO RELACIONAL

Tema: Respaldo y recuperación

Bases de Datos MySQL 1

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

EJERCICIOS CON SOLUCIONES DE SQL ÍNDICE TABLA HOSPITAL... 4 TABLA SALA... 4 TABLA PLANTILLA... 4 TABLA OCUPACIÓN... 5 TABLA DOCTOR...

Oracle Express y Toad for Oracle

Ejercicios SQL Empresa

Bases de Datos 2. Teórico

CAPITULO II Base de datos. Tipos de base de datos. Comandos y consultas. Tipos de bases de datos Comandos y consultas O B J E T I V O S

TEMA 4.. CONSULTA DE DATOS I.

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

Operadores. Además se pueden emplear en sentencias SET.

Precedencia de la Clásula de Storage

Transcripción:

Bases de Datos Ejercicios de SQL 1. Descripción del modelo de datos El modelo de datos que se usará para las consultas está reflejado en el siguiente modelo E-R. EMPNO ENAME JOB DEPTNO DNAME DEPT (0,N) (0,1) EMP HIREDATE LOC Es Jefe (0,N) (0,1) Subordinado de Transformado a relacional, la base de datos almacena dos tablas: DEPT y EMP, cuyos campos se describen a continuación. DEPT Campo Tipo Descripción DEPTNO NUMBER(2) NOT NULL Número o código del departamento. Es la clave primaria de la tabla. DNAME VARCHAR2(14) Nombre del departamento. LOC VARCHAR2(13) Localidad (o ciudad) donde el departamento está ubicado. EMP Campo Tipo Descripción EMPNO: NUMBER(4) NOT NULL Número o código del empleado. Es la clave primaria de la tabla. ENAME VARCHAR2(10) Nombre del empleado JOB VARCHAR2(9) Trabajo del empleado MGR NUMBER(4) Código del jefe del empleado. Clave foránea que referencia (cíclicamente) la tabla EMP HIREDATE DATE Fecha de contratación. SAL NUMBER(7, 2) Salario mensual del empleado COMM NUMBER(7, 2) Comisión DEPTNO NUMBER(2) Código del departamento al que el empleado está adscrito. Clave foránea que referencia la tabla DEPT SAL COMM Notas La base de datos usada es un ejemplo que Oracle incorpora en su instalación, por lo que tanto los nombres de los campos como sus valores están en inglés. Así, un vendedor tendrá en el atributo JOB el valor SALESMAN, o el departamento de investigación es RESEARCH. Además, todos los nombres (de empleado, departamento, trabajo) están almacenados en mayúsculas. En cuanto a la definición de las tablas, aunque todos los campos excepto las claves primarias admiten valores nulos, consideraremos especialmente los siguientes casos: COMM: Si tiene un valor nulo, indica que el empleado no tiene comisión. MGR: Si tiene un nulo, indica que el empleado no tiene jefe. Pág. 1/6

2. Datos almacenados en las tablas El contenido de la tabla DEPT es el siguiente: DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 4 filas seleccionadas. Y el contenido de la tabla EMP, el siguiente: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 <Nulo> 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 <Nulo> 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 <Nulo> 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 <Nulo> 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 <Nulo> 20 7839 KING PRESIDENT <Nulo> 17-NOV-81 5000 <Nulo> 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 1100 <Nulo> 20 7900 JAMES CLERK 7698 03-DEC-81 950 <Nulo> 30 7902 FORD ANALYST 7566 03-DEC-81 3000 <Nulo> 20 7934 MILLER CLERK 7782 23-JAN-82 1300 <Nulo> 10 14 filas seleccionadas. Pág. 2/6

3. Consultas 3.1. Repaso de Informática Básica 1. Obtener todos los datos de todos los empleados. 2. Obtener todos los datos de todos los departamentos. select * from dept 3. Obtener todos los datos de los administrativos (su trabajo es, en inglés, CLERK ). where JOB= CLERK 4. Idem, pero ordenado por el nombre. where JOB= CLERK order by ename 5. Obtén el mismo resultado de la pregunta anterior, pero modificando la sentencia SQL. select empno, ename, job, hiredate, sal, comm, deptno from emp where JOB= CLERK order by 2 6. Obtén el número (código), nombre y salario de los empleados. select empno, ename, sal from emp 7. Lista los nombres de todos los departamentos. 8. 9. Ídem, pero ordenándolos por nombre. order by 1 Ídem, pero ordenándolo por la ciudad (no se debe seleccionar la ciudad en el resultado). order by loc 10. Ídem, pero el resultado debe mostrarse ordenado por la ciudad en orden inverso. order by loc desc 11. Obtener el nombre y empleo de todos los empleados, ordenado por salario. order by sal 12. Obtener el nombre y empleo de todos los empleados, ordenado primero por su trabajo y luego por su salario. 13. order by job, sal Ídem, pero ordenando inversamente por empleo y normalmente por salario. order by job desc, sal Pág. 3/6

14. Obtén los salarios y las comisiones de los empleados del departamento 30. 15. select sal, comm from emp where deptno=30 Ídem, pero ordenado por comisión. select sal, comm from emp where deptno=30 order by comm 16. (a) Obtén las comisiones de todos los empleados. (b) Obtén las comisiones de los empleados de forma que no se repitan. (a) select comm from emp (b) select distinct comm from emp 17. Obtén el nombre de empleado y su comisión SIN FILAS repetidas. select distinct ename, comm from emp 18. Obtén los nombres de los empleados y sus salarios, de forma que no se repitan filas. select distinct ename, sal from emp 19. Obtén las comisiones de los empleados y sus números de departamento, de forma que no se repitan filas. select distinct comm, deptno from emp 20. Halla los empleados que tienen una comisión superior a la mitad de su salario. where comm >sal/2 21. Halla los empleados que no tienen comisión, o que la tengan menor o igual que el 25% de su salario. where comm is null or comm <= (0.25*sal) 22. Hallar el código, salario y comisión de los empleados cuyo código sea mayor que 7500. select empno, sal, comm from emp where empno >7500 23. Obtén todos los datos de los empleados que estén (considerando una ordenación ASCII por nombre) a partir de la J, inclusive. where ename >= J 24. Obtén el salario, comisión y salario total (salario+comisión) de los empleados con comisión, ordenando el resultado por número de empleado. select empno, sal, comm, sal+comm from emp where comm is not null order by empno 25. Lista la misma información, pero para los empleados que no tienen comisión. select empno, sal, comm, sal from emp where comm is null order by empno Pág. 4/6

26. Muestra el nombre de los empleados que, teniendo un salario superior a 1000, tengan como jefe al empleado cuyo código es 7698. where sal>1000 and mgr=7698 27. Halla el conjunto complementario del resultado del ejercicio anterior. where not (sal>1000 and mgr=7698) 28. Indica para cada empleado el porcentaje que supone su comisión sobre su salario, ordenando el resultado por el nombre del mismo. select ename, (comm/sal)*100 from emp 29. Hallar los empleados del departamento 10 cuyo nombre no contiene la cadena LA. where deptno=10 and ename like %LA% 30. Obtén los empleados que no son supervisados por ningún otro. where mgr is null 31. Obtén los nombres de los departamentos que no sean Ventas (SALES) ni investigación (RESEARCH). Ordena el resultado por la localidad del departamento. where dname not in ( SALES, RESEARCH ) order by loc 32. Deseamos conocer el nombre de los empleados y el código del departamento de los administrativos(clerk) que no trabajan en el departamento 10, y cuyo salario es superior a 800, ordenado por fecha de contratación. select ename, deptno from emp where job = CLERK and deptno<>10 sal>800 order by hiredate 33. Para los empleados que tengan comisión, obtén sus nombres y el cociente entre su salario y su comisión (excepto cuando la comisión sea cero), ordenando el resultado por nombre. select ename, sal/comm from emp where comm>0 order by 1 34. Lista toda la información sobre los empleados cuyo nombre completo tenga exactamente 5 caracteres. where ename like 35. Lo mismo, pero para los empleados cuyo nombre tenga al menos cinco letras. where ename like % 36. Halla los datos de los empleados que, o bien su nombre empieza por A y su salario es superior a 1000, o bien reciben comisión y trabajan en el departamento 30. where (ename like A% and sal>1000) or (comm is not null and deptno=30) Pág. 5/6

37. Halla el nombre, el salario y el sueldo total de todos los empleados, ordenando el resultado primero por salario y luego por el sueldo total. En el caso de que no tenga comisión, el sueldo total debe reflejar sólo el salario. select ename, sal, coalesce(sal+comm, sal) from emp order by 2,3 38. Obtén el nombre, salario y la comisión de los empleados que perciben un salario que está entre la mitad de la comisión y la propia comisión. select ename, sal,comm from emp where sal between comm/2 and comm 39. Obtén el complementario del anterior. select ename, sal,comm from emp where sal not between comm/2 and comm or comm is null 40. Lista los nombres y empleos de aquellos empleados cuyo empleo acaba en MAN y cuyo nombre empieza por A. where JOB like %MAN and ename like A% 41. Lista los nombres y fecha de contratación de aquellos empleados que no son vendedores(salesman). select ename, hiredate from emp where JOB <> SALESMAN 42. Obtén la información disponible de los empleados cuyo número es uno de los siguientes: 7844, 7900, 7521, 7521, 7782, 7934, 7678 y 7369, pero que no sea uno de los siguientes: 7902, 7839, 7499 ni 7878. La sentencia no debe complicarse innecesariamente, y debe dar el resultado correcto independientemente de lo empleados almacenados en la base de datos. select ename, hiredate from emp where empno in (7844, 7900, 7521, 7521, 7782, 7934, 7678, 7369) 43. Para los empleados que tengan como jefe a un empleado con código mayor que el suyo, obtén los que reciben de salario más de 1000 y menos de 2000, o que están en el departamento 30. select ename, hiredate from emp where mgr >empno and (sal between 1000 and 2000 or deptno=30) 44. Obtén los empleados que trabajan en Dallas o New York. select ename,loc from emp e join dept d on e.deptno=d.deptno where loc in ( DALLAS, NEW YORK ) 45. Para cada empleado obtén el nombre del departamento donde trabaja select ename,dname from emp e join dept d on e.deptno=d.deptno 46. Muestra los datos de los empleados del departamento de ventas ( SALES ) select empno, ename, job, hiredate, sal, comm from emp e join dept d on e.deptno=d.deptno where dname= SALES Pág. 6/6