Está en la página 1de 31

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

INGENIERÍA EN ENTORNOS VIRTUALES Y NEGOCIOS DIGITALES

BASE DE DATOS PARA NEGOCIOS DIGITALES


II. Manipulación Avanzada

Actividad 1: Creación de Bases de datos y Consultas SQL


Contenido

1. Consulta sobre una tabla............................................................................................. 1


Crear la base de datos a consultar. .............................................................................. 1
Consulta: Lista el nombre de todos los productos que hay en la tabla producto. . 2
Consulta: Lista los nombres y los precios de todos los productos de la tabla
producto............................................................................................................................. 3
Consulta: Lista todas las columnas de la tabla producto. ......................................... 4
Consulta: Lista el nombre de los productos, el precio en euros y el precio en
dólares estadounidenses. ............................................................................................... 4
Consulta: Lista los nombres y los precios de todos los productos de la tabla
producto convirtiendo los nombres a mayúsculas...................................................... 6
Consulta: Lista los nombres y los precios de todos los productos de la tabla
producto, convirtiendo los nombres a minúscula........................................................ 6
Consulta: Lista el nombre de todos los fabricantes en una columna, y en otra
columna obtenga en mayúsculas dos primeros caracteres del nombre del
fabricante........................................................................................................................... 7
Consulta: Lista los nombres y los precios de todos los productos de la tabla
producto, redondeando el valor del precio. ................................................................. 7
Consulta: Lista los nombres y los precios de todos los productos de la tabla
producto, truncando el valor del precio para mostrarlo sin ninguna cifra decimal.
............................................................................................................................................ 8
Consulta: Lista el código de los fabricantes que tienen productos en la tabla
producto............................................................................................................................. 9
Consulta: Lista el código de los fabricantes que tienen productos en la tabla
producto, eliminando los códigos que aparecen repetidos. ...................................... 9
Consulta: Lista los nombres de los fabricantes ordenados de forma ascendente.
..........................................................................................................................................10
Consulta: lista los nombres de los fabricantes ordenados de forma descendente.
..........................................................................................................................................11
Consulta: lista los nombres de los productos ordenados en primer lugar por el
nombre de forma ascendente y en segundo lugar por el precio de forma
descendente. ..................................................................................................................11
Consulta: devuelve una lista con las primeras 5 filas de la tabla fabricante. .......12
Consulta: devuelve una lista con 2 filas a partir de la cuarta fila de la tabla
fabricante. La cuarta fila también se debe de incluir en la respuesta. ..................13
Consulta: lista el nombre y el precio del producto más barato. (Utilice solamente
las cláusulas ORDER BY y LIMIT)..............................................................................13
Consulta: lista el nombre y el precio del producto más caro. (Utilice solamente las
cláusulas ORDER BY y LIMIT) ....................................................................................14
Consulta: lista el nombre de todos los productos del fabricante cuyo código de
fabricante es igual a 2. ..................................................................................................14
Consulta: lista el nombre de los productos que tienen un precio menor o igual a
120€. ................................................................................................................................15
Consulta: lista el nombre de los productos que tienen un precio mayor o igual a
400€. ................................................................................................................................15
Consulta: lista el nombre de los productos que no tienen un precio mayor o igual
a 400€. .............................................................................................................................16
Consulta: lista todos los productos que tengan un precio entre 80€ y 300€. Sin
utilizar el operador BETWEEN. ...................................................................................17
Consulta: lista todos los productos que tengan un precio mayor que 200€ y que el
código de fabricante sea igual a 6. .............................................................................17
Consulta: lista todos los productos donde el código de fabricante sea 1, 3 o 5. Sin
utilizar el operador IN. ...................................................................................................18
Consulta: lista todos los productos donde el código de fabricante sea 1, 3 o 5.
Utilizando el operador IN. .............................................................................................18
Consulta: lista el nombre y el precio de los productos en céntimos (Habrá que
multiplicar por 100 el valor del precio). Cree un alias para la columna que contiene
el precio que se llame céntimos. .................................................................................19
Consulta: lista los nombres de los fabricantes cuyo nombre empiece por la letra
S........................................................................................................................................19
Consulta: lista los nombres de los fabricantes cuyo nombre termine por la vocal
e. .......................................................................................................................................20
Consulta: lista los nombres de los fabricantes cuyo nombre contenga el carácter
w. ......................................................................................................................................20
Lista los nombres de los fabricantes cuyo nombre sea de 4 caracteres. .............21
Consulta: devuelve una lista con el nombre de todos los productos que contienen
la cadena Portátil en el nombre. ..................................................................................21
Consulta: devuelve una lista con el nombre de todos los productos que contienen
la cadena Monitor en el nombre y tienen un precio inferior a 215 €. ....................22
Consulta: lista el nombre y el precio de todos los productos que tengan un precio
mayor o igual a 180€. Ordene el resultado en primer lugar por el precio (en orden
descendente) y en segundo lugar por el nombre (en orden ascendente)............22
Introducción

Como muchas instrucciones Transact-SQL, la instrucción CREATE DATABASE


tiene un parámetro obligatorio: el nombre de la base de datos. CREATE DATABASE
también tiene muchos parámetros opcionales, como la ubicación de disco donde se
quieren colocar los archivos de la base de datos. Si se ejecuta CREATE DATABASE
sin los parámetros opcionales, SQL Server usa los valores predeterminados para
muchos de estos parámetros.
SQL (Structured Query Language o Lenguaje de consultas estructuradas) El
lenguaje de consultas estructuradas o SQL (Structured Query Language) es un
lenguaje de programación estandarizado que se utiliza para administrar bases de
datos relacionales y realizar diversas operaciones con los datos que contienen.
En el presente trabajo se muestra como crear una base de datos, así como a hacer
las consultas de diferentes ejercicios que se dejan en clases.
1. Consulta sobre una tabla

Crear la base de datos a consultar.

En Workbench se debe ingresar el siguiente código para crear la base de datos que
se usará para las consultas, así mismo crear las tablas y añadir los datos a estas
mismas.

Código:
DROP DATABASE IF EXISTS tienda;

CREATE DATABASE tienda CHARACTER SET utf8mb4;

USE tienda;

CREATE TABLE fabricante (

codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

nombre VARCHAR(100) NOT NULL

);

CREATE TABLE producto (

codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

nombre VARCHAR(100) NOT NULL,

precio DOUBLE NOT NULL,

codigo_fabricante INT UNSIGNED NOT NULL,FOREIGN KEY (codigo_fabricante) REFERENCES


fabricante(codigo)

);

INSERT INTO fabricante VALUES(1, 'Asus');

INSERT INTO fabricante VALUES(2, 'Lenovo');

INSERT INTO fabricante VALUES(3, 'Hewlett-Packard');

INSERT INTO fabricante VALUES(4, 'Samsung');

INSERT INTO fabricante VALUES(5, 'Seagate');

INSERT INTO fabricante VALUES(6, 'Crucial');

INSERT INTO fabricante VALUES(7, 'Gigabyte');

INSERT INTO fabricante VALUES(8, 'Huawei');

INSERT INTO fabricante VALUES(9, 'Xiaomi');

INSERT INTO producto VALUES(1, 'Disco Duro SATA 1TB', 86.99, 5);

1
INSERT INTO producto VALUES(2, 'Memoria RAM DDR4 8GB', 120, 6);

INSERT INTO producto VALUES(3, 'Disco SSD 1 TB', 150.99, 4);

INSERT INTO producto VALUES(4, 'GeForce GTX 1050Ti', 185, 7);

INSERT INTO producto VALUES(5, 'GeForce GTX 1080 Xtreme', 755, 6);

INSERT INTO producto VALUES(6, 'Monitor 24 LED Full HD', 202, 1);

INSERT INTO producto VALUES(7, 'Monitor 27 LED Full HD', 245.99, 1);

INSERT INTO producto VALUES(8, 'Portatil Yoga 520', 559, 2);

INSERT INTO producto VALUES(9, 'Portatil Idepad 320', 444, 2);

INSERT INTO producto VALUES(10, 'Impresora HP Deskjet 3720', 59.99, 3);

INSERT INTO producto VALUES(11, 'Impresora HP Laserjet Pro M26nw', 180, 3);

Si todo está bien se debe correr el código sin ningún error y se creará bien.

Consulta: Lista el nombre de todos los productos que hay en la


tabla producto.

Para consultar únicamente el nombre de los productos que corresponden a la tabla


producto se debe hacer uso del SELECT. Con la siguiente sintaxis:
SELECT nombre
FROM producto;
Correr el código y si todo esta correcto debe de aparecer una imagen como la que
se muestra a continuación:

2
Consulta: Lista los nombres y los precios de todos los productos
de la tabla producto.

Para esta consulta, se usará el código anterior, pero agregando al final ‘precio’ en
‘SELEC’. Con la siguiente sintaxis:
SELECT nombre, precio
FROM producto;

3
Consulta: Lista todas las columnas de la tabla producto.

Se utiliza el siguiente ‘comodín’ para seleccionar todas las columnas de una tabla.
Por lo que el código a usar es el siguiente:

SELECT *
FROM producto;

Consulta: Lista el nombre de los productos, el precio en euros y


el precio en dólares estadounidenses.

El euro equivale a 23 pesos mexicanos y el dólar a 20 pesos mexicanos por lo que


se debe usar estos valores para dividir y obtener el equivalente del precio en estas
monedas.
SELECT nombre, precio/23, precio/20
FROM producto;

4
Consulta: Lista el nombre de los productos, el precio en euros y el precio en
dólares estadounidenses.
Utilizar los siguientes alias para las columnas; nombre de producto, euros, dólares.
Nota: se utiliza el AS para generar un alias de la operación que se está realizando.

SELECT nombre AS nombre de producto, (precio/23) AS EURO, (precio/20) AS


DOLLAR
FROM producto;

5
Consulta: Lista los nombres y los precios de todos los productos
de la tabla producto convirtiendo los nombres a mayúsculas.

Para que la consulta devuelva un resultado en mayúsculas se utiliza la función con


cadena UPPER, la cual realiza la conversión a mayúsculas.

SELECT UPPER (nombre), precio


FROM producto;

Consulta: Lista los nombres y los precios de todos los productos


de la tabla producto, convirtiendo los nombres a minúscula.

SELECT LOWER (nombre), precio


FROM producto;

6
Consulta: Lista el nombre de todos los fabricantes en una columna,
y en otra columna obtenga en mayúsculas dos primeros caracteres
del nombre del fabricante.

SELECT nombre, UPPER (SUBSTR(nombre, 1, 2))


FROM fabricante;

Consulta: Lista los nombres y los precios de todos los productos


de la tabla producto, redondeando el valor del precio.

SELECT nombre, ROUND (precio)

7
FROM producto;
Nota: La función numérica ROUND redondea el valor numérico.

Consulta: Lista los nombres y los precios de todos los productos


de la tabla producto, truncando el valor del precio para mostrarlo
sin ninguna cifra decimal.

SELECT nombre, TRUNCATE(precio,0)


FROM producto;

8
Consulta: Lista el código de los fabricantes que tienen productos
en la tabla producto.

SELECT codigo FROM producto;

Consulta: Lista el código de los fabricantes que tienen productos


en la tabla producto, eliminando los códigos que aparecen
repetidos.

SELECT codigo FROM fabricante WHERE EXISTS (select codigo FROM


fabricante)

9
SELECT DISTINCT codigo
FROM fabricante;

Consulta: Lista los nombres de los fabricantes ordenados de


forma ascendente.

SELECT nombre
FROM fabricante ORDER BY nombre ASC;

10
Consulta: lista los nombres de los fabricantes ordenados de forma
descendente.

SELECT nombre
FROM fabricante ORDER BY nombre DESC;

Consulta: lista los nombres de los productos ordenados en primer


lugar por el nombre de forma ascendente y en segundo lugar por
el precio de forma descendente.

SELECT nombre, precio


FROM producto ORDER BY nombre ASC, precio DESC;

11
Consulta: devuelve una lista con las primeras 5 filas de la tabla
fabricante.

SELECT *
FROM fabricante ORDER BY codigo DESC LIMIT 0,5;

12
Consulta: devuelve una lista con 2 filas a partir de la cuarta fila de
la tabla fabricante. La cuarta fila también se debe de incluir en la
respuesta.

SELECT *
FROM fabricante ORDER BY nombre DESC LIMIT 4,2;

Consulta: lista el nombre y el precio del producto más barato.


(Utilice solamente las cláusulas ORDER BY y LIMIT).

SELECT nombre, precio


FROM producto ORDER BY precio ASC;

13
Consulta: lista el nombre y el precio del producto más caro. (Utilice
solamente las cláusulas ORDER BY y LIMIT)

SELECT nombre, precio


FROM producto ORDER BY precio DESC LIMIT 1;

Consulta: lista el nombre de todos los productos del fabricante


cuyo código de fabricante es igual a 2.

SELECT nombre
FROM producto WHERE codigo =2;

14
Consulta: lista el nombre de los productos que tienen un precio
menor o igual a 120€.

SELECT nombre
FROM producto WH
ERE precio <=120;

Consulta: lista el nombre de los productos que tienen un precio


mayor o igual a 400€.

SELECT nombre
FROM producto WHERE precio >=400;

15
Consulta: lista el nombre de los productos que no tienen un precio
mayor o igual a 400€.

SELECT nombre
FROM producto WHERE NOT precio >=400;

16
Consulta: lista todos los productos que tengan un precio entre 80€
y 300€. Sin utilizar el operador BETWEEN.

SELECT *
FROM producto WHERE precio >=80 AND precio <=300;

Consulta: lista todos los productos que tengan un precio mayor


que 200€ y que el código de fabricante sea igual a 6.

SELECT *
FROM producto WHERE precio >=200 AND codigo =6;

17
Consulta: lista todos los productos donde el código de fabricante
sea 1, 3 o 5. Sin utilizar el operador IN.

SELECT *
FROM productos WHERE codigo= 1 OR codigo=3 OR codigo=5;

Consulta: lista todos los productos donde el código de fabricante


sea 1, 3 o 5. Utilizando el operador IN.

SELECT *
FROM producto WHERE codigo IN(1,3,5);

18
Consulta: lista el nombre y el precio de los productos en céntimos
(Habrá que multiplicar por 100 el valor del precio). Cree un alias
para la columna que contiene el precio que se llame céntimos.

SELECT nombre, (precio * 100) AS centimos


FROM producto;

Consulta: lista los nombres de los fabricantes cuyo nombre


empiece por la letra S.

SELECT *
FROM fabricante WHERE (nombre LIKE 'S%');

19
Consulta: lista los nombres de los fabricantes cuyo nombre
termine por la vocal e.

SELECT *
FROM fabricante WHERE (nombre LIKE '%e');

Consulta: lista los nombres de los fabricantes cuyo nombre


contenga el carácter w.

SELECT *
FROM fabricante WHERE (nombre LIKE '%w%');

20
Lista los nombres de los fabricantes cuyo nombre sea de 4
caracteres.

SELECT *
FROM fabricante WHERE (nombre LIKE '____');

Consulta: devuelve una lista con el nombre de todos los productos


que contienen la cadena Portátil en el nombre.

SELECT nombre
FROM producto WHERE (nombre LIKE '%Portatil%');

21
Consulta: devuelve una lista con el nombre de todos los productos
que contienen la cadena Monitor en el nombre y tienen un precio
inferior a 215 €.

SELECT nombre
FROM producto WHERE (nombre LIKE '%Monitor%') AND precio <215;

Consulta: lista el nombre y el precio de todos los productos que


tengan un precio mayor o igual a 180€. Ordene el resultado en
primer lugar por el precio (en orden descendente) y en segundo
lugar por el nombre (en orden ascendente).

SELECT nombre, precio


FROM producto WHERE precio >=180 ORDER BY precio DESC, ORDER BY
nombre ASC;

22
23
Ejercicios
2.1 Base de datos: Jardinería

1. Consulte cuáles son los índices que hay en la tabla producto utilizando las
instrucciones SQL que nos permiten obtener esta información de la tabla.
2. Haga uso de EXPLAIN para obtener información sobre cómo se están realizando
las consultas y diga cuál de las dos consultas realizará menos comparaciones para
encontrar el producto que estamos buscando.
SELECT *
FROM producto
WHERE codigo_producto = 'OR-114';

24
SELECT *
FROM producto
WHERE nombre = 'Evonimus Pulchellus';

3. Suponga que estamos trabajando con la base de datos jardinería y queremos


saber optimizar las siguientes consultas. ¿Cuál de las dos sería más eficiente? Se
recomienda hacer uso de EXPLAIN para obtener información sobre cómo se están
realizando las consultas.
SELECT AVG(total)
FROM pago
WHERE YEAR(fecha_pago) = 2008;

25
SELECT AVG(total)
FROM pago
WHERE fecha_pago >= '2008-01-01' AND fecha_pago <= '2008-12-31';

4. Optimiza la siguiente consulta creando índices cuando sea necesario. Se


recomienda hacer uso de
EXPLAIN para obtener información sobre cómo se están realizando las consultas.
SELECT *
FROM cliente INNER JOIN pedido
ON cliente.codigo_cliente = pedido.codigo_cliente
WHERE cliente.nombre_cliente LIKE 'A%';

26
27

También podría gustarte