Ejercicios SQL Bases de Datos

of 7

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
PDF
7 pages
1 downs
7 views
Share
Description
EJERCICIOS SQL BASES DE DATOS ACTIVIDADES COMPLEMENTARIAS TEMA 3 Tablas EMPLE y DEPART 1) Selecciona el apellido, oficio y localidad de los empleados cuyo oficio sea “analista” SELECT APELLIDO, OFICIO, LOC FROM EMPLE, DEPART WHERE OFICIO='ANALISTA'; 2) Obtén los datos de los empleados cuyo director sea “Cerezo” SELECT * FROM EMPLE WHERE DIR= (SELECT EMP_NO FROM EMPLE WHERE OFICIO='DIRECTOR' AND APELLIDO= 'CEREZO'); 3) Obtén los datos de los empleados del departamento “Ventas” SELECT * FROM EMPLE
Tags
Transcript
  EJERCICIOS SQL BASES DE DATOS ACTIVIDADES COMPLEMENTARIAS TEMA 3 Tablas EMPLE y DEPART1)Selecciona el apellido, oficio y localidad de los empleados cuyo oficio sea “analista” SELECT APELLIDO, OFICIO, LOC FROM EMPLE, DEPART WHERE OFICIO='ANALISTA'; 2)Obtén los datos de los empleados cuyodirector sea “Cerezo” SELECT * FROM EMPLE WHERE DIR= (SELECT EMP_NO FROM EMPLE WHERE OFICIO='DIRECTOR' AND APELLIDO= 'CEREZO'); 3)Obtén los datos de los empleados del departamento “Ventas” SELECT * FROM EMPLE WHERE DEPT_NO=(SELECT DEPT_NO FROM DEPART WHERE NOMBRE='VENTAS'); 4)Obtén los datos de los departamentos que no tengan empleados SELECT * FROM DEPART WHERE DEPT_NO NOT IN (SELECT DISTINCT DEPT_NO FROM EMPLE); 5)Obtén los datos de los departamentos que tengan empleados SELECT*FROM DEPART WHERE EXISTS (SELECT * FROM EMPLE, DEPART WHERE EMPLE.DEPT_NO=DEPART.DEPT_NO); 6)Obtén el apellido y el salario de los empleados que superen el salario de del departamento 20 SELECT APELLIDO, SALARIO FROM EMPLE WHERE SALARIO> (SELECT MAX (SALARIO) FROM EMPLE WHERE DEPT_NO=20) Tabla LIBRERIA7) V isualiza el tema, estante y ejemplares de las filas de LIBRERIA con ejemplares comprendidos entre 8 y 15. SELECT * FROM LIBRERIAWHERE EJEMPLARES BETWEEN 8 AND 15 8)Visualiza las columnas tema, estante y ejemplares de las filas cuyo estante no este comprendido entre la B y la D. SELECT TEMA, ESTANTE, EJEMPLARES FROM LIBRERIA WHERE ESTANTE NOT BETWEEN 'B' AND 'D'; 9)Visualiza todos los temas de LIBRERIA cuyo número de ejemplares sea inferior a los que hay en medicina. SELECT TEMA FROM LIBRERÍA WHERE EJEMPLARES < (SELECT EJEMPLARES FROM LIBRERIA WHERE TEMA ='MEDICINA'); 10)Visualiza los temas de LIBRERIA cuyo número de ejemplares no este entre 15 y 20, ambos incluidos. SELECT TEMA FROM LIBRERIA WHERE EJEMPLARES NOT BETWEEN 15 AND 20 Tablas ALUMNOS, ASIGNATURAS y NOTAS11) V isualiza todas las asignaturas que contengan tres letras 'o' en su interior y tengan alumnos matriculados enMadrid. SELECT * FROM ASIGNATURASWHERE NOMBRE LIKE '%O%' AND COD IN (SELECT COD FROM NOTASWHERE DNI IN (SELECT DNI FROM ALUMNOS WHERE POBLA='Madrid')); 12)Visualiza los nombres de los alumnos de Madrid que tengan alguna asignatura suspensa. SELECT APENOM FROM ALUMNOSWHERE POBLA='Madrid' AND DNI IN (SELECT DNI FROM NOTAS WHERE  NOTA<5); 13)Muestra los nombres de alumnos que tengan la misma nota que tiene 'Diaz Fernandez, Maria' en 'FOL' en alguna asignatura. SELECT APENOM FROM ALUMNOS, NOTAS WHERE NOTA IN (SELECT NOTA FROM NOTASWHERE COD IN (SELECT COD FROM ASIGNATURAS WHERE NOMBRE='FOL')AND DNI IN (SELECT DNI FROM ALUMNOS WHERE APENOM='Díaz Fernández, María') AND ALUMNOS.DNI=NOTAS.DNI); 14) O btén los datos de las asignaturas que no tengan alumnos. SELECT*FROM ASIGNATURAS WHERE COD NOT IN (SELECT COD FROM NOTAS); 15)Obtén el nombre de los alumnos que tengan nota en la asignatura con código 1. SELECT APENOM FROM ALUMNOS, NOTASWHERE ALUMNOS.DNI=NOTAS.DNI AND COD=1; 16)Obtén el nombre de los alumnos que no tengan nota en la asignatura con código 1. SELECT UNIQUE APENOM FROM ALUMNOSWHERE DNI NOT IN (SELECT DNI FROM NOTAS WHERE COD=1);  ACTIVIDADES COMPLEMENTARIAS TEMA 4 1. Dada la tabla EMPLE, obtén el sueldo medio, el número de comisiones no nulas, el máximo sueldo y el mínimo sueldo de los empleados del departamento 30. Emplea el formato adecuado para la salida para las cantidades numéricas. SELECT AVG(salario), count(comision), max(salario), min(salario) FROM emple where dept_no=30;select round(((sum(salario)+sum(comision))/count(*)),-1) MEDIA_DE_SUELDO , count(comision) COMISIONES NO  NULAS , max (salario) SALARIO MAXIMO , min(salario) SALARIO MINIMO from emple where DEPT_NO=30 ;select to_char(avg(salario),'09G999D99') MEDIA_DE_SUELDO2 ,count(comision) COMISIONES NO NULAS ,max (salario) SALARIO MAXIMO , min(salario) SALARIO MINIMO from emple where DEPT_NO=30 2. Visualiza los temas con mayor número de ejemplares de la tabla LIBRERIA y que tengan, al menos, una 'E' (pueden ser un tema o varios). select tema TEMAS CON MAS EJEMPLARES from libreria where libreria.tema like '%E%';select tema TEMAS CON MAS EJEMPLARES from libreria where libreria.tema like '%E%' and ejemplares=(select max(ejemplares) from libreria where libreria.tema like '%E%'); 3.Dada la tabla MISTEXTOS, ¿qué sentencia SELECT se debe ejecutar para tener este resultado? RESULTADOMETODOLOGÍA DE LA PROGRAMACIÓ_^_^_^_^_ INFORMÁTICA BÁSICA^_^_^_^_^_^_^_^_^_^_ SISTEMAS OPERATIVOS_^_^_^_^_^_^_^_^_^_ SISTEMAS DIGITALES^_^_^_^_^_^_^_^_^_^_ MANUAL DE C_^_^_^_^_^_^_^_^_^_^_^_^_^_*/select rpad(rtrim(ltrim(titulo, ' '), '. '),38, '_^') from mistextosselect rpad(rpad(rtrim(ltrim(titulo, ' '), '. '), length(rtrim(ltrim(titulo, ' '), '. '))+mod(length(rtrim(ltrim(titulo, ' '), '. ')),2), '^'), 39,'_^') Titulos from mistextos 4.Visualiza los títulos de la tabla MISTEXTOS sin los caracteres punto y comillas, y en minúscula, de dos formas conocidas . select * from mixtextosselect lower(rtrim(ltrim(titulo, ' '), '. ')) from mistextosselect translate(lower(titulo),'a .','a') from mistextos;select lower(replace(replace(titulo,'.',''),' ','')) FROM mistextos; 5.Dada la tabla LIBROS, escribe la sentencia SELECT que visualice dos columnas, una con el AUTOR y otra con el apellido del autor. select * from libros select rtrim(substr(autor,1,instr(autor, ',')), ',') as APELLIDO , autor from librosselect substr(autor,1,instr(autor, ',')-1) as APELLIDO , autor from libros 6. Escribe la sentencia SELECT que visualice las columna de AUTOR y otra columna con el nombre del autor (sin el apellido) de la tabla LIBROS. select autor, rtrim(substr(autor,1,instr(autor, ',')), ',') as APELLIDO from librosselect autor, substr(autor,instr(autor, ',')+2) as APELLIDO from libros 7. A partir de la tabla LIBROS, realiza una sentencia SELECT que visualice en una columna, primero el nombre del autor y, luego, su apellido. select concat(rtrim(substr(autor,1,instr(autor, ',')), ','), rtrim(substr(autor,instr(autor, ',')), ','))as NOMBRE from libros 8.A partir de la tabla LIBROS, realiza una sentencia SELECT para que aparezcan los títulos ordenados por su número de caracteres. select titulo from librosorder by length(titulo) 9. Dada la tabla NACIMIENTOS, realiza una sentencia SELECT que obtenga la siguientesalida:NOMBRE, FECHANAC, FECHA_FORMATEADA, donde FECHA_FORMATEADA tiene el siguieten formato: Nació el 12 de mayo de 1982 . select nombre, fechanac, 'Nació el ' || to_char(fechanac, 'DD') || ' de ' || rtrim(to_char(fechanac, 'MONTH')) || ' de ' || to_char(fechanac, ' YYYY ') from nacimientos;select nombre, fechanac, to_char(fechanac, ' Nació el DD de MONTH de YYYY') from nacimientos;  10. Dada la tabla LIBRERIA, haz una sentencia SELECT que visualice el tema, el último carácter del tema que no sea blanco y el número de caracteres de tema(sin contar los blancos de la derecha) ordenados por tema. select rtrim(tema,' ') , length(rtrim(tema,' ')) from libreria;select tema,substr(rtrim(tema,' '),length(rtrim(tema,' '))) , length(rtrim(tema,' ')) from libreria; 11. A partir de la tabla NACIMIENTOS, visualiza en una columna el NOMBRE seguido de su fecha de nacimiento formateada (quita blancos del nombre). select length(rtrim(nombre,' ')) as PruebaEspacios, rtrim(nombre,' ') || ' ' || ( 'Nació el ' || to_char(fechanac, 'DD') || ' de ' ||lower(to_char(fechanac, 'MONTH')) || 'de ' || to_char(fechanac, 'YYYY') || '.' ) as nombre_y_fecha_formateada from nacimientos; 12. Convierte la cadena '010712' a fecha y visualiza su nombre de mes en mayúsculas. select to_char(to_date('010712','DDMMYY'),'MONTH') as fechafrom dual; 13. Visualiza aquellos temas de la tabla LIBRERIA cuyos ejemplares sean 7 con el nombre de tema de 'SEVEN'; el resto de temas que no tengan 7 ejemplares se visualizarán como están. select tema, decode(ejemplares,7,'SEVEN', ejemplares) from libreria; 14. A partir de la tabla EMPLE, obtén el apellido de los empleados que lleven más de 15 años trabajando. select APELLIDO,(to_char(current_date,'YYYY') -to_char(fecha_alt,'YYYY')) FROM EMPLEWHERE(to_char(current_date,'YYYY') -to_char(fecha_alt,'YYYY'))>15;select APELLIDO from EMPLEwhere (to_char (current_date,'YYYY') -to_char (fecha_alt,'YYYY') )> 15;select APELLIDOFROM EMPLE WHERE months_between(sysdate,emple.fecha_alt)>(15*12); 15. Selecciona el apellido de los empleados de la tabla EMPLE que lleven más de 16 años trabajando en el departamento 'VENTAS'. select APELLIDO,(to_char(current_date,'YYYY') -to_char(fecha_alt,'YYYY'))FROM EMPLEWHERE(to_char(current_date,'YYYY') -to_char(fecha_alt,'YYYY'))>16 ANDEMPLE.DEPT_NO=(SELECT DEPT_NOFROM DEPART WHERE DNOMBRE='VENTAS');select APELLIDO FROM EMPLE, depart WHERE months_between(sysdate,emple.fecha_alt)>(16*12)and emple.dept_no=depart.dept_noand dnombre='VENTAS' 16. Visualiza el apellido, el salario y el número de departamento de aquellos empleados de la tabla EMPLE cuyo salario sea el mayor de su departamento. SELECT apellido, salario, dept_no as numero_departamento from emple e where salario=(select max(salario) from emplewhere emple.dept_no=e.dept_no) order by dept_no; 17. Visualiza el apellido, el salario y el número de departamento de aquellos empledados de la tabla EMPLE cuyo salario supere a la media en su departamento. SELECT apellido, salario, dept_no as numero_departamento from emple e where salario>(select avg(salario) from emplewhere emple.dept_no=e.dept_no) order by dept_no;  ACTIVIDADES COMPLEMENTARIAS TEMA 5 Tablas EMPLE y DEPART1) Partiendo de la tabla EMPLE, visualizar por cada oficio de los empleados del departamento 'VENTAS' la suma de salarios. select sum(salario), oficio from emple where dept_no in (select dept_no from depart where dnombre like 'VENTAS') group by oficio; 2) seleccionar aquellos pedidos de la tabla EMPLE cuyo salario sea igual a la media de su salario en su departamento. select apellido, salario from emple where (salario,dept_no) in (select avg(salario),dept_no from emple group by dept_no); 3) A partir de la tabla emple, visualizar el numero de empleados de cada departamento cuyo oficio sea 'EMPLEADO' select dept_no,count(*) from emple where oficio like 'EMPLEADO' group by dept_no; 4) Desde la tabla EMPLE, visualizar el departamento que tenga más empleados cuyo oficio sea 'EMPLEADO' select dept_no, count(*) from emple where oficio like 'EMPLEADO' group by dept_no having count(*)=(select max(count(*)) from emple where oficio like 'EMPLEADO'group by dept_no); 5) A partir de las tablas EMPLE y DEPART, visualizar el número de departamento y el nombre de departamento que tenga más empleados cuyo oficio sea 'EMPLEADO' select dept_no,dnombre from depart where dept_no=(select dept_no from emple where oficio= 'EMPLEADO' group by dept_no having count(*)=(select max(count(*)) from emple where oficio='EMPLEADO' group by dept_no)); 6) Buscar los departamentos que tienen más de dos personas trabajando en la misma profesión select dept_no,count(*) from emple group by dept_no,oficio having count(*)>2; Tablas ALUMNOS, ANTIGUOS y NUEVOS7) Visualizar los nombres de los alumnos de la tabla ALUM que aparezcan en alguna de estas tablas: NUEVOS y ANTIGUOS. select nombre from alum intersect (select nombre from nuevos union select nombre from antiguos); 8) Escribir las distintas formas en que se puede poner la consulta anterior llegando al mismo resultado select nombre from alum where nombre in(select nombre from nuevo) union select nombre from antiguo);select nombre from alum where nombre in (select nombre from nuevo) or nombre in (select nombre from antiguo); 9)Visualizar aquellos nombres de la tabla ALUM que no esten en la tabla ANTIGUOS ni en la tabla NUEVOS select nombre from alum minus select nombre from antiguos minus select nombre from nuevos; Tablas PERSONAL, PROFESORES Y CENTROS10) Realizar una consulta en la que aparezca por cada centro y en cada especialidad el numero de profesores. Si el centro no tiene profesores debe aparecer un 0 en la columna de profesores. select nombre,especialidad,count(*) from centros,profesores group by cod_centro,especialidad;select nombre,especialidad,count(dni) from centros,profesores group by cod_centro having (centros.cod_centro =  profesores.cod_centro); 12) Obtener la especialidad con menos empleados select especialidad from profesores where apellidos = (select min(apellidos) from profesores);
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x