-- 创建商品表
CREATE TABLE product(
pid INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(30),
price DOUBLE
);
INSERT INTO product(pid,pname,price) VALUES(1,'联想',5000);
INSERT INTO product(pid,pname,price) VALUES(2,'海尔',3000);
INSERT INTO product(pid,pname,price) VALUES(3,'雷神',5000);
INSERT INTO product(pid,pname,price) VALUES(4,'JACK JONES',800);
INSERT INTO product(pid,pname,price) VALUES(5,'真维斯',200);
INSERT INTO product(pid,pname,price) VALUES(6,'花花公子',440);
INSERT INTO product(pid,pname,price) VALUES(7,'劲霸',2000);
INSERT INTO product(pid,pname,price) VALUES(8,'香奈儿',800);
INSERT INTO product(pid,pname,price) VALUES(9,'相宜本草',200);
INSERT INTO product(pid,pname,price) VALUES(10,'面霸',5);
INSERT INTO product(pid,pname,price) VALUES(11,'好想你枣',56);
INSERT INTO product(pid,pname,price) VALUES(12,'香飘飘奶茶',1);
INSERT INTO product(pid,pname,price) VALUES(13,'果9',1);
-- 查看表
SELECT * FROM product;
-- 查询product表的商品名称和商品价格
SELECT pname,price FROM product;
/*
格式三:过滤重复的数据
select distinct 字段 from 表名;
注意:
distinct后边只能过滤一个字段
*/
SELECT DISTINCT price FROM product;
-- 给product表起别名,叫商品表
SELECT pid 商品号,pname 商品名称,price 商品价格 FROM product AS 商品表;
-- 查询商品名称为“花花公子”的商品所有信息
SELECT * FROM product WHERE pname="花花公子";
-- 查询价格为800商品
SELECT * FROM product WHERE price=800;
-- 查询价格不是800的所有商品
SELECT * FROM product WHERE price != 800;
-- 查询商品价格大于60元的所有商品信息
SELECT * FROM product WHERE price>60;
-- 查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price>=200 AND price <=1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000; -- 使用between ... and 语句 可以查询日期之间的差
-- 查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price =200 OR price =1000;
-- 查询名称以'香'开头的所有商品
SELECT * FROM product WHERE pname LIKE "香%";
-- 查询名称以'霸'结尾的所有商品
SELECT * FROM product WHERE pname LIKE "%霸";
-- 查询名称含有'霸'字的所有商品
SELECT * FROM product WHERE pname LIKE "%霸%";
-- 查询出名称中是五个字的所有商品
SELECT * FROM product WHERE pname LIKE "_____";
-- 查询名称第二个字为'想'的所有商品
SELECT * FROM product WHERE pname LIKE "_想%";
-- 查询商品名称是null的值
SELECT * FROM product WHERE pname IS NULL;
-- 查询商品名称不是null的值
SELECT * FROM product WHERE pname IS NOT NULL;
-- 查询product表中所有数据,使用价格排序(升序)
SELECT * FROM product ORDER BY price ASC;
-- 查询product表中所有数据,使用价格排序(降序)
SELECT * FROM product ORDER BY price DESC;
-- 查询product表中商品价格大于1000的所有数据,使用价格排序(降序)
SELECT * FROM product WHERE price > 1000 ORDER BY price DESC;
-- 显示商品的价格(去重复),并排序(降序)
SELECT DISTINCT price FROM product ORDER BY price DESC;
-- 查询product表中所有数据,使用商品名称排序(编码表的顺序)
SELECT * FROM product ORDER BY pname ASC;
-- 查询商品的总条数
SELECT COUNT(*) FROM product;
-- 查询价格大于200商品的总条数
SELECT COUNT(*) FROM product WHERE price >200;
-- 对商品表查询,对所有的金额求和计算
SELECT SUM(price) FROM product;
-- 如果指定列类型不是数值类型,那么计算结果为0;
SELECT SUM(pname) FROM product;
-- 对商品表查询,对所有的金额计算平均值
SELECT AVG(price) FROM product;
-- 统计出商品表中价钱的最大与最小值
SELECT MAX(price) 最大值,MIN(price) 最小值 FROM product;
/*
分组查询语句:使用关键字 group by[having 条件过滤]
格式:
select 被分组的字段,... from 表名 group by 被分组的字段 [having 条件过滤];
注意:
被分组的字段,一般都写在select后边,方便查看结果
执行流程:
先条件过滤 where
先分组 group by
在查询 select 字段
having 再次对查询的结果进行条件过滤
*/
/*
需求:
统计所有商品名字相同的商品,进行分组求和计算
*/
SELECT pname,SUM(price) FROM product GROUP BY pname;
-- 分组求和后的数据只显示1000以上的
SELECT pname,SUM(price) FROM product WHERE price>1000 GROUP BY pname;
-- 分组求和后的数据只显示2000以上的
SELECT pname,SUM(price) FROM product GROUP BY pname HAVING SUM(price)>2000;
-- 统计所有商品名字相同的商品,进行分组计算每组数据的个数
SELECT pname,COUNT(*) FROM product GROUP BY pname;
/*
分页查询:使用关键字 limit
格式:
limit m n
m:可以变化的,每页数据的开始行数
n:固定不变的,每页显示行的个数
数据库中:
行的开始索引是0,第0行,第1行....
列的开始索引的1,第1列....
*/
-- 对商品表的数据进行查询,只要前5条数据
-- 查询第1页的数据
SELECT * FROM product LIMIT 0,5;
-- 查询第2页的数据
SELECT * FROM product LIMIT 5,5;
-- 查询第3页的数据
SELECT * FROM product LIMIT 10,5;