domingo, 16 de noviembre de 2014

Ejercicios SQL - PHPMyAdmin



Para realizar estos ejercicios, la tabla Persona y la tabla Idiomas se tienen que crear en la base de datos _prueba. Estas tablas contienen los siguientes datos:

Tabla Persona:


Tabla Idiomas:


El script SQL que permite crear las tablas con sus datos es:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-- Base de datos: `_prueba`
-- --------------------------------------------------------
-- Estructura de la tabla `idioma`
DROP TABLE IF EXISTS Idiomas;
CREATE TABLE IF NOT EXISTS Idiomas (
Id int(11) NOT NULL AUTO_INCREMENT,
Etiqueta varchar(20) NOT NULL,
PRIMARY KEY (Id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
-- Contenido de la tabla `idioma`
INSERT INTO Idiomas (Id, Etiqueta) VALUES
(1, ’Francés’),
(2, ’Inglés’),
(3, ’Alemán’),
(4, ’Ruso’);
-- --------------------------------------------------------
-- Estructura de la tabla `persona`
DROP TABLE IF EXISTS Persona;
CREATE TABLE IF NOT EXISTS Persona (
Id_person int(11) NOT NULL AUTO_INCREMENT,
Nombre varchar(20) NOT NULL,
Apellidos varchar(20) NOT NULL,
Edad int(11) NOT NULL,
Id_idioma int(11) NOT NULL,
PRIMARY KEY (Id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
-- Contenido de la tabla `persona`
INSERT INTO Persona (Id, Nombre, Apellidos, Edad, Id_idioma) VALUES
(1, ’Nanie’, ’Morales HonHon’, 55, 1),
(2, ’David’, ’Manrique Adán’, 60, 2),
(3, ’María’, ’Malasaña Agora’, 35, 3),
(4, ’Roberto’, ’Magalán’, 23, 1),
(5, ’Manuel’, ’Olis De Las Heras’, 20, 2),
(6, ’Margarita’, ’Germán’, 26, 1)

A continuación escriba el script SQL en la pestaña SQL de PHPMyAdmin. Este script elimina las tablas Idiomas y Persona y las vuelve a crear con sus datos.


1. Enunciados

Ejercicio 1 (muy fácil)

Cree una consulta que permita mostrar los apellidos, el nombre y la edad de todas las personas mayores de 50 años.


Ejercicio 2 (fácil)

Cree una consulta que permita mostrar los apellidos, el nombre y la edad de todas las personas que hablen francés y cuyos apellidos contengan ’Ma’.


Ejercicio 3 (fácil)

Cree una consulta que permita mostrar los apellidos, el nombre y la edad de las tres primeras personas con Nombre en orden alfabético.


Ejercicio 4 (dificultad media)

Cree una consulta que permita mostrar la edad media y el idioma de las personas agrupadas por idioma.


Ejercicio 5 (dificultad media)

Cree una consulta que permita mostrar la edad media redondeada a la unidad de las personas agrupadas por idioma que tienen la cadena de caracteres ’es’ contenida en su idioma.


Ejercicio 6 (difícil)

Cree una consulta que permita mostrar las tres primeras letras del nombre concatenadas con un espacio concatenado a su vez con las tres primeras letras de los apellidos de las personas mayores de 30 años. Y además, las tres últimas letras del nombre concatenadas con un espacio concatenado a su vez con las tres últimas letras de los apellidos de las personas menores de 30 años.


Ejercicio 7 (dificultad media)

Cree una consulta que permita mostrar la hora actual si el nombre contiene seis caracteres y la hora actual más una hora en otros casos.


Ejercicio 8 (difícil)

Cree una consulta que permita mostrar todos los idiomas que no habla David Manrique Adán.


Ejercicio 9 (muy difícil)

Cree una consulta que permita mostrar la suma de edades agrupadas por idioma de todas las personas que hablan los idiomas que no hablan las personas de 18 a 25 años.



2. Soluciones

Solución del ejercicio 1

Select Nombre, Apellidos, Edad FROM Persona WHERE Edad > 50

Solución del ejercicio 2

Select Nombre, Apellidos, Edad FROM Persona INNER JOIN Idiomas ON
Persona.Id_idioma = Idiomas.Id WHERE Etiqueta = ’Francés’
AND Apellidos LIKE ’Ma%’

Solución del ejercicio 3

Select Nombre, Apellidos, Edad FROM Persona ORDER BY Nombre LIMIT 3

Solución del ejercicio 4

SELECT AVG(Edad) AS edad_media, Etiqueta AS Idiomas FROM Persona INNER JOIN
Idiomas ON Persona.Id_idioma = Idiomas.Id GROUP BY Id_idioma

Solución del ejercicio 5

SELECT ROUND(AVG(Edad)) AS edad_media redondeada, Etiqueta AS Idiomas
FROM Persona
INNER JOIN Idiomas ON Persona.Id_idioma = Idiomas.Id
GROUP BY Id_idioma
HAVING Etiqueta LIKE ’%es%’

Solución del ejercicio 6

SELECT CONCAT(SUBSTR(Nombre,1,3),’ ’,SUBSTR(Apellidos,1,3))
as Nombre_apellido
FROM Persona WHERE Edad > 30
UNION
SELECT CONCAT(SUBSTR(Nombre,LENGTH(Nombre)-2),’ ’,SUBSTR(Apellidos,
LENGTH(Apellidos)-2)) as Nombre_apellido FROM Persona WHERE Edad < 30

Solución del ejercicio 7

Select Nombre,IF(LENGTH(Nombre) = 6 ,CURRENT_TIME,ADDTIME(CURRENT_TIME,
’01:00:00’)) as horario FROM `Persona`

Solución del ejercicio 8

SELECT Etiqueta FROM Idiomas WHERE Id NOT IN (
SELECT Id_idioma FROM Persona WHERE Nombre=’David’
)

Solución del ejercicio 9

SELECT SUM(Edad) as Suma_Edad, Etiqueta as Idiomas
FROM Persona
INNER JOIN Idiomas ON Persona.Id_idioma = Idiomas.Id
GROUP BY Id_idioma
HAVING Id_idioma NOT IN (
SELECT Id_idioma FROM Persona WHERE Edad BETWEEN 25 AND 27
)



Espero haber ayudado en algo. Hasta la próxima oportunidad!

DESCARGAR PUBLICACIÓN









2 comentarios:

  1. Respuestas
    1. Hola videos programados, gracias por la visita y el aporte de tu comentario!
      Los mejores deseos! Hasta cualquier momento!

      Eliminar