MYSQL 基本操作 (2)

分组查询和聚合查询:

group by (列名)

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

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

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

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

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

 having例子:

 联合查询/多表查询

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

select * from (表1),(表2);
以此来创建笛卡尔积

或者使用:
select * from (表1) join (表2);

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

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

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

 

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

 内连接和外连接

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

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

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

 

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

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

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

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

子查询

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

索引

show index from 表名;
查看索引

create index 索引名 on 表(列名):
创建索引

drop index 索引名 on 表(列名):
删除索引

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值