
Seguramente, tienes la curiosidad de cómo un profesor en la asignatura de base de datos puede plantear un ejercicio de la misma usando creación de tablas, inserción y consultas de datos. Con el ejercicio que verás a continuación, lograrás practicar paso a paso y así aprender a cómo crear una base de datos e insertar y hacer consultas en esta.
Requisitos previos antes de hacer el ejercicio
Antes de empezar, debes asegurarte de tener:
- Instalado MySQL/MariaDB server o PostgreSQL.
- Instalado MySQL Workbench o PG Admin (por múltiples razones que explicaré más adelante).
- Suficiente tiempo para realizar este ejercicio con calma.
- Ganas de aprender.
Enunciado del ejercicio
Para el presente ejercicio, deberás:
- Crear una base de datos con el nombre
concesionario
. - Crear una tabla llamada
autos
con los siguientes campos:matricula
(campo primario).marca
.modelo
.color
.kilometraje
.
- Crear una tabla llamada
clientes
con los siguientes campos:id_cliente
(campo primario).nombre
.domicilio
.telefono
.
- Insertar 3 registros en cada una de las tablas.
- Y por último, realizar las siguientes consultas:
- Mostrar solo el campo
marca
de todos los registros de los autos. - Mostrar solo el campo
marca
de todos los registros de los autos omitiendo repetidos. - Mostrar el
telefono
de todos los clientes que se llamen «Juan» - Mostrar la
matricula
de los autos cuyomodelo
sea «Focus» y sukilometraje
sea mayor que 50.000 (cincuenta mil). - Mostrar el
kilometraje
de los autos cuyamarca
sea «FORD», «RENAULT» O «FIAT». - Mostrar todos los campos de los autos cuyo
kilometraje
esté entre 10.000 (diez mil) y 20.000 (veinte mil). - Mostrar todos los campos de los autos cuyo
modelo
comience con «GOL». - Mostrar el promedio de los
kilometraje
de todos los autos. - Mostrar todas las
marcas
de autos con su promedio dekilometraje
y que estén agrupados pormarca
, siempre y cuando el promedio de kilometraje sea menor que 50.000 (cincuenta mil). - Mostrar el total de los autos, el nombre de la columna será «Total de Autos».
- Mostrar solo el campo
No sé si te habrás dado cuenta, pero dí algunas pistas para la resolución de los ejercicios, si gustas en resolver este ejercicio por tu cuenta, puedes comprobar la sintaxis del lenguaje de consultas estructurado en este post.
Resolución del enunciado
Ahora bien, vamos a resolver paso por paso el enunciado, primero creas la base de datos, y creas las tablas, de esta forma cumplimos los pasos 1 al 3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
CREATE DATABASE concesionario; -- creamos la BD USE concesionario; -- la marcamos como actual CREATE TABLE autos ( -- creamos la tabla autos matricula VARCHAR(10) NOT NULL PRIMARY KEY, -- llave primaria marca VARCHAR(20) NOT NULL, modelo VARCHAR(30) NOT NULL, color VARCHAR(16) NOT NULL, kilometraje DOUBLE NOT NULL ); CREATE TABLE clientes( -- creamos la tabla clientes id_cliente INT NOT NULL PRIMARY KEY AUTO_INCREMENT, -- llave primaria nombre VARCHAR(100) NOT NULL, domicilio TEXT NOT NULL, telefono VARCHAR(22) NOT NULL, matricula_auto VARCHAR(10) NOT NULL, FOREIGN KEY (matricula_auto) REFERENCES autos(matricula) ON DELETE CASCADE ON UPDATE CASCADE -- asignamos llave foránea y acciones ); |
Con ello creado, debes pasar al paso número cuatro, aquí es donde digo que tú eres el que debe insertar los datos, tienes que leer con detenimiento los datos que te dice el enunciado para insertarlos, de lo contrario, no podrás realizar estos ejercicios.
TIP: algunos de los datos los he descrito con paréntesis, y otros están en cursiva y entre comillas.
Supongo que ya insertaste los datos, si es así, ahora te mostraré las consultas que debes realizar:
Consulta 5.1
1 2 3 |
SELECT marca FROM autos; |
En esta consulta, seleccionamos todas las marcas de los autos.
Consulta 5.2
1 2 3 |
SELECT DISTINCT(marca) FROM autos; |
Fíjate que aquí hacemos lo mismo que la anterior consulta, solo que DISTINCT no nos muestra registros repetidos.
Consulta 5.3
1 2 3 |
SELECT telefono FROM clientes WHERE nombre = "juan"; |
Aquí, la consulta se basa en seleccionar el teléfono de aquellos clientes que se llamen juan
Consulta 5.4
1 2 3 |
SELECT matricula FROM autos WHERE modelo = "focus" AND kilometraje >50; |
Seleccionamos la matricula de aquellos autos que su modelo sea focus y su kilometraje sea mayor de 50
Consulta 5.5
1 2 3 |
SELECT kilometraje FROM autos WHERE marca = "Ford" OR marca = "Fiat" OR marca = "Renault"; |
En esta otra consulta, seleccionamos el kilometraje de aquellos autos que sean de alguna de las marcas nombradas.
Consulta 5.6
1 2 3 |
SELECT * FROM autos WHERE kilometraje BETWEEN 10000 AND 20000; |
Aquí, seleccionamos todo de los autos que su kilometraje se encuentre entre 10000 y 20000
Consulta 5.7
1 2 3 |
SELECT * FROM autos WHERE modelo LIKE "gol%"; |
Fíjate que en esta consulta usamos una expresión regular, por lo que nos va a arrojar todos los autos cuyo modelo empiece por gol, no nos interesa con qué termina, únicamente queremos los autos que coincidan con la expresión.
Consulta 5.8
1 2 3 |
SELECT AVG(kilometraje) FROM autos; |
AVG nos da el promedio, en este caso del kilometraje
Consulta 5.9
1 2 3 |
SELECT marca, AVG(kilometraje) AS "kilometraje" FROM autos GROUP BY marca HAVING AVG(kilometraje) < 50000 ORDER BY AVG(kilometraje) DESC; |
En esta consulta, queremos obtener todo el promedio de kilometraje de cada marca de autos, que se agruparán por la marca mientras que el promedio del kilometraje sea menor que 50000, y estos se ordenaran por el último nombrado.
Consulta 5.10
1 2 3 |
SELECT COUNT(*) AS "TOTAL DE AUTOS" FROM autos; |
Aquí obtenemos todo el total de autos registrados.
Espero que te haya servido este post, ten en cuenta que uedes encontrar ejemplos de estas consultas en este post