Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios
En este Manual de Trabajo a aparece el acceso a los distintos ejercicios
opcionales
obligatorios
del
curso
de
SQL
con
MySQL.
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.
Parte I, tema 1
El lenguaje de gestin de base de datos
Obligatorio
NOTA: 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
para
verificar
la
Parte I, tema 2
Elementos del lenguaje
Obligatorio
NOTA: 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
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)
Parte I, tema 3
Creacin de tablas
Obligatorio
NOTA: 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
Tipo
alfanumrico
alfanumrico
alfanumrico
alfanumrico
alfanumrico
alfanumrico
Tabla ARTICULOS
Campo
Referencia_articulo
Descripcin_articulo
Precio_unidad
IVA
Existencias_actuales
Tipo
alfanumrico de 12 caracteres
alfanumrico de 30 caracteres
numrico de 6 posiciones, con dos decimales
numrico de 2 posiciones
numrico de 5 posiciones
Tabla FACTURAS
Campo
Factura_no
Fecha_factura
CIF_cliente
Tipo
numrico de 6 posiciones
tipo fecha
alfanumrico de 11 caracteres
Tabla LINEAS_FACTURA
Campo
Factura_no
Referencia_articulo
Unidades
Tipo
numrico de 6 posiciones
alfanumrico de 12 caracteres
numrico de 3 posiciones
de
de
de
de
de
de
11 caracteres
30 caracteres
30 caracteres
30 caracteres
5 caracteres
9 caracteres
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.
Parte I, tema 4
Actualizacin de tablas
Obligatorio
NOTA: 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
Domicilio
Localidad C postal Telefono
111111-L
TELARES ASUNCION C. LA RUA 5
ALBACETE 02002
97223141
222222-J
TEXTIL LAGO
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
Tabla LINEAS_FACTURAS
Factura_no
Referencia_articulo
1
01-LANA
1
04-LINO
2
01-LANA
2
02-ALGODN
Cod_oficina
1212
1231
1406
1212
Unidades
120
75
20
50
Precio_unidad
10.99
IVA
10
indicar
que
ha
descripcion_articulo
BLOQUE I (temas 1, 2, 3 y 4)
SQL CON MYSQL
"Evaluacin I"
Marca la casilla con la respuesta correcta
el
objetos
la
acceso
en
informacin
a
una
almacenada
la
informacin
base
en
de
la
base
datos
de
datos
IS
COMISION
COMISION
NULL
0
NULL
LIKE
'A%'
Nombre
LIKE
'A_'
11. Para indicar que una columna va a ser clave ajena se necesitan
las clusulas:
FOREIGN KEY
FOREIGN KEY con REFERENCES
FOREIGN KEY con REFERENCES y ON DELETE CASCADE
FOREIGN KEY y PRIMARY KEY
13.
La
clusula
ON
DELETE
CASCADE:
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 anteriores
departamentos
(dnombre,
localidad)
VALUES
INSERT
INTO
(50,'MARKETING');
departamentos
(dep_no,
dnombre)
VALUES
INSERT
INTO
('MARKETING',50);
departamentos
(dnombre,
dep_no)
VALUES
salario
FROM
empleados
SET
salario
100;
BLOQUE I (temas 5, 6, 7, 8 y 9)
SQL CON MYSQL
"Evaluacin II"
Marca la casilla con la respuesta correcta
1. La clusula WHERE:
Selecciona
las
filas
seleccionadas
que
cumplan
una
condicin
FROM
empleados
ORDER
BY salario
LIMIT 3;
6. La clusula HAVING:
Establece unas condiciones para la seleccin de grupos formados con
GROUP BY
Realiza lo mismo que la clusula WHERE
Sustituye a WHERE cuando existe GROUP BY
Ordena los resultados de la agrupacin
FROM
empleados
WHERE
filas
todas
de
las
filas
ms
resultantes
de
de
una
multiplicar
tabla
tablas
FROM
SELECT
pedido_no,nombre,descripcin,unidades
pedidos,productos,clientes
WHERE
cliente_no=cliente_no
producto_no=producto_no;
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;
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;
se
que
puede
crearla
idntica
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
EMPLEADOS
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.
la
tabla
empleados
tipo
InnoDB.
la
tabla
empleados
mediante
una
desfragmentacin.
IDENTIFIED
BY
de
una
sentencia
GRANT.
sentencia
La
sentencia
La
sentencia
tiene
error
encripta
tiene
la
error
de
sintaxis
password
de
la
la
sintaxis
la
est
sentencia
1
est
correcta.
1
no.
correcta.
es
es
solo
solo
para
para
tablas
tablas
InnoDB.
MyISAM.
configurar
el
balanceo
de
carga
en
las
consultas.
configurar el balanceo
de carga en las
transacciones.
maestro
Un
esclavo
puede
solo
tener
debe
muchos
tener
esclavos.
un
maestro.
tener
Deben
acceder
las peticiones
dos
a
por dos
directorios
distintos
de
datos
fichero
de
diferentes.
configuracin.
TABLE
INDEX
INDEX
mitabla
ADD
miindice
miindice
ON
INDEX
micampo
FROM
miindice(micampo);
FROM
mitabla
mitabla;
(micampo);
Enunciado
1. Escribir los apellidos de los empleados junto con sus fechas de alta en
formato: <<numero del da>> de <<nombre del mes>> de <<ao con 4
dgitos>>
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
BLOQUE II (temas 1, 2, 3 y 4)
SQL CON MYSQL
"Evaluacin I"
Marca la casilla con la respuesta correcta
clausula
WHERE
sera
la
adecuada:
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 restricciones
NULL
FOREIGN
KEY
CHECK
PRIMARY KEY
11. Para indicar que una columna va a ser clave ajena se necesitan
las
clusulas:
FOREIGN KEY
FOREIGN
KEY
con
REFERENCES
13.
La
Es
clusula
obligatoria
ON
para
DELETE
crear
CASCADE:
una
clave
ajena
Es obligatoria para crear una clave ajena que permita el borrado automtico
de
filas
cuando
se
ha
borrado
la
clave
principal
Sirve
para
borrar
filas
seleccionadas
con
un
WHERE
14. Para
aadir
una
columna
una
tabla
ya
creada:
INTO
departamentos
VALUES
(50,
'MARKETING');
departamentos
(dnombre,
localidad)
VALUES
INSERT
INTO
(50,'MARKETING');
departamentos
(dep_no,
dnombre)
VALUES
INSERT
INTO
('MARKETING',50);
departamentos
(dnombre,
dep_no)
VALUES
salario
FROM
empleados
SET
salario
100;