mysql数据库学习笔记-3

分组查询

mysql数据库学习笔记,来源:bilibili,尚硅谷mysql入门到精通。

select 查询的字段,按什么分组
from 表
# where 筛选条件(分组前筛选)
group by 分组的字段
# having 筛选条件(分组后筛选)

特点:
1、可以按单个字段分组

2、和分组函数一同查询的字段最好是分组后的字段

3、分组筛选

分组前筛选:	原始表		   group by的前面	   where
分组后筛选:	分组后的结果集	group by的后面		having
①分组函数做分组肯定放在having后面。
②能用分组前的筛选就用分组前的。

4、可以按多个字段分组,字段之间用逗号隔开

5、可以支持排序,排序order by放在最后

6、having后可以支持别名

连接查询

笛卡尔乘积:如果连接条件省略或无效则会出现

解决办法:添加上连接条件

分类

1、按年代分

sql92标准:只支持内连接

sql99标准:支持内连接+外连接(左外和右外)+交叉连接

2、 按功能分

①内连接:等值连接、非等值连接、自连接

②外连接:左外连接、右外连接、全外连接

③交叉连接。

sql92标准

等值连接
select 查询字段2,查询字段2
from 表1,表2
where 等值

1.等值连接的结果 = 多个表的交集
2.n表连接,至少需要n-1个连接条件

2、为表取别名:

①提高语句的简洁度

②区分多个重名的字段

3、两个表的顺序可以转换

4、可以加筛选:

select 查询字段2,查询字段2
from 表1,表2
where 等值连接
and 筛选条件

5、可以加分组

6、可以添加排序

非等值连接

不等值也可以创造一个判断条件,用法跟上面一样

自连接

将一张表当做两张表来用,上面一样

sql99标准

语法:
select 查询列表
from 表1 别名
【连接类型 inner|left outer|right outer|full outer|cross】
join 表2 
on  连接条件

【连接类型 inner|left outer|right outer|full outer|cross】
join 表3 
on  连接条件

【where 筛选条件】
【group by 分组字段】
【having 分组后的筛选条件】
【order by 排序的字段或表达式】
外连接:

左右外连接:

1、一般用于一个表有一个表没有的情况

2、特点:外连接的结果相当于显示主表中的所有记录,如果有匹配,显示匹配值,反之显示null;

3、left outer join的左边,right outer join的右边是主表

4、外连接的效果=内连接效果+表1 中有但是表2中没有的

5、左外和右外交换两个表的顺序可以实现同样的效果

全外连接:

6、全外连接的效果=内连接效果+表1 中有但是表2中没有的+表12中有但是表1中没有的

交叉连接:

相当于做笛卡尔

子查询

含义:

出现在其他语句中的select语句

外部的查询语句,成为主查询或者外查询

分类:

1、按子查询出现的位置:

select后面:只支持标量子查询

from后面:支持表子查询

where或having后面:支持标量子查询、列子查询、表子查询

exisits后面(相关子查询):支持标量子查询

2、按结果集的不同行数的不同:

标量子查询(结果集只有一行一列)、单行子查询

列子查询(结果集只有一列多行)

行子查询(结果集有多行多列)

表子查询(一般为多行多列)

特点:

1、子查询都放在小括号内

2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧

3、子查询优先于主查询执行,主查询使用了子查询的执行结果

4、子查询根据查询结果的行数不同分为以下两类:

① 单行子查询

​ 结果集只有一行

​ 一般搭配单行操作符使用:> < = <> >= <=

​ 非法使用子查询的情况:

​ a、子查询的结果为一组值

​ b、子查询的结果为空

② 多行子查询

​ 结果集有多行

​ 一般搭配多行操作符使用:any、all、in、not in

​ in: 属于子查询结果中的任意一个就行

​ any和all往往可以用其他查询代替

分页查询

应用场景:

实际的web项目中需要根据用户的需求提交对应的分页查询的sql语句

语法:
select 字段|表达式,...
from 表
【where 条件】
【group by 分组字段】
【having 条件】
【order by 排序的字段】

limit 【起始的条目索引】条目数;
limit offset,size
特点:

1.起始条目索引从0开始

2.limit子句放在查询语句的最后

3.公式:select * from 表 limit (page-1)*sizePerPage,sizePerPage

假如:
每页显示条目数sizePerPage
要显示的页数 page

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值