Manual Trabajo Curso SQL

download Manual Trabajo Curso SQL

of 71

Transcript of Manual Trabajo Curso SQL

MANUAL DE TRABAJOS

EjerciciosEn este Manual de Trabajo aparece el acceso a los distintos ejercicios opcionales y obligatorios del curso de SQL.

Los ejercicios estn divididos segn los bloques del curso: Parte I, Parte II y Parte III. Selecciona cada uno de los bloques para acceder a los ejercicios correspondientes. Todas estas tareas (salvo en Temas 1 y 2) deben quedar reflejadas en sentencias sql y guardadas en un fichero de script llamado, por ejemplo, actividad_temaXX.sql con los comentarios necesarios que consideres pertinentes. Si encuentras problemas o dificultades en la realizacin del ejercicio, no tengas duda en preguntar al tutor o incluso enviarle las sentencias que no funcionan como deben, para que lo vea y te ayude en la resolucin de esta actividad. No obstante, ten en cuenta que no se trata de un ejercicio de autoevaluacin, sino de evaluacin por parte del tutor, por lo cual debes intentar resolverlo por tu cuenta. Cuando acabes la actividad propuesta, comprime el fichero .sql en nico fichero tipo .zip o .rar y envalo al tutor, para que pueda comprobar el grado de tu aprendizaje y orientarte adecuadamente, si lo precisas.

Recuerda que para realizar los ejercicios de la Parte II y III, necesitars el fichero "ejecutame". Que se encuentra dentro de la carpeta Moving to sql.

Parte I, tema 1 El lenguaje de gestin de base de datosObligatorioNOTA: el objetivo es familiarizarse con una base de datos relacional observando la estructura de las tablas y las relaciones entre ellas. Estos ejercicios deben realizarse estudiando el contenido de las tablas y la forma de relacionarse entre ellas

1.- El empleado nmero 7499 pertenece al departamento nmero:a. 30 b. 20 c. 40

2.- El DIRECTOR del empleado 7844 es el empleado nmero:a. 7698 b. 7839 c. 7782

3.- El empleado REY es el director de:a. MARTINEZ b. GARRIDO c. MARTINEZ Y GARRIDO

4.- Al departamento de INVESTIGACION pertenecen los empleados:a. ALONSO Y LOPEZ b. GIL Y JIMENEZ c. GARRIDO Y MARTINEZ

5.- El cliente DISTRIBUCIONES GOMEZ pidi cuatro unidades del producto SILLA DIRECTOR MOD. BUFALO el 7 de enero de 2000:a. Verdadero b. Falso, los datos son incorrectos c. Los datos facilitados son insuficientes afirmacin a. Un pedido b. Dos pedidos c. Tres pedidos para verificar la

6.- El cliente INDUSTRIAS LACTEAS S.A. ha realizado:

7.- Sql es un Sistema Gestor de Bases de Datos:a. Jerrquico b. En red

c. Relacional

8.- Segn el modelo relacional:a. Cada fila de una tabla representa un atributo o caracterstica b. Cada columna de una tabla representa un atributo o caracterstica c. Cada entidad representa un atributo o caracterstica

9.- SQL es:a. Un lenguaje estructurado de consulta b. Un lenguaje procedimental de tercera generacin c. Ambas son correctas

10.- El lenguaje SQL permite:a. Manipular datos (consultar, actualizar, etctera) b. Definir objetos de la base de datos (Crear, modificar y eliminar objetos de la base de datos) c. Ambas son correctas

Parte I, tema 2 Elementos del lenguajeObligatorioNOTA: el objetivo es familiarizarse con una base de datos relacional observando la estructura de las tablas y las relaciones entre ellas. Estos ejercicios deben realizarse estudiando el contenido de las tablas y la forma de relacionarse entre ellas

Elegir la respuesta correcta de las siguientes cuestiones:1.- Cul de los siguientes identificadores no es correcto:a. xx b. 2x c. x2

2.- VARCHAR es:a. Un comando b. Un operador c. Un tipo de dato

3.- Para comparar un dato alfanumrico con un patrn de comparacin que contiene caracteres comodines utilizaremos el operador:a. IN b. LIKE c. =

4.- Siendo el valor de A verdadero (true) y el de B falso (false), el resultado de la expresin A AND B ser:a. Verdadero (true) b. Falso (false) c. Nulo (null)

5.-Siendo el valor de A verdadero (true) y el de B nulo (null), el resultado de la expresin A AND B ser:a. Verdadero (true) b. Falso (false) c. Nulo (null)

6.- Para redondear a dos decimales un nmero (num) utilizaremos la funcin:a. POWER(num,2) b. TRUNC(num,2) c. ROUND(num,2)

7.- Para obtener la longitud de una cadena (cad) utilizaremos la funcin:a. LPAD(cad) b. LOWER(cad) c. LENGTH(cad)

8.- Para calcular en nmero de das entre dos fechas (fecha1 y fecha2) utilizaremos la funcin:a. DATESUBB(fecha1, fecha2) b. DATEDIFF( fecha1,fecha2) c. DUBDATE( fecha1,fecha2)

9.- Para sumar las columnas salario (no puede contener nulos) y comision (si puede contener nulos) necesitaremos la expresin:a. salario + comision b. IFNULL (salario,0) + comision c. salario + IFNULL(comision,0)

10.- Una condicin es:a. Una variable b. Un conjunto de datos, operadores y funciones) c. Un conjunto de datos, operadores y funciones cuyo resultado es verdadero o falso

Parte I, tema 3 Creacin de tablasObligatorioNOTA: No se pueden crear tablas con el mismo nombre que otras ya existentes en la misma base de datos. Si estuviesen ya creadas con ese nombre, es necesario borrarlas previamente

Definicin de las tablasTabla COMPRADORES Campo CIF_comprador Nombre_social Domicilio_social Localidad C_postal Telfono Tabla ARTICULOS Campo Referencia_articulo Descripcin_articulo Precio_unidad IVA Existencias_actuales Tabla FACTURAS Campo Factura_no Fecha_factura CIF_cliente Tabla LINEAS_FACTURA Campo Factura_no Referencia_articulo Unidades

Tipo alfanumrico alfanumrico alfanumrico alfanumrico alfanumrico alfanumrico

de de de de de de

11 caracteres 30 caracteres 30 caracteres 30 caracteres 5 caracteres 9 caracteres

Tipo alfanumrico de 12 caracteres alfanumrico de 30 caracteres numrico de 6 posiciones, con dos decimales numrico de 2 posiciones numrico de 5 posiciones

Tipo numrico de 6 posiciones tipo fecha alfanumrico de 11 caracteres

Tipo numrico de 6 posiciones alfanumrico de 12 caracteres numrico de 3 posiciones

Enunciado 1. Creacin de las tablas con las restricciones. a. Crear la tabla COMPRADORES con la columna de columna cif_comprador como clave primaria con nombre PK_COMPRADORES_CIF, y la columna nombre_social nica con nombre UQ_COMPRADORES_NOMBRE_SOCIAL. La columna telefono debe ser obligatoria.

b. Crear la tabla ARTICULOS, con referencia_articulo como PRIMARY KEY con el nombre PK_ARTICULOS, la columna IVA con valores entre 5 y 25 inclusive y la columna existecias_actuales con valor por defecto 0. c. Crear la tabla FACTURAS con la columna factura_no como clave primaria con el nombre PK_FACTURAS, y la columna fecha_factura tendr como valor por defecto la fecha 1 de enero de 2005. d. Crear la tabla LINEAS_FACTURAS con las columnas factura_no y referencia_articulo como PRIMARY KEY con nombre PK_LINEAS_FACTURA, la columna factura_no como FOREIGN KEY con nombre FK_LINEAS_FACTURAS referenciando la columna factura_no de la tabla facturas con borrado en cascada y la columna referencia_articulo como FOREIGN KEY con nombre FK_LINEAS_ARTICULOS referenciando la columna referencia_articulo de la tabla articulos 2. Aadir a la tabla FACTURAS la columna cod_oficina de tipo numrico de 4 posiciones, con el nmero de oficina 3. Aadir en la tabla FACTURAS la columna cif_cliente como FORIEGN KEY con nombre FK_FACTURA_COMPRADORES referenciando a la columna cif_comprador de la tabla compradores 4. Cambiar en la tabla COMPRADORES el nombre de la columna c_postal portexto_codigo_postal

5. Aadir a la columna cod_oficina de la tabla FACTURAS la comprobacin de estar entre 1 y 1000.

Parte I, tema 4 Actualizacin de tablasObligatorioNOTA: si se quiere hacer pruebas y que las actualizaciones de las tablas no sean validadas, se puede trabajar con el parmetro AUTOCOMMIT = 0. As, en cualquier momento, tendremos la posibilidad de hacer ROLLBACK para deshacer los cambios o COMMIT para validarlos.

Enunciado

Para poder trabajar con las tablas creadas en el tema anterior vamos a insertar algunos valores. Estas inserciones son indispensables para poder realizar los siguientes ejercicios 1. Realizar las inserciones de las siguientes filas:Tabla COMPRADORES Cif_comprador Nombre_social 111111-L TELARES ASUNCION 222222-J TEXTIL LAGO Domicilio Localidad C postal Telefono C. LA RUA 5 ALBACETE 02002 97223141 PLAZA MAYOR 2 ALMERIA 04131 95434567

Tabla ARTICULOS Referencia_articuloDescricion_articuloPrecio_unidadIVAExistencias_actuales 01-LANA LANA 100% NATURAL 31.09 10 100 02-ALGODON ALGODN DE 2 CABOS 18.00 10 155 03-SEDA SEDA CHINA 55.50 15 190 04-LINO LINO EUROPEO 44.00 12 250 Tabla FACTURAS Factura_no 1 2 3 4

Fecha_factura 12 de mayo de 2004 18 de julio de 2004 31 de julio de 2004 10 de agosto de 2004

Cliente_no 111111-L 111111-L 222222-J 222222-J

Cod_oficina 1212 1231 1406 1212

Tabla LINEAS_FACTURAS Factura_no Referencia_articulo 1 01-LANA 1 04-LINO 2 01-LANA 2 02-ALGODN

Unidades 120 75 20 50

2. Insertar un nuevo artculo con valoresReferencia_articulo 06-CUERO Precio_unidad 10.99 IVA 10

Hacer un listado de las filas de la tabla ARTICULOS (SELECT * FROM articulos;) e

indicar

sucedido con las columnas existencias_actuales razonando la respuesta.

que

ha

descripcion_articulo

y

3. Hacer una rebaja del IVA en un punto para cada artculo 4. Modificar la descripcin del artculo de referencia 01-LANA para que el nuevo valor sea LANA 90%NATURAL 10%ACRILICO. 5. Indicar los pasos necesarios para modificar el articulo de referencia 01-LANA para que la nueva referencia sea 01-LANA90/10. 6. Borrar de la tabla FACTURAS la factura con el valor de factura_no igual a 2. Observar que ha sucedido en las tablas facturas y lneas de factura. Para comprobarlo hacer un listado de las filas

BLOQUE I (temas 1, 2, 3 y 4) GESTION DE DATOS CON SQL"Evaluacin I"

Marca la casilla con la respuesta correcta

1. El lenguaje SQL permite:Controlar Crear Recuperar el objetos la acceso en una almacenada a base en la la de base de informacin datos datos

informacin

Todas las anteriores

2. En el modelo relacional la restriccin que se utiliza para relacionar dos tablas es:PRIMARY KEY FOREIGN KEY UNIQUE CHECK

3. Siendo el valor de A true (verdadero) y el de B null, el resultado de la expresin A AND B ser:true false null ninguno de los anteriores

4. Indicar cul de los siguientes identificadores es incorrecto:b2-ax ax_b2 axb2 xa2b

5. Indicar cul de las siguientes expresiones es la correcta para comprobar si el valor de COMISION es nulo (carece de valor):COMISION COMISION COMISION Cualquiera de los anteriores = IS = NULL 0 NULL

6. Para comprobar si un nombre empieza por 'A', qu expresin sera la correcta?:nombre='A%' Nombre Nombre Nombre LIKE '%A' LIKE LIKE 'A%' 'A_'

7. Para mostrar los empleados del departamento 10 y del 30 qu clausula WHERE sera la adecuada:Dep_no=10 AND dep_no=30 Dep_no=10 OR dep_no=30 Dep_no BETWEEN 10 AND 30 Dep_no IN (10,20,30)

8. Para buscar un salario entre 1500 y 3500, ambos inclusives:Salario=1500 OR salario=3500 Salario>1500 AND salario1500 OR salario2 SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no HAVING COUNT(*)>2

9. Una subconsulta consiste en:Realizar una consulta sobre un subconjunto de datos Utilizar los resultados de una consulta dentro de otra Almacenar resultados de una consulta para acceder a ellos en posteriores consultas Realizar una consulta despus de otra

10. Una subconsulta se describe en:WHERE HAVING WHERE o HAVING En cualquier clusula de la consulta principal 11. Cul sera la subconsulta correcta para obtener todos los

nmeros de pedido procedentes de clientes de 'BARCELONA':SELECT pedido_no FROM pedidos WHERE cliente_no=(SELECT cliente_no FROM clientes WHERE localidad='BARCELONA'); SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes WHERE localidad='BARCELONA'); SELECT pedido_no FROM pedidos WHERE cliente_no = (SELECT cliente_no FROM clientes) AND localidad='BARCELONA'; SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes) AND localidad='BARCELONA';

12. Cul sera la subconsulta correcta obtener los empleados que ganan menos que la media de su oficio?SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados ); SELECT * FROM empleados GROUP BY oficio HAVING salario < ( SELECT AVG(salario) FROM empleados GROUP BY oficio); SELECT * FROM empleados e1 WHERE salario < ( SELECT AVG(salario) FROM empleados WHERE oficio=e1.oficio); SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados e2 WHERE oficio=e2.oficio);

13.

UnaObtener Obtener

composicinfilas todas las

ode

combinacinms resultantes

(JOIN)de de

consisteuna

en:tabla tablas

filas

multiplicar

Aplicar una condicin de seleccin a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas

14. Para obtener los pedidos con nombres de cliente y de producto:SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes; SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes WHERE cliente_no=cliente_no producto_no=producto_no; FROM FROM AND

SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;

15. Para obtener cada nombre de empleado con el nombre de su director:SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT apellido Empleado,apellido "Su director" FROM empleados ,empleados WHERE director=emp_no; SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e2.director=e1.emp_no;

16. Para listar los clientes con sus pedidos, incluyendo aquellos que no tengan ningn pedido:SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos p WHERE c.cliente_no=p.cliente_no;

17. Para crear una tabla a partir de otra ya creada:No Hay que se crearla puede idntica

Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas

18. Suponiendo que disponemos de la tabla TNOMBRES (recin creada y vaca) con una nica columna denominada C1. Para introducir en ella todos los apellidos de los empleados cuyo salario supera las 3000 Euros, escribiremos:UPDATE tnombres SELECT apellido FROM empleados WHERE salario > 3000; UPDATE tnombres SET c1 = apellido WHERE salario > 3000; INSERT INTO tnombres SELECT apellido FROM empleados WHERE salario > 3000; Ninguna de las anteriores

19. Al crear una vista:No se puede usar la clusula ORDER BY en la creacin de una vista La consulta que define a una vista puede incluir a su vez una vista Se puede crear a partir de una consulta que recupera informacin de varias tablas relacionadas Las tres anteriores son correctas

20. Al eliminar una vista, los datos de las tablas en las que se basa la vista quedarn afectados:Se eliminan todos los datos de las tablas en las que se basa la vista. Se eliminan solamente las filas que estaban incluidas en la seleccin de la vista. Se elimina la vista y las tablas y vistas asociadas. Ninguna de las anteriores

BLOQUE I (temas 10,11 y 12) GESTION DE DATOS CON SQL"Evaluacin III"

Marca la casilla con la respuesta correcta 1. Ventajas de las tablas MyISAM con respecto a las tablas InnoDB (Marcar la respuesta falsa).El acceso a los datos es ms rpido. Consumen menos espacio de disco. Permiten control de transacciones Permiten crear tablas comprimidas.

2. Indicar cual de las siguientes afirmaciones es falsa con respecto a las tablas InnoDB.Permite definir integridad referencial entre tablas. Permite bloqueo a nivel de fila. Permite definir los datos de cada tabla en ficheros independientes separados del resto de tablas. Permite a los usuarios un mejor acceso concurrente a la informacin.

Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOS3. necesariamente debe haber un fichero asociado llamado empleados.frm donde estn los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.frm donde estn los ndices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYD donde estn los datos almacenados.

necesariamente debe haber un fichero asociado llamado empleados.MDI donde estn los ndices almacenados.

4. Si estoy lanzando una sentencia del tipo C:\mysql\bin>myisamchk -u ..\data\test\empleados Que estoy tratando de hacer?Convertir la tabla empleados a tipo InnoDB.

Descomprimiendo la tabla empleados que se supone comprimida. Optimizar la tabla empleados mediante una desfragmentacin.

Comprimiendo la tabla empleados que se supone descomprimida. 4. Indicar que sentencia es verdadera referida a la clusula

IDENTIFIED

BY

de

una

sentencia

GRANT.

Si el usuario no existe y se omite la clusula se crea el usuario sin contrasea. Si el usuario existe y no se omite la clusula la contrasea que acompaa la clusula sustituye la anterior. Si el usuario existe y se omite la clusula permanece vigente la contrasea anterior. Todas las anteriores son ciertas.

6. Indicar cual de las siguientes sentencias GRANT no tiene un error de sintaxis.mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhost IDENTIFIED BY 'algo' FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BY 'algo' ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;

7. Indica cual de las siguientes utilidades de la distribucin de MySQL no requiere de una comunicacin directa con el servidormyisamchk mysqlshow mysqldump mysqlimport

8. Que diferencia sucede con los usuarios pepe@localhost y juan@localhost si se lanzan estas dos sentencias. 1- mysql> SET PASSWORD FOR pepe@localhost='epep'; y 2- mysql> SET PASSWORD FOR juan@localhost=PASSWORD('nuaj');La La La sentencia sentencia sentencia 1 2 2 tiene error la de sintaxis la la la 2 est correcta. 1 no.

encripta tiene

password de sintaxis

sentencia 1 est

error

correcta.

La sentencia 1 encripta la password la sentencia 2 no

9. Indica la afirmacin correcta con respecto a mysqldump y mysqlhotcopymysqlhotcopy mysqldump es es solo solo para para tablas tablas InnoDB. MyISAM.

mysqlhotcopy solo funciona si el servidor no est en ejecucin. Las tres anteriores son falsas.

10. Si desde la consola de comandos se lanza la siguiente sentencia shell>mysql -h mihost.midominio.es -u juan -p pruebaSe intenta ejecutar el cliente mysql pero no se llega a conectar con la base de datos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que tiene password.

Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que no tiene password.

11. Indica la respuesta correctaEl eliminar todos los privilegios de un usuario no supone la eliminacin del usuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserve privilegios. Se puede eliminar completamente un usuario mediante REVOKE ALL PRIVILEGES. Las tres anteriores respuestas son falsas.

12. La siguiente sentencia LOAD DATA LOCAL INFILE 'C:\\temp\\misdatos.txt' INTO TABLE mitabla FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n';Busca Busca el el fichero fichero misdatos.txt misdatos.txt en en la la carpeta carpeta temp temp del del servidor. cliente.

Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si no encuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si no encuentra busca en la carpeta temp del servidor.

13. Indica cual de las siguientes afirmaciones no es verdadera con respecto al proceso de la replicacin de datos:Permitir configurar el balanceo de carga en las consultas.

Permite aumentar la fiabilidad ante las cadas de los servidores. Permite configurar el balanceo de carga en las transacciones.

Incluye la posibilidad de implementar un servicio de copia de seguridad sobre el esclavo sin molestar al maestro y por tanto a los usuarios.

14. Indica cual de las siguientes no es una regla valida para establecer una arquitectura de replicacin:Un Un maestro esclavo puede solo tener debe tener muchos un esclavos. maestro.

Servidores maestros pueden ser a su vez esclavos de otros maestros. Servidores esclavos no pueden ser a su vez maestros de otros esclavos.

15. Indica cual es la condicin indispensable para ejecutar dos servidores MySQL en la misma mquina.Deben Deben Deben escuchar tener acceder las peticiones por dos de fichero puertos TCP distintos. diferentes. configuracin. dos a directorios distintos datos de

Las tres anteriores son ciertas.

16. Indica cual de las siguientes sentencias es correcta para crear un ndice ordinario llamado miindice sobre el campo micampo de la tabla mitabla.ALTER CREATE CREATE TABLE INDEX INDEX mitabla miindice miindice ADD ON INDEX micampo miindice(micampo); FROM mitabla; (micampo);

FROM

mitabla

Todas son correctas.

17. Sobre los tipos de ndices marcar cual es la respuesta correcta de las siguientes:Los ndices ordinarios son ndices primarios que no admiten valores duplicados. Los ndices ordinarios son ndices que no son primarios y permiten valores duplicados. Los ndices ordinarios son ndices primarios que admiten valores duplicados. Las tres anteriores son falsas, por lo tanto, esta es la respuesta correcta.

18. Si en el fichero my.ini tenemos la siguiente entrada en la seccin [mysqld]: log Que se le esta indicando al servidor MySQL?:Que se activa el binary log file. Que se activa el query log file. Que se activa el error log file. Que se activa el update log file.

19. Para poder iniciar un servicio de replicacin:Es aconsejable tener activado el binary log file. Es necesario tener activado el query log file. Es necesario tener activado el binary log file. Es aconsejable tener activado el query log file.

20. Si se lanza la siguiente sentencia desde una ventana de comandos: mysqldump -d test > test.sql .Qu se esta almacenando en test.sql?Solo los datos de la base de datos test no la estructura de sus tablas. Solo la estructura de tablas la base de datos test no sus datos. Solo la estructura y los datos de la base de datos test no sus relaciones de integridad. Todas las anteriores son falsas.

Parte II, tema 5 Consultas sencillasObligatorioTablas utilizadas: EMPLEADOS y DEPARTAMENTOS

Enunciado 1. Escribir los apellidos de los empleados junto con sus fechas de alta en formato: de de 2. Hallar por orden alfabtico los apellidos de los empleados, suprimiendo las tres ltimas letras, mostrando solo aquellos cuyo apellido tenga ms de seis caracteres 3. Se desea hacer un regalo de un 3% del salario a los empleados que no tienen comisin. Obtener el listado ordenado por orden alfabtico con los apellidos y el importe de los regalos 4. Obtener los datos de los empleados cuyo salario total (salario+comisin) supere los 2.000 euros, siempre que adems su salario supere los 1800 euros o su comisin supere los 500 euros 5. Visualizar los datos del empleado de oficio DIRECTOR ms antiguo en la empresa.

6. Visualizar los datos de los dos empleados que ganan ms salario entre los empleados de los departamento 20 y 30

Parte II, tema 6 Seleccin con agrupamientos y funciones de grupoObligatorioTablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.

1. Obtener, para cada departamento, cuantos DIRECTORES hay en el departamento y cual es su salario medio. 2. Obtener los salarios medios por departamento, ordenados descendentemente por dicho importe, cuando dichos salarios medios sean inferiores a 3000 euros 3. Obtener el total de unidades por producto que hay entre todos los pedidos, visualizando el nmero de producto, la descripcin y la suma. 4. Listar los nmeros de cliente que tengan ms de dos pedidos, ordenado por cantidad de pedidos 5. Obtener las localidades en las que haya ms de un cliente, visualizando cuantos clientes hay. 6. Obtener Los datos de los 4 productos de los que ms unidades se han vendido, visualizando el nmero de producto y las unidades vendidas

Parte II, tema 7 SubconsultasObligatorio Tablas utilizadas: EMPLEADOS , DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.1. Listar los nombres y cdigos de los departamentos en los que haya empleados. 2. Obtener los datos del pedido ms reciente. 3. Pare el departamento de VENTAS, visualizar para cada oficio, la suma de los salarios de los empleados 4. Obtener los datos del producto con ms unidades en los pedidos de los clientes. 5. Seleccionar los datos de los pedidos correspondientes al realizado con mayor cantidad de unidades del mismo producto, visualizndolo para cada producto. 6. Seleccionar los empleados de la empresa que tengan igual comisin que la media de su oficio

Parte II, tema 8 Consultas multitablasObligatorio Tablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.Enunciado 1. Obtener una lista de los pedidos con la descripcin del producto y el nombre del cliente clasificados por el nmero del cliente. 2. Obtener los nombres de los empleados y los nombres de sus departamentos, para aquellos empleados que no son del departamento VENTAS y que entraron en la empresa despus del 1 de enero de 82. 3. Obtener una lista de los apellidos de los vendedores con el importe acumulado de sus pedidos. 4. Obtener los nombre de los empleados del departamento 30 que son jefes directos de algn empleado de la empresa, indicando de cuantos empleados son jefes. 5. Realizar un listado de los empleados cuyo oficio es EMPLEADO, que incluir los nmeros de empleado, los apellido y los salarios anuales, sabiendo que el salario anual es el salario multiplicado por 14, e incluyendo en este listado el nombre del director del empleado. 6. Visualizar los productos con el nmero total de pedidos, las unidades totales vendidas, y el precio unidad de cada uno de ellos incluyendo los que no tienen pedidos (en este caso se mostrar un 0 en el total unidades vendidas)

Parte II, tema 9 Consultas dentro de otras sentenciasObligatorio

Tablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.Enunciado 1. Aadir 100 euros de comisin a los empleados tengan una comisin menor de 500 euros o nula 2. Crear una tabla clientes_producto_20 con las columnas cliente_no y nombre_cliente, equivalentes a las de la tabla clientes, y unidades_20 equivalente a la de la tabla pedidos, que contenga las filas de la tabla pedidos correspondientes al producto con nmero 20. 3. Se quiere borrar al empleado MARTINEZ. Para poder hacerlo sin errores, previamente (en otra sentencia aparte ejecutada anteriormente) se habrn modificado aquellos empleados de los que sea jefe MARTINEZ ponindole como jefe al jefe supremo REY. 4. Actualizar la columna debe de la tabla clientes incluyendo en ella el importe total de los pedidos realizados por cada cliente 5. Crear la vista EMPLEADOS_GARRIDO que incluir los datos empleado_no, apellido, salario_anual de los empleados cuyo jefe es GARRIDO 6. Crear una vista RESUMEN_DEP de los departamentos, incluyendo todos los departamento hasta los que no tengan ningn empleado, que permita mostrar la informacin que se detalla: Nombre del departamento Nmero de empleados Suma de sus salarios Suma de sus comisiones

BLOQUE II (temas 1, 2, 3 y 4) GESTION DE DATOS CON SQL"Evaluacin I"

Marca la casilla con la respuesta correcta

1. El lenguaje SQL permite:Controlar el acceso a la informacin Crear objetos en una base de datos Recuperar la informacin almacenada en la base de datos Todas las anteriores

2. En el modelo relacional la restriccin que se utiliza para relacionar dos tablas es:PRIMARY KEY FOREIGN KEY UNIQUE CHECK

3. Siendo el valor de A true (verdadero) y el de B null, el resultado de la expresin A AND B ser:true false null ninguno de los anteriores

4. Indicar cul de los siguientes identificadores es incorrecto:b2-ax ax_b2 axb2 xa2b 5. Indicar cul de las siguientes expresiones es la correcta para

comprobar si el valor de COMISION es nulo (carece de valor):COMISION IS NULL COMISION = 0 COMISION = NULL Cualquiera de los anteriores

6. Para comprobar si un nombre empieza por 'A', qu expresin sera la correcta?:nombre='A%' Nombre LIKE 'A%' Nombre LIKE 'A_' Nombre LIKE '%A' 7. Para mostrar los empleados del departamento 10 y del 30 qu

clausula

WHERE

sera

la

adecuada:

Dep_no=10 AND dep_no=30 Dep_no=10 OR dep_no=30 Dep_no BETWEEN 10 AND 30 Dep_no IN (10,20,30) 8. Para buscar un salario entre 1500 y 3500, ambos inclusives: Salario=1500 OR salario=3500 Salario>1500 AND salario1500 OR salario2 SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no HAVING COUNT(*)>2

9. Una subconsulta consiste en:Realizar Utilizar una los consulta resultados sobre de una un subconjunto consulta dentro de de datos otra

Almacenar resultados de una consulta para acceder a ellos en posteriores consultas Realizar una consulta despus de otra

10. Una subconsulta se describe en:WHERE HAVING WHERE o HAVING En cualquier clusula de la consulta principal

11. Cul sera la subconsulta correcta para obtener todos los nmeros de pedido procedentes de clientes de 'BARCELONA':SELECT pedido_no FROM cliente_no FROM clientes pedidos WHERE cliente_no=(SELECT WHERE localidad='BARCELONA');

SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes WHERE localidad='BARCELONA'); SELECT pedido_no FROM pedidos WHERE cliente_no = (SELECT cliente_no FROM clientes) AND localidad='BARCELONA'; SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes) AND localidad='BARCELONA';

12. Cul sera la subconsulta correcta obtener los empleados que ganan memos que la media de su oficio?SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados ); SELECT * FROM empleados GROUP BY oficio HAVING salario < ( SELECT AVG(salario) FROM empleados GROUP BY oficio); SELECT * FROM empleados e1 WHERE salario < ( SELECT AVG(salario) FROM empleados WHERE oficio=e1.oficio); SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados e2 WHERE oficio=e2.oficio);

13.

UnaObtener Obtener

composicinfilas todas las

ode

combinacinms resultantes

(JOIN)de de

consisteuna

en:tabla tablas

filas

multiplicar

Aplicar una condicin de seleccin a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas

14. Para obtener los pedidos con nombres de cliente y de producto:SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes; SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes WHERE cliente_no=cliente_no producto_no=producto_no; FROM FROM AND

SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;

15. Para obtener cada nombre de empleado con el nombre de su director:SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT apellido Empleado,apellido "Su director" FROM empleados ,empleados WHERE director=emp_no; SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e2.director=e1.emp_no;

16. Para listar los clientes con sus pedidos, incluyendo aquellos que no tengan ningn pedido:SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOIN pedidos p ON c.cliente_no=p.cliente_no; ON SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos p c.cliente_no=p.cliente_no;

SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos p WHERE c.cliente_no=p.cliente_no; 17.

Para crear una tabla a partir de otra ya creada:No se puede Hay que crearla idntica Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas

18. Suponiendo que disponemos de la tabla TNOMBRES (recin creada y vaca) con una nica columna denominada C1. Para introducir en ella todos los apellidos de los empleados cuyo salario supera las 3000 Euros, escribiremos:UPDATE tnombres SELECT apellido FROM empleados WHERE salario > 3000; UPDATE tnombres SET c1 = apellido WHERE salario > 3000; INSERT INTO tnombres SELECT apellido FROM empleados WHERE salario > 3000; Ninguna de las anteriores

19. Al crear una vista:No se puede usar la clusula ORDER BY en la creacin de una vista La consulta que define a una vista puede incluir a su vez una vista Se puede crear a partir de una consulta que recupera informacin de varias tablas relacionadas Las tres anteriores son correctas

20. Al eliminar una vista, los datos de las tablas en las que se basa la vista quedarn afectados:Se eliminan todos los datos de las tablas en las que se basa la vista. Se eliminan solamente las filas que estaban incluidas en la seleccin de la vista. Se elimina la vista y las tablas y vistas asociadas.

Ninguna de las anteriores

BLOQUE II (temas 10,11 y 12) GESTION DE DATOS CON SQL"Evaluacin III"

Marca la casilla con la respuesta correcta

1. Ventajas de las tablas MyISAM con respecto a las tablas InnoDB (Marcar la respuesta falsa).El acceso a los datos es ms rpido. Consumen menos espacio de disco. Permiten control de transacciones Permiten crear tablas comprimidas.

2. Indicar cual de las siguientes afirmaciones es falsa con respecto a las tablas InnoDB.Permite definir integridad referencial entre tablas. Permite bloqueo a nivel de fila. Permite definir los datos de cada tabla en ficheros independientes separados del resto de tablas. Permite a los usuarios un mejor acceso concurrente a la informacin.

Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOS3. necesariamente debe haber un fichero asociado llamado empleados.frm donde estn los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.frm donde estn los ndices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYD donde estn los datos almacenados.

necesariamente debe haber un fichero asociado llamado empleados.MDI donde estn los ndices almacenados.

4. Si estoy lanzando una sentencia del tipo C:\mysql\bin>myisamchk -u ..\data\test\empleados Que estoy tratando de hacer?Convertir la tabla empleados a tipo InnoDB. Descomprimiendo la tabla empleados que se supone comprimida. Optimizar la tabla empleados mediante una desfragmentacin.

Comprimiendo la tabla empleados que se supone descomprimida.

5. Indicar que sentencia es verdadera referida a la clusula IDENTIFIED BY de una sentencia GRANT.Si el usuario no existe y se omite la clusula se crea el usuario sin contrasea. Si el usuario existe y no se omite la clusula la contrasea que acompaa la clusula sustituye la anterior. Si el usuario existe y se omite la clusula permanece vigente la contrasea anterior. Todas las anteriores son ciertas.

6. Indicar cual de las siguientes sentencias GRANT no tiene un error de sintaxis.mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhost IDENTIFIED BY 'algo' FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BY 'algo' ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;

7. Indica cual de las siguientes utilidades de la distribucin de MySQL no requiere de una comunicacin directa con el servidormyisamchk mysqlshow mysqldump mysqlimport

8. Que diferencia sucede con los usuarios pepe@localhost y juan@localhost si se lanzan estas dos sentencias. 1- mysql> SET PASSWORD FOR pepe@localhost='epep'; y 2- mysql> SET PASSWORD FOR juan@localhost=PASSWORD('nuaj');La La La sentencia sentencia sentencia 1 2 2 tiene error la de sintaxis la la la 2 est correcta. 1 no. encripta tiene password de sintaxis sentencia 1 est

error

correcta.

La sentencia 1 encripta la password la sentencia 2 no

9. Indica la afirmacin correcta con respecto a mysqldump y mysqlhotcopymysqlhotcopy mysqldump es es solo solo para para tablas tablas InnoDB. MyISAM.

mysqlhotcopy solo funciona si el servidor no est en ejecucin. Las tres anteriores son falsas.

Si desde la consola de comandos se lanza la siguiente sentencia shell>mysql -h mihost.midominio.es -u juan -p prueba11. Se intenta ejecutar el cliente mysql pero no se llega a conectar con la base de datos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que tiene password. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que no tiene password.

12. Indica la respuesta correctaEl eliminar todos los privilegios de un usuario no supone la eliminacin del usuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserve privilegios. Se puede eliminar completamente un usuario mediante REVOKE ALL PRIVILEGES. Las tres anteriores respuestas son falsas.

13. La siguiente sentencia LOAD DATA LOCAL INFILE 'C:\\temp\\misdatos.txt' INTO TABLE mitabla FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n';Busca Busca el el fichero fichero misdatos.txt misdatos.txt en en la la carpeta carpeta temp temp del del servidor. cliente.

Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si no encuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si no encuentra busca en la carpeta temp del servidor.

13. Indica cual de las siguientes afirmaciones no es verdadera con respecto al proceso de la replicacin de datos:Permitir configurar el balanceo de carga en las consultas.

Permite aumentar la fiabilidad ante las cadas de los servidores. Permite configurar el balanceo de carga en las transacciones.

Incluye la posibilidad de implementar un servicio de copia de seguridad sobre el esclavo sin molestar al maestro y por tanto a los usuarios.

14. Indica cual de las siguientes no es una regla valida para establecer una arquitectura de replicacin:Un Un maestro esclavo puede solo tener debe tener muchos un esclavos. maestro.

Servidores maestros pueden ser a su vez esclavos de otros maestros. Servidores esclavos no pueden ser a su vez maestros de otros esclavos.

15. Indica cual es la condicin indispensable para ejecutar dos servidores MySQL en la misma mquina.Deben Deben Deben escuchar tener acceder las peticiones por dos de fichero puertos TCP distintos. diferentes. configuracin. dos a directorios distintos datos de

Las tres anteriores son ciertas.

16. Indica cual de las siguientes sentencias es correcta para crear un ndice ordinario llamado miindice sobre el campo micampo de la tabla mitabla.ALTER CREATE CREATE TABLE INDEX INDEX mitabla miindice miindice ADD ON INDEX micampo miindice(micampo); FROM mitabla; (micampo);

FROM

mitabla

Todas son correctas.

16. Sobre los tipos de ndices marcar cual es la respuesta correcta de las siguientes:Los ndices ordinarios son ndices primarios que no admiten valores duplicados. Los ndices ordinarios son ndices que no son primarios y permiten valores duplicados. Los ndices ordinarios son ndices primarios que admiten valores duplicados. Las tres anteriores son falsas, por lo tanto, esta es la respuesta correcta.

18. Si en el fichero my.ini tenemos la siguiente entrada en la seccin [mysqld]: log Que se le esta indicando al servidor MySQL?:Que Que Que se se se activa activa activa el el el binary query error log log log file. file. file.

Que se activa el update log file.

19.Es Es Es

Para

poder

iniciartener tener tener

unactivado activado activado

servicioel el el

debinary query binary

replicacin:log log log file. file. file.

aconsejable necesario necesario

Es aconsejable tener activado el query log file.

20. Si se lanza la siguiente sentencia desde una ventana de comandos: mysqldump -d test > test.sql .Qu se esta almacenando en test.sql?Solo los datos de la base de datos test no la estructura de sus tablas. Solo la estructura de tablas la base de datos test no sus datos. Solo la estructura y los datos de la base de datos test no sus relaciones de integridad. Todas las anteriores son falsas

Parte III, tema 11 Administracin de MySQL (I)Obligatorio A partir del fichero ASCII TituloAutorNacionalidad.txt que tiene la siguiente informacin"Ttulo"#"Autor"#"Nacionalidad" "Las lecciones de las cosas"#"Luis Mateo Dez"#"Espaol" "El secuestro de Miss Blandish"#"James Hadley Chase"#"Norteamericano" "Una princesa en Berln"#"A. R. G. Solmssen"#"Alemn" "Solal"#"Albert Cohen"#"Norteamericano" "Los Indiferentes"#"Alberto Moravia"#"Italiano" "El cabra"#"Alexandre Jardin"#"Francs" "Asuntos Exteriores"#"Alison Lurie"#"Britnico" "La virtud sobre Lorin Jones"#"Alison Lurie"#"Britnico" "Amor y amistad"#"Alison Lurie"#"Britnico" etc,etc.

Se quiere importar a MYSQL dicha informacin pero optimizando el almacenamiento de tal forma que la informacin resultante quede estructurada de la siguiente formaTabla NACIONALIDADES id nacionalidad 1 Espaol 2 Norteamericano 3 Alemn 4 Italiano 5 Francs 6 Britnico 7 Asiatico etc,etc,.. Tabla AUTORES id autor 1 A. R. G. Solmssen 2 Alan Bennett 3 Albert Cohen 4 Alberto Moravia 5 Alexandre Jardin 6 Alison Lurie 7 Almudena Grandes etc,etc,.. Tabla TITULOS id autor Las lecciones 1 cosas

id_nac 3 6 2 4 5 6 1

id_aut de las 3

2 3 4 5 6 7

El secuestro de Miss 6 Blandish Una princesa en Berln 2 Solal 4 Los Indiferentes 5 El cabra 6 Asuntos Exteriores 1

Enunciado Se pide: 1. Debes acceder al servidor como root y crear la base de datos LIBROS y a continuacin crear un usuario con password llamado librero con derechos totales en la base de datos LIBROS y con el permiso FILE que permite importar ficheros a tablas y exportar tablas a ficheros. 2. Establecer una conexin al servidor MySQL con el usuario librero y acceder a la base de datos LIBROS. Realizar con este usuario las tareas necesarias de administracin de BD para pasar la informacin desde el fichero TituloAutorNacionalidad.txt a las tablas NACIONALIDADES , AUTORES y TITULOS. Habr que tener en cuenta que los campos llamados Id en cada una de las tablas deben ser de tipo auto_increment. 3. Incluye las restricciones de integridad que consideres necesarias entre las tres tablas. 4. Genera los ficheros ASCII nacionalidades.txt, autores.txt y titulos.txt exportando las tablas NACIONALIDADES , AUTORES y TITULOS como ficheros de texto de campos delimitados. El carcter delimitador ser # y los campos de texto deben ir entrecomillados Todas estas tareas deben quedar reflejadas en sentencias sql y guardadas en un fichero de script llamado, por ejemplo, act1_administracion.sql con los comentarios necesarios que consideres pertinentes. Si encuentras problemas o dificultades en la realizacin del ejercicio, no tengas duda en preguntar al tutor o incluso enviarle las sentencias que no funcionan como deben, para que lo vea y te ayude en la resolucin de esta actividad. No obstante, ten en cuenta que no se trata de un ejercicio de autoevaluacin, sino de evaluacin por parte del tutor, por lo cual debes intentar resolverlo por tu cuenta. Cuando acabes la actividad propuesta, comprime el fichero .sql en nico fichero tipo .zip o .rar y envalo al tutor o tutora, para que pueda comprobar el grado de tu aprendizaje y orientarte adecuadamente, si lo precisas.

Parte III, tema 12 Administracin de MySQL (II)ObligatorioEnunciado Este ejercicio consiste en hacer una simulacin de un error de actuacin sobre una base de datos que obliga al Administrador del servidor de base de datos MySQL a iniciar un proceso de recuperacin de los datos a partir de la ltima copia de seguridad realizada y posteriormente ejecutar las sentencias almacenadas en el fichero de log para dejar la base de datos exactamente como se encontraba inmediatamente antes de producirse el error. Pasos a dar para la ejecucin de la prctica. 1. Activa el binary log en el servidor MySQL y comprueba su funcionamiento correcto. (Lee detenidamente el punto 12.1.4 de la Documentacin del curso) 2. Crea una base de datos para nuestra prueba llamado por ejemplo PRUEBACOPIA y crgala con dos tablas a partir del script siguiente:CREATE DATABASE PRUEBACOPIA; USE PRUEBACOPIA; CREATE TABLE ( DEP_NO DNOMBRE LOCALIDAD CONSTRAINT PK_DEPARTAMENTOS_DEP_NO ) engine=myisam; DEPARTAMENTOS INT(2), VARCHAR(14), VARCHAR(10), KEY (DEP_NO)

PRIMARY

INSERT INTO DEPARTAMENTOS VALUES(10, 'CONTABILIDAD', 'BARCELONA'); INSERT INTO DEPARTAMENTOS VALUES(20, 'INVESTIGACION', 'VALENCIA'); INSERT INTO DEPARTAMENTOS VALUES(30, 'VENTAS', 'MADRID'); INSERT INTO DEPARTAMENTOS VALUES(40, 'PRODUCCION', 'SEVILLA');

CREATE ( APELLIDO

TABLE EMP_NO

EMPLEADOS INT(4), VARCHAR(8),

OFICIO VARCHAR(10), DIRECTOR INT(4), FECHA_ALTA DATE, SALARIO FLOAT(6,2), COMISION FLOAT(6,2), DEP_NO INT (2), CONSTRAINT PK_EMPLEADOS_EMP_NO PRIMARY KEY (EMP_NO), CONSTRAINT FK_EMP_DIRECTOR FOREIGN KEY (DIRECTOR) REFERENCES EMPLEADOS(EMP_NO), CONSTRAINT FK_EMP_DEP_NO FOREIGN KEY (DEP_NO) REFERENCES DEPARTAMENTOS(DEP_NO) )engine=myisam;

INSERT INTO EMPLEADOS VALUES (7839,'REY', 'PRESIDENTE',NULL,'1981-11-17',6000.00, NULL, 10); INSERT INTO EMPLEADOS VALUES (7698,'GARRIDO', 'DIRECTOR', 7839,'1981-5-1',3850.00, NULL, 30); INSERT INTO EMPLEADOS VALUES (7782,'MARTINEZ','DIRECTOR', 7839,'1981-6-1',2450.00, NULL, 10); INSERT INTO EMPLEADOS VALUES(7499,'ALONSO', 'VENDEDOR', 7698,'1981-2-20',1400.00,400.00,30); INSERT INTO EMPLEADOS VALUES (7521,'LOPEZ', 'EMPLEADO', 7782,'1981-5-8',1350.00, NULL,10); INSERT INTO EMPLEADOS VALUES (7654,'MARTIN', 'VENDEDOR', 7698,'1981-9-28',1500.00, 1600.00, 30); INSERT INTO EMPLEADOS VALUES (7844,'CALVO', 'VENDEDOR', 7698,'1981-9-8',1800.00, 0, 30); INSERT INTO EMPLEADOS VALUES (7876,'GIL', 'ANALISTA', 7782,'1982-5-6',3350.00, NULL, 20); INSERT INTO EMPLEADOS VALUES (7900,'JIMENEZ', 'EMPLEADO', 7782,'1983-3-24',1400.00, NULL, 20);

3. Crear mediante mysqldump la copia de seguridad completa de la base datos PRUEBACOPIA del servidor. (Lee detenidamente el punto 11.5.1 de la Documentacin del curso). 4. Inmediatamente despus de efectuada la copia reiniciamos el servidor mysql. Esto obliga a que se genere un nuevo fichero binary log inmediatamente despus de cada proceso de backup. 5. Aadimos algunos cambios a nuestra base de datos de prueba para la comprobacin posterior. (por ejemplo borramos determinadas filas de una tabla y creamos una tabla nueva en la base de datos PRUEBACOPIA). 6. Se corrompe la base de datos PRUEBACOPIA o se produce accidentalmente alguna transaccin no deseada. En nuestro caso borramos, se supone que por descuido, la base de datos PRUEBACOPIA.

El objetivo es recuperar las tablas a la situacin que tenan justo antes de producirse esa sentencia errnea de borrado. 7. Antes de proceder a recuperar la copia reiniciamos de nuevo el servidor para que se inicie un nuevo fichero binary log . 8. Restauramos la ultima copia de seguridad realizada. (Lee detenidamente el punto 11.5.1 de la Documentacin del curso). 9. Ejecutamos los binary log a partir de la ltima copia efectuada mediante la herramienta mysqlbinlog. Tenemos que determinar que fichero binary log es el que tiene los cambios realizados entre la creacin de la copia de seguridad y la recuperacin de dicha copia. Habr que analizar con cuidado que parte del fichero log tenemos que relanzar Ejemplo:C:\mysql4\bin>mysqlbinlog --port=3308 --start-position=171 --stopposition=246 ..\data\Portatil-bin.000005 | mysql --port=3308

10. Comprobamos que la base de datos se encuentra en el estado previo al momento de producirse el borrado accidental. Todos los comandos y sentencias que se realicen en este ejercicio de simulacin de restauracin completa de una base de datos deben quedar recogidos en un documento llamado restaurar.txt con los comentarios necesarios que consideris pertinentes.

BLOQUE III (temas 1, 2, 3 y 4) SQL CON MYSQL"Evaluacin I"

Marca la casilla con la respuesta correcta

1. El lenguaje SQL permite:Controlar Crear Recuperar el objetos la acceso en una almacenada a base en la la de base de informacin datos datos

informacin

Todas las anteriores

2. En el modelo relacional la restriccin que se utiliza para relacionar dos tablas es:PRIMARY KEY FOREIGN KEY UNIQUE CHECK

3. Siendo el valor de A true (verdadero) y el de B null, el resultado de la expresin A AND B ser:true false null ninguno de los anteriores

4. Indicar cul de los siguientes identificadores es incorrecto:b2-ax ax_b2 axb2 xa2b 5. Indicar cul de las siguientes expresiones es la correcta para

comprobar si el valor de COMISION es nulo (carece de valor):COMISION IS NULL COMISION = 0 COMISION = NULL Cualquiera de los anteriores

6. Para comprobar si un nombre empieza por 'A', qu expresin sera la correcta?:nombre='A%' Nombre LIKE 'A%' Nombre LIKE 'A_' Nombre LIKE '%A'

7. Para mostrar los empleados del departamento 10 y del 30 qu clausula WHERE sera la adecuada:Dep_no=10 AND dep_no=30 Dep_no=10 OR dep_no=30 Dep_no BETWEEN 10 AND 30 Dep_no IN (10,20,30)

8. Para buscar un salario entre 1500 y 3500, ambos inclusives:Salario=1500 OR salario=3500 Salario>1500 AND salario1500 OR salario2 SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no HAVING COUNT(*)>2

9.Realizar Utilizar

Unauna los

subconsultaconsulta resultados sobre de una un

consistesubconjunto consulta dentro de de

en:datos otra

Almacenar resultados de una consulta para acceder a ellos en posteriores consultas Realizar una consulta despus de otra

10.

UnaWHERE HAVING WHERE

subconsulta

se

describe

en:

o

HAVING

En cualquier clusula de la consulta principal

11. Cul sera la subconsulta correcta para obtener todos los nmeros de pedido procedentes de clientes de 'BARCELONA':SELECT pedido_no FROM cliente_no FROM clientes pedidos WHERE cliente_no=(SELECT WHERE localidad='BARCELONA');

SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes WHERE localidad='BARCELONA'); SELECT pedido_no FROM pedidos WHERE cliente_no = (SELECT cliente_no FROM clientes) AND localidad='BARCELONA'; SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECT cliente_no FROM clientes) AND localidad='BARCELONA';

12. Cul sera la subconsulta correcta obtener los empleados que ganan memos que la media de su oficio?SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados ); SELECT * FROM empleados GROUP BY oficio HAVING salario < (

SELECT

AVG(salario)

FROM

empleados

GROUP

BY

oficio);

SELECT * FROM empleados e1 WHERE salario < ( SELECT AVG(salario) FROM empleados WHERE oficio=e1.oficio); SELECT * FROM empleados WHERE salario < ( SELECT AVG(salario) FROM empleados e2 WHERE oficio=e2.oficio);

13.

UnaObtener Obtener

composicinfilas todas las

ode

combinacinms resultantes

(JOIN)de de

consisteuna

en:tabla tablas

filas

multiplicar

Aplicar una condicin de seleccin a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas

14. Para obtener los pedidos con nombres de cliente y de producto:SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes; SELECT pedido_no,nombre,descripcin,unidades pedidos,productos,clientes WHERE cliente_no=cliente_no producto_no=producto_no; FROM FROM AND

SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripcin,unidades FROM pedidos p,productos pr,clientes c WHERE p.cliente_no=c.cliente_no AND p.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;

15. Para obtener cada nombre de empleado con el nombre de su director:SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e1.director=e2.emp_no; SELECT apellido Empleado,apellido "Su director" FROM empleados ,empleados WHERE director=emp_no; SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleados e1,empleados e2 WHERE e2.director=e1.emp_no;

16. Para listar los clientes con sus pedidos, incluyendo aquellos que no tengan ningn pedido:SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos p WHERE c.cliente_no=p.cliente_no;

17. Para crear una tabla a partir de otra ya creada:No Hay que se crearla puede idntica

Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas

18. Suponiendo que disponemos de la tabla TNOMBRES (recin creada y vaca) con una nica columna denominada C1. Para introducir en ella todos los apellidos de los empleados cuyo salario supera las 3000 Euros, escribiremos:UPDATE tnombres SELECT apellido FROM empleados WHERE salario > 3000; UPDATE tnombres SET c1 = apellido WHERE salario > 3000; INSERT INTO tnombres SELECT apellido FROM empleados WHERE salario > 3000; Ninguna de las anteriores

19.

Al

crear

una

vista:

No se puede usar la clusula ORDER BY en la creacin de una vista La consulta que define a una vista puede incluir a su vez una vista Se puede crear a partir de una consulta que recupera informacin de varias tablas relacionadas Las tres anteriores son correctas

20. Al eliminar una vista, los datos de las tablas en las que se basa la vista quedarn afectados:Se eliminan todos los datos de las tablas en las que se basa la vista. Se eliminan solamente las filas que estaban incluidas en la seleccin de la vista. Se elimina la vista y las tablas y vistas asociadas.

Ninguna de las anteriores

BLOQUE III (temas 10,11 y 12) SQL CON MYSQL"Evaluacin III"

Marca la casilla con la respuesta correcta

1. Ventajas de las tablas MyISAM con respecto a las tablas InnoDB (Marcar la respuesta falsa).El acceso a menos control los datos espacio de es ms de rpido. disco. transacciones

Consumen Permiten

Permiten crear tablas comprimidas.

2. Indicar cual de las siguientes afirmaciones es falsa con respecto a las tablas InnoDB.Permite Permite definir bloqueo integridad a referencial nivel entre de tablas. fila.

Permite definir los datos de cada tabla en ficheros independientes separados del resto de tablas. Permite a los usuarios un mejor acceso concurrente a la informacin.

3. Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOSnecesariamente debe haber un fichero asociado llamado empleados.frm donde estn los datos almacenados.

necesariamente debe haber un fichero asociado llamado empleados.frm donde estn los ndices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYD donde estn los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.MDI donde estn los ndices almacenados.

4. Si estoy lanzando una sentencia del tipo C:\mysql\bin>myisamchk -u ..\data\test\empleados Que estoy tratando de hacer?Convertir la tabla empleados a tipo InnoDB.

Descomprimiendo la tabla empleados que se supone comprimida. Optimizar la tabla empleados mediante una desfragmentacin.

Comprimiendo la tabla empleados que se supone descomprimida.

5. Indicar que sentencia es verdadera referida a la clusula IDENTIFIED BY de una sentencia GRANT.Si el usuario no existe y se omite la clusula se crea el usuario sin contrasea. Si el usuario existe y no se omite la clusula la contrasea que acompaa la clusula sustituye la anterior. Si el usuario existe y se omite la clusula permanece vigente la contrasea anterior. Todas las anteriores son ciertas.

6. Indicar cual de las siguientes sentencias GRANT no tiene un error de sintaxis.mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhost IDENTIFIED BY 'algo' FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BY 'algo' ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;

7. Indica cual de las siguientes utilidades de la distribucin de MySQL no requiere de una comunicacin directa con el servidor

myisamchk mysqlshow mysqldump mysqlimport

8. Que diferencia sucede con los usuarios pepe@localhost y juan@localhost si se lanzan estas dos sentencias. 1- mysql> SET PASSWORD FOR pepe@localhost='epep'; y 2- mysql> SET PASSWORD FOR juan@localhost=PASSWORD('nuaj');La La La sentencia sentencia sentencia 1 2 2 tiene error la de sintaxis la la la 2 est correcta. 1 no.

encripta tiene

password de sintaxis

sentencia 1 est

error

correcta.

La sentencia 1 encripta la password la sentencia 2 no

9. Indica la afirmacin correcta con respecto a mysqldump y mysqlhotcopymysqlhotcopy mysqldump es es solo solo para para tablas tablas InnoDB. MyISAM.

mysqlhotcopy solo funciona si el servidor no est en ejecucin. Las tres anteriores son falsas.

10. Si desde la consola de comandos se lanza la siguiente sentencia shell>mysql -h mihost.midominio.es -u juan -p pruebaSe intenta ejecutar el cliente mysql pero no se llega a conectar con la base de datos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que tiene password. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba de un servidor situado en la mquina mihost.midominio.es mediante el usuario Juan que no tiene password.

11.

Indica

la

respuesta

correcta

El eliminar todos los privilegios de un usuario no supone la eliminacin del usuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserve privilegios. Se puede eliminar completamente un usuario mediante REVOKE ALL PRIVILEGES. Las tres anteriores respuestas son falsas.

12. La siguiente sentencia LOAD DATA LOCAL INFILE 'C:\\temp\\misdatos.txt' INTO TABLE mitabla FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n';Busca Busca el el fichero fichero misdatos.txt misdatos.txt en en la la carpeta carpeta temp temp del del servidor. cliente.

Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si no encuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si no encuentra busca en la carpeta temp del servidor.

13. Indica cual de las siguientes afirmaciones no es verdadera con respecto al proceso de la replicacin de datos:Permitir configurar el balanceo de carga en las consultas.

Permite aumentar la fiabilidad ante las cadas de los servidores. Permite configurar el balanceo de carga en las transacciones.

Incluye la posibilidad de implementar un servicio de copia de seguridad sobre el esclavo sin molestar al maestro y por tanto a los usuarios.

14. Indica cual de las siguientes no es una regla valida para establecer una arquitectura de replicacin:Un Un maestro esclavo puede solo tener debe tener muchos un esclavos. maestro.

Servidores maestros pueden ser a su vez esclavos de otros maestros. Servidores esclavos no pueden ser a su vez maestros de otros esclavos.

15. Indica cual es la condicin indispensable para ejecutar dos servidores MySQL en la misma mquina.Deben Deben Deben escuchar tener acceder las peticiones por dos de fichero puertos TCP distintos. diferentes. configuracin.

dos a

directorios distintos

datos de

Las tres anteriores son ciertas.

16. Indica cual de las siguientes sentencias es correcta para crear un ndice ordinario llamado miindice sobre el campo micampo de la tabla mitabla.ALTER CREATE CREATE TABLE INDEX INDEX mitabla miindice miindice ADD ON INDEX micampo miindice(micampo); FROM mitabla; (micampo);

FROM

mitabla

Todas son correctas.

17. Sobre los tipos de ndices marcar cual es la respuesta correcta de las siguientes:Los ndices ordinarios son ndices primarios que no admiten valores duplicados. Los ndices ordinarios son ndices que no son primarios y permiten valores duplicados. Los ndices ordinarios son ndices primarios que admiten valores duplicados. Las tres anteriores son falsas, por lo tanto, esta es la respuesta correcta.

18. Si en el fichero my.ini tenemos la siguiente entrada en la seccin [mysqld]: log Que se le esta indicando al servidor MySQL?:Que Que se se activa activa el el binary query log log file. file.

Que

se

activa

el

error

log

file.

Que se activa el update log file.

19.Es Es Es

Para

poder

iniciartener tener tener

unactivado activado activado

servicioel el el

debinary query binary

replicacin:log log log file. file. file.

aconsejable necesario necesario

Es aconsejable tener activado el query log file.

20. Si se lanza la siguiente sentencia desde una ventana de comandos: mysqldump -d test > test.sql .Qu se esta almacenando en test.sql?Solo los datos de la base de datos test no la estructura de sus tablas. Solo la estructura de tablas la base de datos test no sus datos. Solo la estructura y los datos de la base de datos test no sus relaciones de integridad. Todas las anteriores son falsas.