• MYSQL 基本操作 (2)


    分组查询和聚合查询:

    group by (列名)

    根据查询的结果来进行分组,值相同的记录分到一组,然后针对每一组进行聚合。

     目前表中,对容易一行进行分组操作都会去除重复名字项,同时将重复项打包进改组,例如:

     此时的保安下就有两组数据如下:

     此时进行全部选择显示操作的话只会显示改组下第一条数据的内容,如下:

     注意分组后的筛选需要使用having,分组前的筛选则使用where放在group的前面,如下

     having例子:

     联合查询/多表查询

     联合查询/多表查询是先让表进行笛卡尔积,然后加上连接条件和其他需求的条件。

    1. select * from (表1),(表2);
    2. 以此来创建笛卡尔积
    3. 或者使用:
    4. select * from (表1) join (表2);

     这个时候就产生了两个表每个行乘积,两个表总和列的数据。

    然后在进行链接,名字相同的情况下可以使用(表名).(列名) 的方式来进行筛选。

    join可以使用on来达到一样效果,不用where:

     

     实现查询每个同学所在班级:

     内连接和外连接

    当左边表的每条记录在右侧表都有所体现的时候,内连接和外连接基本上没有区别。

    当表为这种情况下内外链接就没有什么区别

    内连接的主要作用就是显示两张表同时存在的数据,也就是两张表交集。

     

    左外连接中,即使右侧表对应数据为null也可以获取到

     左右外连接区别就是以那一侧的表为主。

    左右链接都有的链接称为全外连接,在mysql中是不存在的。

    自连接就是自己和自己做笛卡尔积。需要起别名,如下:

    子查询

    select 列名 from 表名 where 条件 =(select 列名 from 表名 where 条件 = );

    索引

    1. show index from 表名;
    2. 查看索引
    3. create index 索引名 on 表(列名):
    4. 创建索引
    5. drop index 索引名 on 表(列名):
    6. 删除索引

    索引背后的数据结构是B+树;

  • 相关阅读:
    open3d 点云去掉 nan 点和 infinite 点(附python open3d 代码)
    java.security 框架之签名、加密、摘要及证书
    基于springboot的物品回收系统
    halcon 图像拼接
    Linux多线程开发
    2023Node.js零基础教程(小白友好型),nodejs新手到高手,(一)NodeJS入门
    NSSCTF做题(6)
    sys.argv和argparse和os.environ
    POST注入 | 盲注 | 宽字节注入
    在springboot项目中整合Druid
  • 原文地址:https://blog.csdn.net/qq_64054032/article/details/128028007