• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Manual trabajo curso_sql
 

Manual trabajo curso_sql

on

  • 1,688 views

 

Statistics

Views

Total Views
1,688
Views on SlideShare
1,688
Embed Views
0

Actions

Likes
0
Downloads
61
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Manual trabajo curso_sql Manual trabajo curso_sql Document Transcript

    • MANUAL DE TRABAJOS
    • EjerciciosEn este Manual de Trabajo aparece el acceso a los distintos ejerciciosopcionales y obligatorios del curso de SQL.Los ejercicios están divididos según los bloques del curso: Parte I, ParteII y Parte III. Selecciona cada uno de los bloques para acceder a losejercicios correspondientes.Todas estas tareas (salvo en Temas 1 y 2) deben quedar reflejadas ensentencias sql y guardadas en un fichero de script llamado, por ejemplo,actividad_temaXX.sql con los comentarios necesarios que considerespertinentes.Si encuentras problemas o dificultades en la realización del ejercicio, notengas duda en preguntar al tutor o incluso enviarle las sentencias que nofuncionan como deben, para que lo vea y te ayude en la resolución deesta actividad. No obstante, ten en cuenta que no se trata de un ejerciciode autoevaluación, sino de evaluación por parte del tutor, por lo cualdebes intentar resolverlo por tu cuenta.Cuando acabes la actividad propuesta, comprime el fichero .sql en únicofichero tipo .zip o .rar y envíalo al tutor, para que pueda comprobar elgrado de tu aprendizaje y orientarte adecuadamente, si lo precisas.
    • Recuerda que para realizar los ejercicios de la Parte II y III,necesitarás el fichero "ejecutame". Que se encuentra dentro dela carpeta Moving to sql.Parte I, tema 1El lenguaje de gestión de base de datosObligatorioNOTA: el objetivo es familiarizarse con una base de datos relacional observando laestructura de las tablas y las relaciones entre ellas. Estos ejercicios deben realizarseestudiando el contenido de las tablas y la forma de relacionarse entre ellas1.- El empleado número 7499 pertenece al departamento número:a. 30b. 20c. 402.- El DIRECTOR del empleado 7844 es el empleado número:a. 7698b. 7839c. 77823.- El empleado REY es el director de:a. MARTINEZb. GARRIDOc. MARTINEZ Y GARRIDO4.- Al departamento de INVESTIGACION pertenecen los empleados:a. ALONSO Y LOPEZb. GIL Y JIMENEZc. GARRIDO Y MARTINEZ5.- El cliente DISTRIBUCIONES GOMEZ pidió cuatro unidades delproducto SILLA DIRECTOR MOD. BUFALO el 7 de enero de 2000:a. Verdaderob. Falso, los datos son incorrectosc. Los datos facilitados son insuficientes para verificar laafirmación6.- El cliente INDUSTRIAS LACTEAS S.A. ha realizado:a. Un pedidob. Dos pedidosc. Tres pedidos7.- Sql es un Sistema Gestor de Bases de Datos:a. Jerárquicob. En red
    • c. Relacional8.- Según el modelo relacional:a. Cada fila de una tabla representa un atributo o característicab. Cada columna de una tabla representa un atributo o característicac. Cada entidad representa un atributo o característica9.- SQL es:a. Un lenguaje estructurado de consultab. Un lenguaje procedimental de tercera generaciónc. Ambas son correctas10.- El lenguaje SQL permite:a. Manipular datos (consultar, actualizar, etcétera)b. Definir objetos de la base de datos (Crear, modificar y eliminar objetos de la basede datos)c. Ambas son correctas
    • Parte I, tema 2Elementos del lenguajeObligatorioNOTA: el objetivo es familiarizarse con una base de datos relacional observando laestructura de las tablas y las relaciones entre ellas. Estos ejercicios deben realizarseestudiando el contenido de las tablas y la forma de relacionarse entre ellasElegir la respuesta correcta de las siguientes cuestiones:1.- Cuál de los siguientes identificadores no es correcto:a. xxb. 2xc. x22.- VARCHAR es:a. Un comandob. Un operadorc. Un tipo de dato3.- Para comparar un dato alfanumérico con un patrón de comparaciónque contiene caracteres comodines utilizaremos el operador:a. INb. LIKEc. =4.- Siendo el valor de A verdadero (true) y el de B falso (false), elresultado de la expresión 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 resultadode la expresión A AND B será:a. Verdadero (true)b. Falso (false)c. Nulo (null)6.- Para redondear a dos decimales un número (num) utilizaremos lafunción:a. POWER(num,2)b. TRUNC(num,2)c. ROUND(num,2)7.- Para obtener la longitud de una cadena (cad) utilizaremos la función:a. LPAD(cad)b. LOWER(cad)c. LENGTH(cad)
    • 8.- Para calcular en número de días entre dos fechas (fecha1 y fecha2)utilizaremos la función: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 expresión:a. salario + comisionb. IFNULL (salario,0) + comisionc. salario + IFNULL(comision,0)10.- Una condición es:a. Una variableb. Un conjunto de datos, operadores y funciones)c. Un conjunto de datos, operadores y funciones cuyo resultado esverdadero o falso
    • Parte I, tema 3Creación de tablasObligatorioNOTA: No se pueden crear tablas con el mismo nombre que otras ya existentes en lamisma base de datos. Si estuviesen ya creadas con ese nombre, es necesarioborrarlas previamenteDefinición de las tablasTabla COMPRADORESCampo TipoCIF_comprador alfanumérico de 11 caracteresNombre_social alfanumérico de 30 caracteresDomicilio_social alfanumérico de 30 caracteresLocalidad alfanumérico de 30 caracteresC_postal alfanumérico de 5 caracteresTeléfono alfanumérico de 9 caracteresTabla ARTICULOSCampo TipoReferencia_articulo alfanumérico de 12 caracteresDescripción_articulo alfanumérico de 30 caracteresPrecio_unidad numérico de 6 posiciones, con dos decimalesIVA numérico de 2 posicionesExistencias_actuales numérico de 5 posicionesTabla FACTURASCampo TipoFactura_no numérico de 6 posicionesFecha_factura tipo fechaCIF_cliente alfanumérico de 11 caracteresTabla LINEAS_FACTURACampo TipoFactura_no numérico de 6 posicionesReferencia_articulo alfanumérico de 12 caracteresUnidades numérico de 3 posicionesEnunciado1. Creación de las tablas con las restricciones.a. Crear la tabla COMPRADORES con la columna de columna cif_compradorcomo clave primaria con nombre PK_COMPRADORES_CIF, y la columnanombre_social única con nombre UQ_COMPRADORES_NOMBRE_SOCIAL. Lacolumna telefono debe ser obligatoria.
    • b. Crear la tabla ARTICULOS, con referencia_articulo como PRIMARY KEYcon el nombre PK_ARTICULOS, la columna IVA con valores entre 5 y 25inclusive y la columna existecias_actuales con valor por defecto 0.c. Crear la tabla FACTURAS con la columna factura_no como clave primariacon el nombre PK_FACTURAS, y la columna fecha_factura tendrá comovalor por defecto la fecha 1 de enero de 2005.d. Crear la tabla LINEAS_FACTURAS con las columnas factura_no yreferencia_articulo como PRIMARY KEY con nombre PK_LINEAS_FACTURA, lacolumna factura_no como FOREIGN KEY con nombre FK_LINEAS_FACTURASreferenciando la columna factura_no de la tabla facturas con borrado encascada y la columna referencia_articulo como FOREIGN KEY con nombreFK_LINEAS_ARTICULOS referenciando la columna referencia_articulo de latabla articulos2. Añadir a la tabla FACTURAS la columna cod_oficina de tipo numérico de4 posiciones, con el número de oficina3. Añadir en la tabla FACTURAS la columna cif_cliente como FORIEGN KEYcon nombre FK_FACTURA_COMPRADORES referenciando a la columnacif_comprador de la tabla compradores4. Cambiar en la tabla COMPRADORES el nombre de la columna c_postal portexto_codigo_postal5. Añadir a la columna cod_oficina de la tabla FACTURAS la comprobaciónde estar entre 1 y 1000.
    • Parte I, tema 4 Actualización de tablas ObligatorioNOTA: si se quiere hacer pruebas y que las actualizaciones de las tablas no sean validadas,se puede trabajar con el parámetro AUTOCOMMIT = 0. Así, en cualquier momento,tendremos la posibilidad de hacer ROLLBACK para deshacer los cambios o COMMIT paravalidarlos.EnunciadoPara poder trabajar con las tablas creadas en el tema anterior vamos a insertaralgunos valores. Estas inserciones son indispensables para poder realizar lossiguientes ejercicios1. Realizar las inserciones de las siguientes filas:Tabla COMPRADORESCif_comprador Nombre_social Domicilio Localidad C postal Telefono111111-L TELARES ASUNCION C. LA RUA 5 ALBACETE 02002 97223141222222-J TEXTIL LAGO PLAZA MAYOR 2 ALMERIA 04131 95434567Tabla ARTICULOSReferencia_articuloDescricion_articuloPrecio_unidadIVAExistencias_actuales01-LANA LANA 100% NATURAL 31.09 10 10002-ALGODON ALGODÓN DE 2 CABOS 18.00 10 15503-SEDA SEDA CHINA 55.50 15 19004-LINO LINO EUROPEO 44.00 12 250Tabla FACTURASFactura_no Fecha_factura Cliente_no Cod_oficina1 12 de mayo de 2004 111111-L 12122 18 de julio de 2004 111111-L 12313 31 de julio de 2004 222222-J 14064 10 de agosto de 2004 222222-J 1212Tabla LINEAS_FACTURASFactura_no Referencia_articulo Unidades1 01-LANA 1201 04-LINO 752 01-LANA 202 02-ALGODÓN 502. Insertar un nuevo artículo con valoresReferencia_articulo Precio_unidad IVA06-CUERO 10.99 10Hacer un listado de las filas de la tabla ARTICULOS (SELECT * FROM articulos;) e
    • indicar que ha sucedido con las columnas descripcion_articulo yexistencias_actuales razonando la respuesta.3. Hacer una rebaja del IVA en un punto para cada artículo4. Modificar la descripción del artículo de referencia 01-LANA para que el nuevovalor sea LANA 90%NATURAL 10%ACRILICO.5. Indicar los pasos necesarios para modificar el articulo de referencia 01-LANApara 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 líneas de factura. Paracomprobarlo hacer un listado de las filas
    • BLOQUE I (temas 1, 2, 3 y 4)GESTION DE DATOS CON SQL"Evaluación I"Marca la casilla con la respuesta correcta 1. El lenguaje SQL permite: Controlar el acceso a la información Crear objetos en una base de datos Recuperar la información almacenada en la base de datos Todas las anteriores 2. En el modelo relacional la restricción 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 expresión A AND B será: true false null ninguno de los anteriores
    • 4. Indicar cuál de los siguientes identificadores es incorrecto: b2-ax ax_b2 axb2 xa2b5. Indicar cuál de las siguientes expresiones es la correcta paracomprobar si el valor de COMISION es nulo (carece de valor): COMISION IS NULL COMISION = 0 COMISION = NULL Cualquiera de los anteriores6. Para comprobar si un nombre empieza por A, ¿qué expresiónsería la correcta?: nombre=A% Nombre LIKE A% Nombre LIKE A_ Nombre LIKE %A7. Para mostrar los empleados del departamento 10 y del 30 quéclausula WHERE sería 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 salario<3500 Salario>1500 OR salario<3500 Salario BETWEEN 1500 AND 3500
    • 9. Para crear una tabla se necesita: Un nombre de tabla Las definiciones de las columnas El nombre de la tabla y las definiciones de las columnas El nombre de la tabla y sus restricciones10. Para indicar que una columna va a ser clave principal: NOT NULL FOREIGN KEY CHECK PRIMARY KEY11. Para indicar que una columna va a ser clave ajena se necesitanlas cláusulas: FOREIGN KEY FOREIGN KEY con REFERENCES FOREIGN KEY con REFERENCES y ON DELETE CASCADE FOREIGN KEY y PRIMARY KEY12. Una restricción se puede definir a nivel de columna: Siempre se puede definir Si no le queremos dar un nombre Si afecta a una sola columna Si no le queremos dar un nombre y afecta a una sola columna13. La cláusula ON DELETE CASCADE: Es obligatoria para crear una clave ajena Es obligatoria para crear una clave ajena que permita el borrado automáticode filas cuando se ha borrado la clave principal Sirve para borrar filas seleccionadas con un WHERE Evita el borrado automático de filas cuando se ha borrado la clave principal
    • 14. Para añadir una columna a una tabla ya creada: ALTER TABLE tabla NombreColumna; ALTER TABLE tabla; ALTER TABLE tabla ADD NombreColumna; ALTER TABLE tabla ADD NombreColumna TipoDato;15. Para cambiar de nombre la tabla Uno por Dos podemos utilizar: ALTER TABLE Uno RENAME TO Dos; RENAME TABLE Uno TO Dos; Los dos anteriores Ninguno de los anteriores16. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos VALUES (50,MARKETING, NULL); INSERT INTO departamentos VALUES (50, NULL, BILBAO); INSERT INTO departamentos VALUES (50, MARKETING); Todos son correctos17. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos (dnombre, localidad) VALUES(BILBAO,50); INSERT INTO departamentos (dep_no, dnombre) VALUES(50,MARKETING); INSERT INTO departamentos (dnombre, dep_no) VALUES(MARKETING,50); INSERT INTO departamentos (dnombre, localidad, dep_no) VALUES (MARKETING,NULL, 50);18. Para incrementar en 100 Euros el salario de todos los empleadosescribiremos: UPDATE salario FROM empleados WHERE salario = salario + 100; UPDATE salario FROM empleados SET salario + 100; UPDATE empleados FROM salario WHERE salario = salario + 100; UPDATE empleados SET salario = salario + 100;
    • 19. La instrucción DELETE FROM empleados: Es incorrecta o errónea Elimina el último empleado de la tabla empleados Elimina el primer empleado de la tabla empleados Elimina todos los empleados de la tabla empleados20. Si existe una clave ajena en la tabla EMPLEADOS referenciandoa la tabla DEPARTAMENTOS sin la opción modificado en cascada,podremos modificar un departamento: Siempre Solo si no tiene empleados Nunca Siempre que hagamos primero la modificación correspondiente en la tablaEMPLEADOS
    • BLOQUE I (temas 5, 6, 7, 8 y 9)GESTION DE DATOS CON SQL"Evaluación II"Marca la casilla con la respuesta correcta 1. La cláusula WHERE: Selecciona las filas seleccionadas que cumplan una condición Establece un criterio de ordenación Indica sobre qué tabla se está realizando la consulta Modifica las filas de una tabla 2. Para ordenar de mayor a menor por salario y, a igual salario, alfabéticamente por apellido: ORDER BY salario,apellido ORDER BY apellido,salario DESC ORDER BY salario DESC,apellido ORDER BY salario DESC,apellido DESC 3. Para visualizar los tres empleados que más salario ganan: SELECT * FROM empleados ORDER BY salario LIMIT 3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 3; SELECT * FROM empleados ORDER BY salario LIMIT 1,3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 1,3;
    • 4. Las funciones de grupo exigen GROUP BY: Siempre Nunca No siempre, si se considera que todas las filas de la tabla forman un únicogrupo Da lo mismo5. Las expresiones de columna a especificar en una SELECT con cláusula GROUP BY: Son las que se quiera especificar sin otra restricción Son las que se han puesto en la cláusula GROUP BY Son las columnas o expresiones de agrupación y/o funciones de grupo Las funciones de columna que aparezcan en la cláusula HAVING6. La cláusula HAVING: Establece unas condiciones para la selección de grupos formados conGROUP BY Realiza lo mismo que la cláusula WHERE Sustituye a WHERE cuando existe GROUP BY Ordena los resultados de la agrupación7. Para obtener el mayor salario de cada departamento: SELECT MAX(salario),dep_no FROM empleados SELECT MAX(salario),dep_no FROM empleados GROUP BY salario SELECT MAX(salario),dep_no FROM empleados GROUP BY dep_no SELECT MAX(salario),dep_no FROM empleados WHEREMAX(salario)=dep_no8. Para seleccionar los departamentos con más de 2 empleados: SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_no SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_no HAVING COUNT(*)>2 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 posterioresconsultas Realizar una consulta después de otra10. Una subconsulta se describe en: WHERE HAVING WHERE o HAVING En cualquier cláusula de la consulta principal11. ¿Cuál sería la subconsulta correcta para obtener todos los números 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. ¿Cuál sería la subconsulta correcta obtener los empleados queganan 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. Una composición o combinación (JOIN) consiste en: Obtener filas de más de una tabla Obtener todas las filas resultantes de multiplicar tablas Aplicar una condición de selección a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas14. Para obtener los pedidos con nombres de cliente y de producto: SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes; SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes WHERE cliente_no=cliente_no ANDproducto_no=producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;15. Para obtener cada nombre de empleado con el nombre de sudirector: SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleadose1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleadose1,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 empleadose1,empleados e2 WHERE e2.director=e1.emp_no;
    • 16. Para listar los clientes con sus pedidos, incluyendo aquellos queno tengan ningún pedido: SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos pON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos pWHERE c.cliente_no=p.cliente_no;17. Para crear una tabla a partir de otra ya creada: No se puede Hay que crearla idéntica Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas18. Suponiendo que disponemos de la tabla TNOMBRES (reciéncreada y vacía) con una única columna denominada C1. Paraintroducir en ella todos los apellidos de los empleados cuyo salariosupera 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 WHEREsalario > 3000; Ninguna de las anteriores19. Al crear una vista: No se puede usar la cláusula ORDER BY en la creación 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 información de variastablas relacionadas Las tres anteriores son correctas
    • 20. Al eliminar una vista, los datos de las tablas en las que se basa lavista quedarán 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 selección de lavista. 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"Evaluación 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 más rápido. 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 información. 3. Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOS necesariamente debe haber un fichero asociado llamado empleados.frm donde están los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.frm donde están los índices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYD donde están los datos almacenados.
    • necesariamente debe haber un fichero asociado llamado empleados.MDIdonde están los índices almacenados.4. Si estoy lanzando una sentencia del tipo C:mysqlbin>myisamchk-u ..datatestempleados ¿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 desfragmentación. Comprimiendo la tabla empleados que se supone descomprimida.4. Indicar que sentencia es verdadera referida a la cláusula IDENTIFIED BY de una sentencia GRANT. Si el usuario no existe y se omite la cláusula se crea el usuario sin contraseña. Si el usuario existe y no se omite la cláusula la contraseña que acompaña la cláusula sustituye la anterior. Si el usuario existe y se omite la cláusula permanece vigente la contraseña anterior. Todas las anteriores son ciertas.6. Indicar cual de las siguientes sentencias GRANT no tiene un errorde sintaxis. mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhostIDENTIFIED BY algo FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BYalgo ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;
    • 7. Indica cual de las siguientes utilidades de la distribución deMySQL no requiere de una comunicación directa con el servidor myisamchk mysqlshow mysqldump mysqlimport8. Que diferencia sucede con los usuarios pepe@localhost yjuan@localhost si se lanzan estas dos sentencias. 1- mysql> SETPASSWORD FOR pepe@localhost=epep; y 2- mysql> SETPASSWORD FOR juan@localhost=PASSWORD(nuaj); La sentencia 1 tiene error de sintaxis la 2 está correcta. La sentencia 2 encripta la password la sentencia 1 no. La sentencia 2 tiene error de sintaxis la 1 está correcta. La sentencia 1 encripta la password la sentencia 2 no9. Indica la afirmación correcta con respecto a mysqldump ymysqlhotcopy mysqlhotcopy es solo para tablas InnoDB. mysqldump es solo para tablas MyISAM. mysqlhotcopy solo funciona si el servidor no está en ejecución. Las tres anteriores son falsas.10. Si desde la consola de comandos se lanza la siguiente sentenciashell>mysql -h mihost.midominio.es -u juan -p prueba Se intenta ejecutar el cliente mysql pero no se llega a conectar con la base dedatos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en lamáquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque tiene password.
    • Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque no tiene password.11. Indica la respuesta correcta El eliminar todos los privilegios de un usuario no supone la eliminación delusuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserveprivilegios. Se puede eliminar completamente un usuario mediante REVOKE ALLPRIVILEGES. Las tres anteriores respuestas son falsas.12. La siguiente sentencia… LOAD DATA LOCAL INFILE C:tempmisdatos.txt INTO TABLE mitabla FIELDS TERMINATED BY # ENCLOSED BY " LINES TERMINATED BY n; Busca el fichero misdatos.txt en la carpeta temp del servidor. Busca el fichero misdatos.txt en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si noencuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si noencuentra busca en la carpeta temp del servidor.13. Indica cual de las siguientes afirmaciones no es verdadera conrespecto al proceso de la replicación de datos: Permitir configurar el balanceo de carga en las consultas. Permite aumentar la fiabilidad ante las caídas de los servidores. Permite configurar el balanceo de carga en las transacciones. Incluye la posibilidad de implementar un servicio de copia de seguridad sobreel esclavo sin molestar al maestro y por tanto a los usuarios.
    • 14. Indica cual de las siguientes no es una regla valida paraestablecer una arquitectura de replicación: Un maestro puede tener muchos esclavos. Un esclavo solo debe tener un 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 condición indispensable para ejecutar dosservidores MySQL en la misma máquina. Deben escuchar las peticiones por dos puertos TCP distintos. Deben tener dos directorios de datos diferentes. Deben acceder a distintos fichero de configuración. 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 latabla mitabla. ALTER TABLE mitabla ADD INDEX miindice(micampo); CREATE INDEX miindice ON micampo FROM mitabla; CREATE INDEX miindice FROM mitabla (micampo); Todas son correctas.17. Sobre los tipos de índices marcar cual es la respuesta correcta delas siguientes: Los índices ordinarios son índices primarios que no admiten valoresduplicados. Los índices ordinarios son índices que no son primarios y permiten valoresduplicados. 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 sección[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 replicación: 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 decomandos: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 deintegridad. Todas las anteriores son falsas.
    • Parte II, tema 5Consultas sencillasObligatorioTablas utilizadas: EMPLEADOS y DEPARTAMENTOSEnunciado1. Escribir los apellidos de los empleados junto con sus fechas de alta enformato: <<numero del día>> de <<nombre del mes>> de <<año con 4dígitos>>2. Hallar por orden alfabético los apellidos de los empleados, suprimiendolas tres últimas letras, mostrando solo aquellos cuyo apellido tenga másde seis caracteres3. Se desea hacer un regalo de un 3% del salario a los empleados que notienen comisión. Obtener el listado ordenado por orden alfabético con losapellidos y el importe de los regalos4. Obtener los datos de los empleados cuyo salario total(salario+comisión) supere los 2.000 euros, siempre que además susalario supere los 1800 euros o su comisión supere los 500 euros5. Visualizar los datos del empleado de oficio DIRECTOR más antiguo enla empresa.6. Visualizar los datos de los dos empleados que ganan más salario entre los empleadosde los departamento 20 y 30
    • Parte II, tema 6Selección con agrupamientos y funciones de grupoObligatorioTablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.1. Obtener, para cada departamento, cuantos DIRECTORES hay en eldepartamento y cual es su salario medio.2. Obtener los salarios medios por departamento, ordenadosdescendentemente por dicho importe, cuando dichos salarios medios seaninferiores a 3000 euros3. Obtener el total de unidades por producto que hay entre todos lospedidos, visualizando el número de producto, la descripción y la suma.4. Listar los números de cliente que tengan más de dos pedidos,ordenado por cantidad de pedidos5. Obtener las localidades en las que haya más de un cliente, visualizandocuantos clientes hay.6. Obtener Los datos de los 4 productos de los que más unidades se hanvendido, visualizando el número de producto y las unidades vendidas
    • Parte II, tema 7SubconsultasObligatorioTablas utilizadas: EMPLEADOS , DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.1. Listar los nombres y códigos de los departamentos en los que hayaempleados.2. Obtener los datos del pedido más reciente.3. Pare el departamento de VENTAS, visualizar para cada oficio, la sumade los salarios de los empleados4. Obtener los datos del producto con más unidades en los pedidos de losclientes.5. Seleccionar los datos de los pedidos correspondientes al realizado conmayor cantidad de unidades del mismo producto, visualizándolo paracada producto.6. Seleccionar los empleados de la empresa que tengan igual comisiónque la media de su oficio
    • Parte II, tema 8Consultas multitablasObligatorioTablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.Enunciado1. Obtener una lista de los pedidos con la descripción del producto y elnombre del cliente clasificados por el número del cliente.2. Obtener los nombres de los empleados y los nombres de susdepartamentos, para aquellos empleados que no son del departamentoVENTAS y que entraron en la empresa después del 1 de enero de 82.3. Obtener una lista de los apellidos de los vendedores con el importeacumulado de sus pedidos.4. Obtener los nombre de los empleados del departamento 30 que sonjefes directos de algún empleado de la empresa, indicando de cuantosempleados son jefes.5. Realizar un listado de los empleados cuyo oficio es EMPLEADO, queincluirá los números de empleado, los apellido y los salarios anuales,sabiendo que el salario anual es el salario multiplicado por 14, eincluyendo en este listado el nombre del director del empleado.6. Visualizar los productos con el número total de pedidos, las unidadestotales vendidas, y el precio unidad de cada uno de ellos incluyendo losque no tienen pedidos (en este caso se mostrará un 0 en el total unidadesvendidas)
    • Parte II, tema 9Consultas dentro de otras sentenciasObligatorioTablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.Enunciado1. Añadir 100 euros de comisión a los empleados tengan una comisiónmenor de 500 euros o nula2. Crear una tabla clientes_producto_20 con las columnas cliente_no ynombre_cliente, equivalentes a las de la tabla clientes, y unidades_20equivalente a la de la tabla pedidos, que contenga las filas de la tablapedidos correspondientes al producto con número 20.3. Se quiere borrar al empleado MARTINEZ.Para poder hacerlo sin errores, previamente (en otra sentencia aparteejecutada anteriormente) se habrán modificado aquellos empleados delos que sea jefe MARTINEZ poniéndole como jefe al jefe supremo REY.4. Actualizar la columna debe de la tabla clientes incluyendo en ella elimporte total de los pedidos realizados por cada cliente5. Crear la vista EMPLEADOS_GARRIDO que incluirá los datos empleado_no,apellido, salario_anual de los empleados cuyo jefe es GARRIDO6. Crear una vista RESUMEN_DEP de los departamentos, incluyendo todoslos departamento hasta los que no tengan ningún empleado, que permitamostrar la información que se detalla:· Nombre del departamento Número de empleados· Suma de sus salarios· Suma de sus comisiones
    • BLOQUE II (temas 1, 2, 3 y 4)GESTION DE DATOS CON SQL"Evaluación I"Marca la casilla con la respuesta correcta 1. El lenguaje SQL permite: Controlar el acceso a la información Crear objetos en una base de datos Recuperar la información almacenada en la base de datos Todas las anteriores 2. En el modelo relacional la restricción 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 expresión A AND B será: true false null ninguno de los anteriores
    • 4. Indicar cuál de los siguientes identificadores es incorrecto: b2-ax ax_b2 axb2 xa2b5. Indicar cuál 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 anteriores6. Para comprobar si un nombre empieza por A, ¿qué expresión sería la correcta?: nombre=A% Nombre LIKE A% Nombre LIKE A_ Nombre LIKE %A7. Para mostrar los empleados del departamento 10 y del 30 qué clausula WHERE sería 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 salario<3500 Salario>1500 OR salario<3500 Salario BETWEEN 1500 AND 3500
    • 9. Para crear una tabla se necesita: Un nombre de tabla Las definiciones de las columnas El nombre de la tabla y las definiciones de las columnas El nombre de la tabla y sus restricciones10. Para indicar que una columna va a ser clave principal: NOT NULL FOREIGN KEY CHECK PRIMARY KEY11. Para indicar que una columna va a ser clave ajena se necesitanlas cláusulas: FOREIGN KEY FOREIGN KEY con REFERENCES FOREIGN KEY con REFERENCES y ON DELETE CASCADE FOREIGN KEY y PRIMARY KEY12. Una restricción se puede definir a nivel de columna: Siempre se puede definir Si no le queremos dar un nombre Si afecta a una sola columna Si no le queremos dar un nombre y afecta a una sola columna13. La cláusula ON DELETE CASCADE: Es obligatoria para crear una clave ajena Es obligatoria para crear una clave ajena que permita el borrado automáticode filas cuando se ha borrado la clave principal Sirve para borrar filas seleccionadas con un WHERE Evita el borrado automático de filas cuando se ha borrado la clave principal
    • 14. Para añadir una columna a una tabla ya creada: ALTER TABLE tabla NombreColumna; ALTER TABLE tabla; ALTER TABLE tabla ADD NombreColumna; ALTER TABLE tabla ADD NombreColumna TipoDato;15. Para cambiar de nombre la tabla Uno por Dos podemosutilizar: ALTER TABLE Uno RENAME TO Dos; RENAME TABLE Uno TO Dos; Los dos anteriores Ninguno de los anteriores16. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos VALUES (50,MARKETING, NULL); INSERT INTO departamentos VALUES (50, NULL, BILBAO); INSERT INTO departamentos VALUES (50, MARKETING); Todos son correctos17. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos (dnombre, localidad) VALUES(BILBAO,50); INSERT INTO departamentos (dep_no, dnombre) VALUES(50,MARKETING); INSERT INTO departamentos (dnombre, dep_no) VALUES(MARKETING,50); INSERT INTO departamentos (dnombre, localidad, dep_no) VALUES (MARKETING,NULL, 50);
    • 18. Para incrementar en 100 Euros el salario de todos los empleadosescribiremos: UPDATE salario FROM empleados WHERE salario = salario + 100; UPDATE salario FROM empleados SET salario + 100; UPDATE empleados FROM salario WHERE salario = salario + 100; UPDATE empleados SET salario = salario + 100;19. La instrucción DELETE FROM empleados: Es incorrecta o errónea Elimina el último empleado de la tabla empleados Elimina el primer empleado de la tabla empleados Elimina todos los empleados de la tabla empleados20. Si existe una clave ajena en la tabla EMPLEADOS referenciandoa la tabla DEPARTAMENTOS sin la opción modificado en cascada,podremos modificar un departamento: Siempre Solo si no tiene empleados Nunca Siempre que hagamos primero la modificación correspondiente en la tablaEMPLEADOS
    • BLOQUE II (temas 5, 6, 7, 8 y 9)GESTION DE DATOS CON SQL"Evaluación II"Marca la casilla con la respuesta correcta 1. La cláusula WHERE: Selecciona las filas seleccionadas que cumplan una condición Establece un criterio de ordenación Indica sobre qué tabla se está realizando la consulta Modifica las filas de una tabla 2. Para ordenar de mayor a menor por salario y, a igual salario, alfabéticamente por apellido: ORDER BY salario,apellido ORDER BY apellido,salario DESC ORDER BY salario DESC,apellido ORDER BY salario DESC,apellido DESC 3. Para visualizar los tres empleados que más salario ganan: SELECT * FROM empleados ORDER BY salario LIMIT 3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 3; SELECT * FROM empleados ORDER BY salario LIMIT 1,3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 1,3;
    • 4. Las funciones de grupo exigen GROUP BY: Siempre Nunca No siempre, si se considera que todas las filas de la tabla forman un únicogrupo Da lo mismo5. Las expresiones de columna a especificar en una SELECT con cláusula GROUP BY: Son las que se quiera especificar sin otra restricción Son las que se han puesto en la cláusula GROUP BY Son las columnas o expresiones de agrupación y/o funciones de grupo Las funciones de columna que aparezcan en la cláusula HAVING6. La cláusula HAVING: Establece unas condiciones para la selección de grupos formados conGROUP BY Realiza lo mismo que la cláusula WHERE Sustituye a WHERE cuando existe GROUP BY Ordena los resultados de la agrupación7. Para obtener el mayor salario de cada departamento: SELECT MAX(salario),dep_no FROM empleados SELECT MAX(salario),dep_no FROM empleados GROUP BY salario SELECT MAX(salario),dep_no FROM empleados GROUP BY dep_no SELECT MAX(salario),dep_no FROM empleados WHEREMAX(salario)=dep_no8. Para seleccionar los departamentos con más de 2 empleados: SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_no SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_noHAVING COUNT(*)>2 SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_noHAVING 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 posterioresconsultas Realizar una consulta después de otra10. Una subconsulta se describe en: WHERE HAVING WHERE o HAVING En cualquier cláusula de la consulta principal11. ¿Cuál sería la subconsulta correcta para obtener todos losnúmeros de pedido procedentes de clientes de BARCELONA: SELECT pedido_no FROM pedidos WHERE cliente_no=(SELECTcliente_no FROM clientes WHERE localidad=BARCELONA); SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECTcliente_no FROM clientes WHERE localidad=BARCELONA); SELECT pedido_no FROM pedidos WHERE cliente_no = (SELECTcliente_no FROM clientes) AND localidad=BARCELONA; SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECTcliente_no FROM clientes) AND localidad=BARCELONA;12. ¿Cuál sería la subconsulta correcta obtener los empleados queganan 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. Una composición o combinación (JOIN) consiste en: Obtener filas de más de una tabla Obtener todas las filas resultantes de multiplicar tablas Aplicar una condición de selección a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas14. Para obtener los pedidos con nombres de cliente y de producto: SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes; SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes WHERE cliente_no=cliente_no ANDproducto_no=producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;15. Para obtener cada nombre de empleado con el nombre de sudirector: SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleadose1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleadose1,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 empleadose1,empleados e2 WHERE e2.director=e1.emp_no;
    • 16. Para listar los clientes con sus pedidos, incluyendo aquellos que no tengan ningún pedido: SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos pON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos pWHERE c.cliente_no=p.cliente_no;17. Para crear una tabla a partir de otra ya creada: No se puede Hay que crearla idéntica Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas18. Suponiendo que disponemos de la tabla TNOMBRES (recién creada y vacía) 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 WHEREsalario > 3000; Ninguna de las anteriores19. Al crear una vista: No se puede usar la cláusula ORDER BY en la creación 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 información de variastablas relacionadas Las tres anteriores son correctas
    • 20. Al eliminar una vista, los datos de las tablas en las que se basa la vista quedarán 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 selección de lavista. 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"Evaluación 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 más rápido. 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 información. 3. Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOS necesariamente debe haber un fichero asociado llamado empleados.frm donde están los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.frm donde están los índices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYD donde están los datos almacenados.
    • necesariamente debe haber un fichero asociado llamado empleados.MDIdonde están los índices almacenados.4. Si estoy lanzando una sentencia del tipo C:mysqlbin>myisamchk-u ..datatestempleados ¿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 desfragmentación. Comprimiendo la tabla empleados que se supone descomprimida.5. Indicar que sentencia es verdadera referida a la cláusulaIDENTIFIED BY de una sentencia GRANT. Si el usuario no existe y se omite la cláusula se crea el usuario sin contraseña. Si el usuario existe y no se omite la cláusula la contraseña que acompaña lacláusula sustituye la anterior. Si el usuario existe y se omite la cláusula permanece vigente la contraseñaanterior. Todas las anteriores son ciertas.6. Indicar cual de las siguientes sentencias GRANT no tiene un errorde sintaxis. mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhostIDENTIFIED BY algo FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BYalgo ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;7. Indica cual de las siguientes utilidades de la distribución deMySQL no requiere de una comunicación directa con el servidor myisamchk mysqlshow mysqldump mysqlimport
    • 8. Que diferencia sucede con los usuarios pepe@localhost yjuan@localhost si se lanzan estas dos sentencias. 1- mysql> SETPASSWORD FOR pepe@localhost=epep; y 2- mysql> SETPASSWORD FOR juan@localhost=PASSWORD(nuaj); La sentencia 1 tiene error de sintaxis la 2 está correcta. La sentencia 2 encripta la password la sentencia 1 no. La sentencia 2 tiene error de sintaxis la 1 está correcta. La sentencia 1 encripta la password la sentencia 2 no9. Indica la afirmación correcta con respecto a mysqldump ymysqlhotcopy mysqlhotcopy es solo para tablas InnoDB. mysqldump es solo para tablas MyISAM. mysqlhotcopy solo funciona si el servidor no está en ejecución. Las tres anteriores son falsas.11. Si desde la consola de comandos se lanza la siguiente sentenciashell>mysql -h mihost.midominio.es -u juan -p prueba Se intenta ejecutar el cliente mysql pero no se llega a conectar con la base dedatos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en lamáquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque tiene password. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque no tiene password.12. Indica la respuesta correcta El eliminar todos los privilegios de un usuario no supone la eliminación delusuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserveprivilegios. Se puede eliminar completamente un usuario mediante REVOKE ALLPRIVILEGES. Las tres anteriores respuestas son falsas.
    • 13. La siguiente sentencia… LOAD DATA LOCAL INFILE C:tempmisdatos.txt INTO TABLE mitabla FIELDS TERMINATED BY # ENCLOSED BY " LINES TERMINATED BY n; Busca el fichero misdatos.txt en la carpeta temp del servidor. Busca el fichero misdatos.txt en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si noencuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si noencuentra busca en la carpeta temp del servidor.13. Indica cual de las siguientes afirmaciones no es verdadera conrespecto al proceso de la replicación de datos: Permitir configurar el balanceo de carga en las consultas. Permite aumentar la fiabilidad ante las caídas de los servidores. Permite configurar el balanceo de carga en las transacciones. Incluye la posibilidad de implementar un servicio de copia de seguridad sobreel 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 replicación: Un maestro puede tener muchos esclavos. Un esclavo solo debe tener un 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 condición indispensable para ejecutar dos servidores MySQL en la misma máquina. Deben escuchar las peticiones por dos puertos TCP distintos. Deben tener dos directorios de datos diferentes. Deben acceder a distintos fichero de configuración. 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 latabla mitabla. ALTER TABLE mitabla ADD INDEX miindice(micampo); CREATE INDEX miindice ON micampo FROM mitabla; CREATE INDEX miindice FROM mitabla (micampo); 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 valoresduplicados. Los índices ordinarios son índices que no son primarios y permiten valoresduplicados. 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 sección[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 replicación: 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 decomandos: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 deintegridad. Todas las anteriores son falsas
    • Parte III, tema 11Administración de MySQL (I)ObligatorioA partir del fichero ASCII TituloAutorNacionalidad.txt que tiene la siguienteinformación"Título"#"Autor"#"Nacionalidad""Las lecciones de las cosas"#"Luis Mateo Díez"#"Español""El secuestro de Miss Blandish"#"James HadleyChase"#"Norteamericano""Una princesa en Berlín"#"A. R. G. Solmssen"#"Alemán""Solal"#"Albert Cohen"#"Norteamericano""Los Indiferentes"#"Alberto Moravia"#"Italiano""El cabra"#"Alexandre Jardin"#"Francés""Asuntos Exteriores"#"Alison Lurie"#"Británico""La virtud sobre Lorin Jones"#"Alison Lurie"#"Británico""Amor y amistad"#"Alison Lurie"#"Británico"etc,etc….Se quiere importar a MYSQL dicha información pero optimizando elalmacenamiento de tal forma que la información resultante quedeestructurada de la siguiente forma Tabla NACIONALIDADES id nacionalidad 1 Espa±ol 2 Norteamericano 3 Alemßn 4 Italiano 5 FrancÚs 6 Britßnico 7 Asiatico etc,etc,.. Tabla AUTORES id autor id_nac 1 A. R. G. Solmssen 3 2 Alan Bennett 6 3 Albert Cohen 2 4 Alberto Moravia 4 5 Alexandre Jardin 5 6 Alison Lurie 6 7 Almudena Grandes 1 etc,etc,.. Tabla TITULOS id autor id_aut Las lecciones de las 1 3 cosas
    • El secuestro de Miss 2 6 Blandish 3 Una princesa en BerlÝn 2 4 Solal 4 5 Los Indiferentes 5 6 El cabra 6 7 Asuntos Exteriores 1EnunciadoSe pide:1. Debes acceder al servidor como root y crear la base de datos LIBROS ya continuación crear un usuario con password llamado librero conderechos totales en la base de datos LIBROS y con el permiso FILE quepermite importar ficheros a tablas y exportar tablas a ficheros.2. Establecer una conexión al servidor MySQL con el usuario librero yacceder a la base de datos LIBROS. Realizar con este usuario las tareasnecesarias de administración de BD para pasar la información desde elfichero TituloAutorNacionalidad.txt a las tablas NACIONALIDADES ,AUTORES y TITULOS. Habrá que tener en cuenta que los camposllamados Id en cada una de las tablas deben ser de tipo auto_increment.3. Incluye las restricciones de integridad que consideres necesarias entrelas tres tablas.4. Genera los ficheros ASCII nacionalidades.txt, autores.txt y titulos.txtexportando las tablas NACIONALIDADES , AUTORES y TITULOS comoficheros de texto de campos delimitados. El carácter delimitador será # ylos campos de texto deben ir entrecomilladosTodas estas tareas deben quedar reflejadas en sentencias sql y guardadasen un fichero de script llamado, por ejemplo, act1_administracion.sql conlos comentarios necesarios que consideres pertinentes.Si encuentras problemas o dificultades en la realización del ejercicio, notengas duda en preguntar al tutor o incluso enviarle las sentencias que nofuncionan como deben, para que lo vea y te ayude en la resolución deesta actividad. No obstante, ten en cuenta que no se trata de un ejerciciode autoevaluación, sino de evaluación por parte del tutor, por lo cualdebes intentar resolverlo por tu cuenta.Cuando acabes la actividad propuesta, comprime el fichero .sql en únicofichero tipo .zip o .rar y envíalo al tutor o tutora, para que puedacomprobar el grado de tu aprendizaje y orientarte adecuadamente, si loprecisas.
    • Parte III, tema 12Administración de MySQL (II)ObligatorioEnunciadoEste ejercicio consiste en hacer una simulación de un error de actuaciónsobre una base de datos que obliga al Administrador del servidor de basede datos MySQL a iniciar un proceso de recuperación de los datos a partirde la última copia de seguridad realizada y posteriormente ejecutar lassentencias almacenadas en el fichero de log para dejar la base de datosexactamente como se encontraba inmediatamente antes de producirse elerror.Pasos a dar para la ejecución de la práctica.1. Activa el binary log en el servidor MySQL y comprueba sufuncionamiento correcto. (Lee detenidamente el punto 12.1.4 de laDocumentación del curso)2. Crea una base de datos para nuestra prueba llamado por ejemploPRUEBACOPIA y cárgala con dos tablas a partir del script siguiente: CREATE DATABASE PRUEBACOPIA; USE PRUEBACOPIA; CREATE TABLE DEPARTAMENTOS ( DEP_NO INT(2), DNOMBRE VARCHAR(14), LOCALIDAD VARCHAR(10), CONSTRAINT PK_DEPARTAMENTOS_DEP_NO PRIMARY KEY (DEP_NO) ) engine=myisam; 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 TABLE EMPLEADOS ( EMP_NO INT(4), APELLIDO 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 basedatos PRUEBACOPIA del servidor. (Lee detenidamente el punto 11.5.1 dela Documentación del curso).4. Inmediatamente después de efectuada la copia reiniciamos el servidormysql. Esto obliga a que se genere un nuevo fichero binary loginmediatamente después de cada proceso de backup.5. Añadimos algunos cambios a nuestra base de datos de prueba para lacomprobación posterior. (por ejemplo borramos determinadas filas de unatabla y creamos una tabla nueva en la base de datos PRUEBACOPIA).6. Se corrompe la base de datos PRUEBACOPIA o se produceaccidentalmente alguna transacción no deseada. En nuestro casoborramos, se supone que por descuido, la base de datos PRUEBACOPIA.
    • El objetivo es recuperar las tablas a la situación que tenían justo antes deproducirse esa sentencia errónea de borrado.7. Antes de proceder a recuperar la copia reiniciamos de nuevo elservidor para que se inicie un nuevo fichero binary log .8. Restauramos la ultima copia de seguridad realizada. (Leedetenidamente el punto 11.5.1 de la Documentación del curso).9. Ejecutamos los binary log a partir de la última copia efectuadamediante la herramienta mysqlbinlog. Tenemos que determinar quefichero binary log es el que tiene los cambios realizados entre la creaciónde la copia de seguridad y la recuperación de dicha copia. Habrá queanalizar con cuidado que parte del fichero log tenemos que relanzarEjemplo:C:mysql4bin>mysqlbinlog --port=3308 --start-position=171 --stop-position=246 ..dataPortatil-bin.000005 | mysql --port=330810. Comprobamos que la base de datos se encuentra en el estado previoal momento de producirse el borrado accidental.Todos los comandos y sentencias que se realicen en este ejercicio desimulación de restauración completa de una base de datos deben quedarrecogidos en un documento llamado restaurar.txt con los comentariosnecesarios que consideréis pertinentes.
    • BLOQUE III (temas 1, 2, 3 y 4)SQL CON MYSQL"Evaluación I"Marca la casilla con la respuesta correcta 1. El lenguaje SQL permite: Controlar el acceso a la información Crear objetos en una base de datos Recuperar la información almacenada en la base de datos Todas las anteriores 2. En el modelo relacional la restricción 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 expresión A AND B será: true false null ninguno de los anteriores
    • 4. Indicar cuál de los siguientes identificadores es incorrecto: b2-ax ax_b2 axb2 xa2b5. Indicar cuál 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 anteriores6. Para comprobar si un nombre empieza por A, ¿qué expresión sería la correcta?: nombre=A% Nombre LIKE A% Nombre LIKE A_ Nombre LIKE %A7. Para mostrar los empleados del departamento 10 y del 30 qué clausula WHERE sería 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 salario<3500 Salario>1500 OR salario<3500 Salario BETWEEN 1500 AND 3500
    • 9. Para crear una tabla se necesita: Un nombre de tabla Las definiciones de las columnas El nombre de la tabla y las definiciones de las columnas El nombre de la tabla y sus restricciones10. Para indicar que una columna va a ser clave principal: NOT NULL FOREIGN KEY CHECK PRIMARY KEY11. Para indicar que una columna va a ser clave ajena se necesitan las cláusulas: FOREIGN KEY FOREIGN KEY con REFERENCES FOREIGN KEY con REFERENCES y ON DELETE CASCADE FOREIGN KEY y PRIMARY KEY12. Una restricción se puede definir a nivel de columna: Siempre se puede definir Si no le queremos dar un nombre Si afecta a una sola columna Si no le queremos dar un nombre y afecta a una sola columna13. La cláusula ON DELETE CASCADE: Es obligatoria para crear una clave ajena Es obligatoria para crear una clave ajena que permita el borrado automáticode filas cuando se ha borrado la clave principal Sirve para borrar filas seleccionadas con un WHERE Evita el borrado automático de filas cuando se ha borrado la clave principal
    • 14. Para añadir una columna a una tabla ya creada: ALTER TABLE tabla NombreColumna; ALTER TABLE tabla; ALTER TABLE tabla ADD NombreColumna ; ALTER TABLE tabla ADD NombreColumna TipoDato;15. Para cambiar de nombre la tabla Uno por Dos podemosutilizar: ALTER TABLE Uno RENAME TO Dos; RENAME TABLE Uno TO Dos; Los dos anteriores Ninguno de los anteriores16. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos VALUES (50,MARKETING, NULL); INSERT INTO departamentos VALUES (50, NULL, BILBAO); INSERT INTO departamentos VALUES (50, MARKETING); Todos son correctos17. Indicar cuál de los siguientes comandos de inserción esincorrecto: INSERT INTO departamentos (dnombre, localidad) VALUES(BILBAO,50); INSERT INTO departamentos (dep_no, dnombre) VALUES(50,MARKETING); INSERT INTO departamentos (dnombre, dep_no) VALUES(MARKETING,50); INSERT INTO departamentos (dnombre, localidad, dep_no) VALUES (MARKETING,NULL, 50);
    • 18. Para incrementar en 100 Euros el salario de todos los empleadosescribiremos: UPDATE salario FROM empleados WHERE salario = salario + 100; UPDATE salario FROM empleados SET salario + 100; UPDATE empleados FROM salario WHERE salario = salario + 100; UPDATE empleados SET salario = salario + 100;19. La instrucción DELETE FROM empleados: Es incorrecta o errónea Elimina el último empleado de la tabla empleados Elimina el primer empleado de la tabla empleados Elimina todos los empleados de la tabla empleados21. Si existe una clave ajena en la tabla EMPLEADOSreferenciando a la tabla DEPARTAMENTOS sin la opciónmodificado en cascada, podremos modificar un departamento: Siempre Solo si no tiene empleados Nunca Siempre que hagamos primero la modificación correspondiente en la tablaEMPLEADOS
    • BLOQUE III (temas 5, 6, 7, 8 y 9)SQL CON MYSQL"Evaluación II"Marca la casilla con la respuesta correcta 1. La cláusula WHERE: Selecciona las filas seleccionadas que cumplan una condición Establece un criterio de ordenación Indica sobre qué tabla se está realizando la consulta Modifica las filas de una tabla 2. Para ordenar de mayor a menor por salario y, a igual salario, alfabéticamente por apellido: ORDER BY salario,apellido ORDER BY apellido,salario DESC ORDER BY salario DESC,apellido ORDER BY salario DESC,apellido DESC 3. Para visualizar los tres empleados que más salario ganan: SELECT * FROM empleados ORDER BY salario LIMIT 3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 3; SELECT * FROM empleados ORDER BY salario LIMIT 1,3; SELECT * FROM empleados ORDER BY salario DESC LIMIT 1,3;
    • 4. Las funciones de grupo exigen GROUP BY: Siempre Nunca No siempre, si se considera que todas las filas de la tabla forman un únicogrupo Da lo mismo5. Las expresiones de columna a especificar en una SELECT concláusula GROUP BY: Son las que se quiera especificar sin otra restricción Son las que se han puesto en la cláusula GROUP BY Son las columnas o expresiones de agrupación y/o funciones de grupo Las funciones de columna que aparezcan en la cláusula HAVING6. La cláusula HAVING: Establece unas condiciones para la selección de grupos formados conGROUP BY Realiza lo mismo que la cláusula WHERE Sustituye a WHERE cuando existe GROUP BY Ordena los resultados de la agrupación7. Para obtener el mayor salario de cada departamento: SELECT MAX(salario),dep_no FROM empleados SELECT MAX(salario),dep_no FROM empleados GROUP BY salario SELECT MAX(salario),dep_no FROM empleados GROUP BY dep_no SELECT MAX(salario),dep_no FROM empleados WHEREMAX(salario)=dep_no8. Para seleccionar los departamentos con más de 2 empleados: SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_no SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_no
    • SELECT dep_no,COUNT(*) FROM empleados GROUP BY emp_noHAVING COUNT(*)>2 SELECT dep_no,COUNT(*) FROM empleados GROUP BY dep_noHAVING COUNT(*)>29. 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 posterioresconsultas Realizar una consulta después de otra10. Una subconsulta se describe en: WHERE HAVING WHERE o HAVING En cualquier cláusula de la consulta principal11. ¿Cuál sería la subconsulta correcta para obtener todos losnúmeros de pedido procedentes de clientes de BARCELONA: SELECT pedido_no FROM pedidos WHERE cliente_no=(SELECTcliente_no FROM clientes WHERE localidad=BARCELONA); SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECTcliente_no FROM clientes WHERE localidad=BARCELONA); SELECT pedido_no FROM pedidos WHERE cliente_no = (SELECTcliente_no FROM clientes) AND localidad=BARCELONA; SELECT pedido_no FROM pedidos WHERE cliente_no IN (SELECTcliente_no FROM clientes) AND localidad=BARCELONA;12. ¿Cuál sería la subconsulta correcta obtener los empleados queganan 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. Una composición o combinación (JOIN) consiste en: Obtener filas de más de una tabla Obtener todas las filas resultantes de multiplicar tablas Aplicar una condición de selección a las filas resultantes de multiplicar tablas Obtener el producto cartesiano de tablas14. Para obtener los pedidos con nombres de cliente y de producto: SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes; SELECT pedido_no,nombre,descripción,unidades FROMpedidos,productos,clientes WHERE cliente_no=cliente_no ANDproducto_no=producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no; SELECT pedido_no,nombre,descripción,unidades FROM pedidosp,productos pr,clientes c WHERE p.cliente_no=c.cliente_no ANDp.producto_no=pr.producto_no AND p.pedido=pr.pedido_no;15. Para obtener cada nombre de empleado con el nombre de sudirector: SELECT e1.apellido Empleado,e2.apellido "Su director" FROM empleadose1,empleados e2 WHERE e1.director=e2.emp_no; SELECT e2.apellido Empleado,e2.apellido "Su director" FROM empleadose1,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 empleadose1,empleados e2 WHERE e2.director=e1.emp_no;
    • 16. Para listar los clientes con sus pedidos, incluyendo aquellos queno tengan ningún pedido: SELECT c.cliente_no,nombre,pedido_no FROM clientes c RIGHT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c LEFT JOINpedidos p ON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c JOIN pedidos pON c.cliente_no=p.cliente_no; SELECT c.cliente_no,nombre,pedido_no FROM clientes c,pedidos pWHERE c.cliente_no=p.cliente_no;17. Para crear una tabla a partir de otra ya creada: No se puede Hay que crearla idéntica Se puede crear a partir de una consulta sobre la tabla ya creada Se puede hacer usando dos sentencias CREATE concatenadas18. Suponiendo que disponemos de la tabla TNOMBRES (reciéncreada y vacía) con una única columna denominada C1. Paraintroducir en ella todos los apellidos de los empleados cuyo salariosupera 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 WHEREsalario > 3000; Ninguna de las anteriores19. Al crear una vista: No se puede usar la cláusula ORDER BY en la creación 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 información de variastablas relacionadas Las tres anteriores son correctas
    • 20. Al eliminar una vista, los datos de las tablas en las que se basa lavista quedarán 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 selección de lavista. Se elimina la vista y las tablas y vistas asociadas. Ninguna de las anteriores
    • BLOQUE III (temas 10,11 y 12)SQL CON MYSQL"Evaluación 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 más rápido. 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 información. 3. Si en la base de datos hay una tabla tipo MyISAM llamada EMPLEADOS necesariamente debe haber un fichero asociado llamado empleados.frm donde están los datos almacenados.
    • necesariamente debe haber un fichero asociado llamado empleados.frm dondeestán los índices almacenados. necesariamente debe haber un fichero asociado llamado empleados.MYDdonde están los datos almacenados. necesariamente debe haber un fichero asociado llamado empleados.MDIdonde están los índices almacenados.4. Si estoy lanzando una sentencia del tipo C:mysqlbin>myisamchk-u ..datatestempleados ¿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 desfragmentación. Comprimiendo la tabla empleados que se supone descomprimida.5. Indicar que sentencia es verdadera referida a la cláusulaIDENTIFIED BY de una sentencia GRANT. Si el usuario no existe y se omite la cláusula se crea el usuario sin contraseña. Si el usuario existe y no se omite la cláusula la contraseña que acompaña lacláusula sustituye la anterior. Si el usuario existe y se omite la cláusula permanece vigente la contraseñaanterior. Todas las anteriores son ciertas.6. Indicar cual de las siguientes sentencias GRANT no tiene un errorde sintaxis. mysql>GRANT ALL PRIVILEGES ON *.* TO manuel@localhostIDENTIFIED BY algo FROM GRANT OPTION; mysql> GRANT ALL PRIVILEGES TO manuel@"%" IDENTIFIED BYalgo ; mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost; mysql> GRANT PRIVILEGES ON *.* TO manuel;7. Indica cual de las siguientes utilidades de la distribución deMySQL no requiere de una comunicación directa con el servidor
    • myisamchk mysqlshow mysqldump mysqlimport8. Que diferencia sucede con los usuarios pepe@localhost yjuan@localhost si se lanzan estas dos sentencias. 1- mysql> SETPASSWORD FOR pepe@localhost=epep; y 2- mysql> SETPASSWORD FOR juan@localhost=PASSWORD(nuaj); La sentencia 1 tiene error de sintaxis la 2 está correcta. La sentencia 2 encripta la password la sentencia 1 no. La sentencia 2 tiene error de sintaxis la 1 está correcta. La sentencia 1 encripta la password la sentencia 2 no9. Indica la afirmación correcta con respecto a mysqldump ymysqlhotcopy mysqlhotcopy es solo para tablas InnoDB. mysqldump es solo para tablas MyISAM. mysqlhotcopy solo funciona si el servidor no está en ejecución. Las tres anteriores son falsas.10. Si desde la consola de comandos se lanza la siguiente sentenciashell>mysql -h mihost.midominio.es -u juan -p prueba Se intenta ejecutar el cliente mysql pero no se llega a conectar con la base dedatos por error en la sintaxis. Se intenta ejecutar el cliente mysql para acceder a un servidor situado en lamáquina mihost.midominio.es mediante el usuario Juan con password prueba. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque tiene password. Se intenta ejecutar el cliente mysql para acceder a la base de datos prueba deun servidor situado en la máquina mihost.midominio.es mediante el usuario Juanque no tiene password.
    • 11. Indica la respuesta correcta El eliminar todos los privilegios de un usuario no supone la eliminación delusuario. Se puede eliminar un usuario mediante DROP USER aunque aun conserveprivilegios. Se puede eliminar completamente un usuario mediante REVOKE ALLPRIVILEGES. Las tres anteriores respuestas son falsas.12. La siguiente sentencia…LOAD DATA LOCAL INFILE C:tempmisdatos.txtINTO TABLE mitablaFIELDS TERMINATED BY # ENCLOSED BY "LINES TERMINATED BY n; Busca el fichero misdatos.txt en la carpeta temp del servidor. Busca el fichero misdatos.txt en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del servidor y si noencuentra busca en la carpeta temp del cliente. Busca primero el fichero misdatos.txt en la carpeta temp del cliente y si noencuentra busca en la carpeta temp del servidor.13. Indica cual de las siguientes afirmaciones no es verdadera conrespecto al proceso de la replicación de datos: Permitir configurar el balanceo de carga en las consultas. Permite aumentar la fiabilidad ante las caídas de los servidores. Permite configurar el balanceo de carga en las transacciones. Incluye la posibilidad de implementar un servicio de copia de seguridad sobreel esclavo sin molestar al maestro y por tanto a los usuarios.14. Indica cual de las siguientes no es una regla valida paraestablecer una arquitectura de replicación: Un maestro puede tener muchos esclavos. Un esclavo solo debe tener un 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 condición indispensable para ejecutar dosservidores MySQL en la misma máquina. Deben escuchar las peticiones por dos puertos TCP distintos. Deben tener dos directorios de datos diferentes. Deben acceder a distintos fichero de configuración. 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 latabla mitabla. ALTER TABLE mitabla ADD INDEX miindice(micampo); CREATE INDEX miindice ON micampo FROM mitabla; CREATE INDEX miindice FROM mitabla (micampo); Todas son correctas.17. Sobre los tipos de índices marcar cual es la respuesta correcta delas siguientes: Los índices ordinarios son índices primarios que no admiten valoresduplicados. Los índices ordinarios son índices que no son primarios y permiten valoresduplicados. 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 sección[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 replicación: 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 decomandos: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 deintegridad. Todas las anteriores son falsas.