Java学习笔记35(sql补充)

时间:2022-11-02 21:08:20

在上一篇里,写了数据库的增删该查,没有写完,这里补充

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 的;