• 【个人笔记】MySQL聚合函数、子查询


    看到这里呢小伙伴应该不多少了解了些MySQL了,我就直接上自己理解的语法吧

    一、聚合函数

        --  1)计数 count(列名)
    -- SELECT COUNT(*) FROM 表名 WHERE 条件(AS添加别名)
        --  2)求和 sum(列名)
    -- SELECT SUM(列) FROM 表名
        --  3)平均数 SUM()/COUNT()
        --  4)平均数AVG(列名)/AVG(IF NULL(列名,0)) 如果是空数据,补为0再求平均
        --  5)最大数MAX(列名)、最小数MIN(列名)
        --  6)分组GROUP BY
    -- SELECT 列名 COUNT(*)表名 GROUP BU 列名
        --  7)HAVING再次筛选  

    使用中总结出WHERE与HAVING的区别在于,HAVING后面可以跟聚合函数,而WHERE不能。

    二、子查询(就是一个嵌套查询 一个查询中嵌入另外一个查询 最多嵌入255条查询)

      1.  相关子查询,指select嵌套,只能返回单行单列,并且依赖于主查询,最终执行n+1次;

    例:

    -- 创建班级表
    CREATE TABLE t_class(
    c_id INT AUTO_INCREMENT PRIMARY KEY,-- 班级id,此列为主键
    c_name VARCHAR(50) NOT NULL  -- 班级名称
    );
    -- 创建学生表
    CREATE TABLE t_student(
    s_id INT AUTO_INCREMENT PRIMARY KEY, -- 学生id
    s_name VARCHAR(50) NOT NULL, -- 学生姓名
    s_sex VARCHAR(20) DEFAULT'', -- 学生性别
    s_classid INT, --学生对应班级
    CONSTRAINT FOREIGN KEY (s_classid) REFERENCES t_class(c_id)  -- 外键约束
    );
     
    -- 查询出有班级名称的学生的名字和对应班级编号
    SELECT s_name,(SELECT c_name FROM t_class WHERE c_id=s_classid) FROM t_student;

      2.  非相关子查询,子查询对主查询没有依赖,子查询只会执行一次,只会在from的时候才执行,性能较高,能独立运行,只是给主查询提供条件值;

    还是接着上面创建的表,这里就不创建了,直接看语句:

    -- from 嵌套  必须要给嵌套的子查询表起别名,可返回多行多列数据
       -- 查询性别为女 并且姓名为张三的
    SELECT * FROM (SELECT * FROM t_student WHERE s_sex='') AS t1 
    WHERE t1.s_name='张三'
    
    -- where 嵌套  执行2次,子查询可以单独运行,不依赖主查询,只是给主查询提供条件值  
       -- 查询一班的学生有哪些   万一 t_class 的 c_id  三班==1 ,→首先找到一班的c_id → where s_classid=一班的c_id
    SELECT * FROM t_student WHERE s_classid=1
    -- →首先找到一班的c_id  select c_id from t_class where c_name='一班'
    
    SELECT * FROM t_student WHERE s_classid=(SELECT c_id FROM t_class WHERE c_name='一班')  -- 返回多行单列

    以上为今天所有分享,欢迎评论赐教;

    如需了解更多,请进入知了堂社区:http://www.zhiliaotang.com/portal.php;

  • 相关阅读:
    Linux常用命令1
    Linux常用命令
    java的接口和抽象类区别
    字符串的全排列
    字符串的全组合
    Mysql范式
    同步 异步 阻塞 非阻塞概念区分
    死锁产生的条件以及解决方法
    Mysql存储引擎MyIsAM和InnoDB区别
    SLES documentation
  • 原文地址:https://www.cnblogs.com/hddhhanzi/p/7589916.html
Copyright © 2020-2023  润新知