zoukankan      html  css  js  c++  java
  • Java学习笔记35(sql补充)

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

    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 的;
  • 相关阅读:
    解决git推不上去1
    django中CBV源码分析
    Form和ModelForm组件
    jquery操作cookie
    django中的中间件
    django中ORM中锁和事务
    django_ajax
    docker安装jenkins 容器,集成python环境
    支付宝第三方支付
    redis基本使用
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10623683.html
Copyright © 2011-2022 走看看