在上一篇里,写了数据库的增删该查,没有写完,这里补充
CREATE DATABASE Zs_Base; USE Zs_Base; # 创建表 CREATE TABLE PRODUCT( ID INT PRIMARY KEY AUTO_INCREMENT, SNAME VARCHAR(50), MONEY DOUBLE ); # 插入数据 INSERT INTO PRODUCT VALUES (1,'吃饭支出',-10), (2,'收账',1999), (3,'买礼物支出',-666), (4,'买烟支出',-10); INSERT INTO PRODUCT(MONEY) VALUE (100); DELETE FROM PRODUCT WHERE ID=5; SELECT * FROM PRODUCT; /*========================================================== 1.升序降序*/ # 将所有信息按money降序排序 关键字 order by desc # SELECT * FROM 表名 ORDER BY 降序的列名 DESC; SELECT * FROM PRODUCT ORDER BY MONEY DESC; # 将所有信息按money 升序排序 关键字 order by asc # SELECT * FROM 表名 ORDER BY 升序的列名 ASC; SELECT * FROM PRODUCT ORDER BY MONEY ASC; # 当有条件时,order by 放在条件后面 SELECT * FROM PRODUCT WHERE SNAME IS NOT NULL ORDER BY MONEY DESC; # 总结 order by 是对结果集进行处理,即前面的语句运行完后,再对结果进行升序降序排列 /*================================================================== 2.聚合函数 查询计算*/ /*统计表中共有多少行数据 COUNT()函数*/ SELECT COUNT(*) AS '总数' FROM PRODUCT ; # 查询表中不为空的数据有多少 SELECT COUNT(*) AS '总数' FROM PRODUCT WHERE SNAME IS NOT NULL; # 对表中的金额进行计算 SUM()函数 SELECT SUM(MONEY) FROM PRODUCT; # 统计表中所有支出的金额 SELECT SUM(MONEY) FROM PRODUCT WHERE SNAME LIKE '%支出%'; # 统计列中最大的数据 max()函数 SELECT MAX(MONEY) FROM PRODUCT ; # 统计表中的最小数据 SELECT MIN(MONEY) FROM PRODUCT; # 计算一个列中所有数据的平均数 SELECT AVG(MONEY) FROM PRODUCT; /*================================================================= 3.分组查询*/ INSERT INTO PRODUCT (SNAME,MONEY) VALUES ('买烟支出',-50), ('工资收入',8000), ('吃饭支出',-50.4), ('吃饭支出',-20.6), ('打麻将收入',40); SELECT * FROM PRODUCT; /*查询所有数据 吃饭支出共计多少 打麻将收入共计多少 分组查询 group by 被分组的列名 必须跟随聚合函数 用法格式: SELECT 列名,列名 FROM 表名 WHERE 条件 GROUP BY 被分组的列名 注意,被分组的列要出现在选择列的后面*/ /*对所有的支出分组并降序排序*/ SELECT SUM(MONEY) AS 'SMONEY',SNAME FROM PRODUCT WHERE SNAME LIKE '%支出%' GROUP BY SNAME ORDER BY SMONEY DESC; /*结果集是分组后,要再次进行筛选,不能用where语句,分组后再次过滤,关键字having,即group by 后面不能跟where语句,如果要过滤用having语句*/ # 对上面结果再筛选,只要金额大于100的 SELECT SUM(MONEY) AS 'SMONEY',SNAME FROM PRODUCT WHERE SNAME LIKE '%支出%' GROUP BY SNAME HAVING SMONEY<-100 ORDER BY SMONEY DESC; # 因为支出为负数,所以用<-100来表示金额大于100 的;