1. Crea la base de datos SaleSys
Segundo , crea 3 tablas en la base de datos SaleSys .
- Tabla de información de marca ( marca )
- BrandId : número de marca, número entero, crecimiento automático, clave principal
- BrandName : nombre de marca, tipo de carácter, restricción única
- Tabla de productos ( artículo )
- ItemId : número de artículo, número entero, crecimiento automático, clave principal
- ItemName : nombre del producto, tipo de carácter, no vacío, único
- ItemBirth : fecha de producción, no nula
- ItemPrice : precio, decimal, no nulo, las restricciones de verificación no pueden ser negativas
- BrandId : ID de marca, clave externa no nula
- Tabla de ventas ( venta )
- SaleId : número de ventas, número entero, incremento automático, clave principal
- ItemId : número de artículo, la clave externa no está vacía
- SaleNum : cantidad de ventas, la restricción de verificación debe ser mayor que 0
- SaleDate : hora de la transacción, no vacía
4. Los datos de referencia de las tres tablas son los siguientes
En tercer lugar, complete las siguientes preguntas de consulta.
-------------------------------------------------- -------------------
--1 Encuentra el precio máximo en la tabla.
--2 . Encuentra el precio máximo de cada marca.
--3 . Encuentre el número de marca y el precio que excede el precio máximo de la marca.
--4 Encuentra el precio mínimo en la tabla.
--5 . Encuentra el precio mínimo de cada marca.
--6 Encuentra el número de marca y el precio cuyo precio mínimo es menor que el de la marca.
-- 7. Para la fecha de producción posterior al -08-08 , el precio mínimo de cada marca es inferior a
--8 , encuentra el valor total del precio en la tabla.
--9 , encuentra el valor total de cada marca.
--10 , encuentra el valor total de la marca entre a
--11 Encuentra el precio promedio de todos los productos.
--12 , encuentra el valor promedio de cada marca.
--13 . Descubra qué marca promedio es 40 , 50 , 60
--14 ¿Cuántos tipos de productos hay en total?
--15.Descubre cuántos productos tiene cada marca
--16.El número de productos de cada marca está entre 1 y 2.
-------------------------------------------------- -------------------
--1 Consulta la tabla de Artículos y calcula el precio máximo y el precio mínimo del producto cuyo número de marca es 1 .
--2 Consulta la tabla de artículos y cuenta cuántos productos hay en total .
--3 Consulta la tabla de artículos y cuenta el precio máximo y el número total de productos cuya fecha de producción es anterior al 2015-08-09
--4 Consulta la tabla de Ventas y calcula el volumen de ventas promedio del producto con el número de producto 1.
--5 Consulta la tabla de Ventas y cuenta el número de producto más grande y el número de producto más pequeño
--6 Consulta la tabla de marcas y cuenta cuántas marcas hay .
--7 Consulta la tabla de Marcas y cuenta el número de marcas con la palabra " agua " en la marca .
--8 Consulta la tabla de artículos y calcula el precio total de los productos cuyo precio supera los 100 yuanes .
-------------------------------------------------- -------------------
- 1. Tabla estadística de ventas para obtener el volumen total de ventas, registros de ventas y volumen promedio de ventas.
-- 2. Cuente el volumen de ventas promedio, máximo y mínimo de productos con fechas de venta entre 2015-08-08 y 2015-09-10
-- 3. Cuente el número de marcas con productos bajo la marca.
- 4. Descubra qué productos tienen el valor promedio de los productos cuyo número de marca es 2 es 40 , 50 , 60
-- 5. El valor total de los productos cuyo código de marca sea
-- 6. Encuentre la marca cuyo valor total de marca sea mayor que
-- 一, 创建数据库SaleSys
-- 1,删除数据库
DROP DATABASE IF EXISTS SaleSys;
-- 2,创建数据库
CREATE DATABASE SaleSys;
-- 3,修改数据库编码方式和字符集排列顺序
ALTER DATABASE SaleSys CHARACTER SET utf8 COLLATE utf8_bin;
-- 4,使用数据库
USE SaleSys;
-- 5,查看当前所有数据库
SHOW DATABASES;
-- 二, 在数据库SaleSys中创建3张表
-- 1, 品牌信息表(brand)
DROP TABLE IF EXISTS brand;
CREATE TABLE brand(
BrandId INT PRIMARY KEY AUTO_INCREMENT, -- 品牌编号,整型,自动增长,主键
BrandName VARCHAR(20) UNIQUE -- 品牌名称,字符型, 唯一约束
);
-- 2, 商品表(Item)
DROP TABLE IF EXISTS Item;
CREATE TABLE Item(
ItemId INT PRIMARY KEY AUTO_INCREMENT, -- 商品编号,整型,自动增长,主键
ItemName VARCHAR(20) UNIQUE NOT NULL, -- 商品名称,字符型,非空,唯一
ItemBirth DATETIME NOT NULL, -- 生产日期,非空
ItemPrice FLOAT NOT NULL CHECK(ItemPrice>=0), -- 价格,小数,非空,检查约束不能是负数
BrandId INT,
FOREIGN KEY (BrandId) REFERENCES brand(BrandId) -- 品牌编号,非空,外键
);
-- 3, 销量表(sale)
DROP TABLE IF EXISTS sale;
CREATE TABLE sale(
SaleId INT PRIMARY KEY AUTO_INCREMENT, -- 销售编号,整型,自动增长,主键
ItemId INT NOT NULL, -- 商品编号,外键非空
SaleNum INT NOT NULL CHECK(SaleNum>=0), -- 销售数量,检查约束必须大于0
SaleDate DATETIME NOT NULL,
FOREIGN KEY (ItemId) REFERENCES Item(ItemId) -- 成交时间,非空
);
-- 三添加数据
-- 1,添加品牌表brand数据
INSERT INTO brand VALUES( DEFAULT,'戴尔');
INSERT INTO brand VALUES( DEFAULT,'华硕');
INSERT INTO brand VALUES( DEFAULT,'联想');
INSERT INTO brand VALUES( DEFAULT,'美化');
INSERT INTO brand VALUES( DEFAULT,'苹果');
SELECT * FROM brand;
-- 2,添加商品表item数据
INSERT INTO Item VALUES(DEFAULT,'电脑','2013-10-20 09:30:12',3999,1);
INSERT INTO Item VALUES(DEFAULT,'耳机','2014-05-21 21:32:54',44,2);
INSERT INTO Item VALUES(DEFAULT,'路由器','2014-05-21 21:32:54',55,2);
INSERT INTO Item VALUES(DEFAULT,'猫','2014-05-21 21:32:54',22,1);
INSERT INTO Item VALUES(DEFAULT,'键盘','2014-05-21 21:32:54',45,3);
INSERT INTO Item VALUES(DEFAULT,'可乐','2012-07-06 15:35:24',3.5,3);
INSERT INTO Item VALUES(DEFAULT,'手机','2015-04-13 14:34:55',3,4);
INSERT INTO Item VALUES(DEFAULT,'数据线','2015-05-19 08:20:52',79,5);
SELECT * FROM Item;
-- 3,添加销售表sale数据
INSERT INTO sale VALUES(DEFAULT,1,2,'2015-05-29 16:21:53');
INSERT INTO sale VALUES(DEFAULT,1,50,'2015-05-29 19:15:23');
INSERT INTO sale VALUES(DEFAULT,2,50,'2015-05-29 19:15:23');
INSERT INTO sale VALUES(DEFAULT,2,20,'2015-05-29 19:15:23');
INSERT INTO sale VALUES(DEFAULT,2,50,'2015-05-29 19:15:23');
INSERT INTO sale VALUES(DEFAULT,3,16,'2015-05-29 21:40:08');
INSERT INTO sale VALUES(DEFAULT,3,5,'2015-05-29 12:06:35');
INSERT INTO sale VALUES(DEFAULT,5,12,'2015-05-29 09:00:45');
SELECT * FROM sale;
-- 四,完成如下查询题目
-- -------------------------------------------------------------------
-- 1、求表中最大的价格
SELECT MAX(ItemPrice) 最大的价格 FROM item;
SELECT ItemPrice 最大的价格 FROM item ORDER BY ItemPrice DESC LIMIT 1;
-- 2、求每个品牌的最大价格
SELECT BrandId 品牌编号,MAX(ItemPrice) 最大的价格 FROM item GROUP BY BrandId;
-- 3、求品牌最大的价格超过50的品牌编号和价格
SELECT BrandId 品牌编号,MAX(ItemPrice) 最大的价格 FROM Item
GROUP BY BrandId HAVING MAX(ItemPrice)>=50;
-- 4、求表中最小的价格
SELECT MIN(ItemPrice) 最小的价格 FROM Item;
SELECT ItemPrice 最小的价格 FROM item ORDER BY ItemPrice LIMIT 1;
-- 5、求每个品牌的最小价格
SELECT BrandId 品牌编号,MIN(ItemPrice) 最小的价格 FROM item GROUP BY BrandId;
-- 6、求品牌最小的价格小于10的品牌编号和价格
SELECT BrandId 品牌编号,MIN(ItemPrice) 最小的价格 FROM item
GROUP BY BrandId HAVING MIN(ItemPrice)<10;
-- 7、求生产日期在2013-08-08之后的,每个品牌最小的价格小于50的
SELECT BrandId 品牌编号,MIN(ItemPrice) 最小的价格
FROM item WHERE ItemBirth>'2013-08-08'
GROUP BY BrandId HAVING MIN(ItemPrice)<50;
-- 8、求表中价格的合计值
SELECT SUM(ItemPrice) 价格的合计值 FROM Item;
-- 9、求每个品牌的合计值
SELECT BrandId 品牌编号,SUM(ItemPrice) 价格的合计值 FROM Item GROUP BY BrandId;
-- 10、求品牌合计值在到40-100之间
SELECT BrandId 品牌编号,SUM(ItemPrice) 价格的合计值 FROM Item
GROUP BY BrandId HAVING SUM(ItemPrice) BETWEEN 40 AND 100;
-- 11、求所有产品的价格平均值
SELECT AVG(ItemPrice) 价格平均值 FROM Item;
-- 12、求每一个品牌的平均值
SELECT BrandId, AVG(ItemPrice) 每一个品牌的平均值 FROM Item GROUP BY BrandId;
-- 13、求品牌平均值是40、50、60的有哪些
SELECT BrandId 品牌编号 FROM Item GROUP BY BrandId HAVING AVG(ItemPrice) IN (40, 50, 60);
-- 14、求一共有多少种产品
SELECT COUNT(DISTINCT ItemName) 产品数 FROM Item;
-- 15、求每个品牌有多少产品
SELECT BrandId 品牌编号, COUNT(ItemName) 产品数 FROM Item GROUP BY BrandId;
-- 16、每个品牌产品数在1到2之间的
SELECT BrandId 品牌编号, COUNT(ItemName) 产品数 FROM Item GROUP BY BrandId HAVING COUNT(ItemName) BETWEEN 1 AND 2;
-- -------------------------------------------------------------------
-- 1、 查询Item表,统计出品牌编号为1的商品的最大价格和最低价格是多少
SELECT MAX(ItemPrice)最大价格,MIN(ItemPrice)最低价格 FROM Item WHERE BrandId = 1;
-- 2、 查询Item表,统计出一共有多少商品
SELECT COUNT(ItemId) 商品数 FROM Item;
-- 3、 查询Item表,统计出生产日期在2015-08-09之前的商品的最大价格和商品总数
SELECT MAX(ItemPrice) 最大价格, COUNT(ItemId) 商品总数 FROM Item WHERE ItemBirth<'2015-08-09';
-- 4、 查询Sale表,统计出商品号为1的商品的销售平均销量
SELECT AVG(SaleNum) AS 销售平均销量 FROM Sale WHERE ItemId=1;
-- 5、 查询Sale表,统计出最大商品编号和最小商品编号
SELECT MAX(ItemId) 最大商品编号, MIN(ItemId) 最小商品编号 FROM Item;
-- 6、 查询Brand表,统计有多少品牌
SELECT COUNT(*) 品牌数 FROM Brand;
-- 7、 查询Brand表,统计出品牌中有"水"字的品牌有多少中
SELECT COUNT(*) 有“水”字的品牌 FROM Brand WHERE BrandName LIKE '%水%';
-- 8、 查询Item表,统计出价格在100元之上的商品的合计价格
SELECT SUM(ItemPrice) 合计价格 FROM Item WHERE ItemPrice > 100;
-- -------------------------------------------------------------------
-- 1、统计销售表,获取销售总量、销售记录数、销售平均量各是多少
SELECT SUM(SaleNum) 销售总量,COUNT(*) 销售记录数,AVG(SaleNum) 销售平均量 FROM sale;
-- 2、统计出销售日期在2015-08-08到2015-09-10之间的产品的销售数量平均值、最大值、最低值
SELECT AVG(SaleNum) 销售数量平均值,MAX(SaleNum) 销售数量最大值, MIN(SaleNum) 销售数量最低值
FROM sale
WHERE SaleDate BETWEEN '2015-08-08' AND '2015-09-10';
-- 3、统计出品牌下有商品的品牌数量
SELECT COUNT(DISTINCT BrandName) AS 有商品的品牌数量 FROM Brand;
-- 4、求品牌编号为2的商品的平均值是40、50、60的有哪些商品
SELECT Item.ItemId 商品编号,Item.ItemName 商品名称
FROM Item
JOIN sale ON Item.ItemId = sale.ItemId
WHERE BrandId = 4 AND ItemPrice IN (40,50,60);
-- 5、品牌编号为2的产品合计值
SELECT SUM(ItemPrice) 产品合计值
FROM Item
WHERE BrandId = 2;
-- 6、求品牌合计值在大于1000的品牌
SELECT BrandName 品牌名称
FROM Brand
WHERE BrandId=
(SELECT BrandId FROM Item GROUP BY BrandId HAVING SUM(ItemPrice) >1000);