SQL多表查询

一、join操作
INNER JOIN(内连接):如果表中有至少一个匹配,则返回行 【在语法中可以省略INNER关键字】
LEFT JOIN(左连接):从左表返回所有的行,如果右表中没有匹配,对应的列返回Null
RIGHT JOIN(右连接):从右表返回所有的行 ,如果左表中没有匹配,对应的列返回Null

二、内连接
隐式内连接:使用where条件消除无用数据
select * from 表1,表2 where 表1. ’字段名’=表2. ’字段名’ ;
显式内连接
select * from 表1 inner join 表2 on 表1.‘字段‘ = 表2.’字段‘ ;

三、外连接
左外连接
查询的是左表所有的数据信息以及交集的部分。
Select 字段列表 from 表1 left outer join 表2 on 条件 ;

右外连接
查询的是右表所有的数据信息以及交集的部分。
Select 字段列表 from 表1 right outer join 表2 on 条件 ;

四、子查询
查询中嵌套查询
Select * from 表1 where 表1 .’字段’ =(select max(字段) from 表1);

当上述关键字参与查询是,提供一种思考思路。

  1. 判断需要从哪个表中取数据 确定FROM
  2. 一张表够吗? 如果不够 JOIN
  3. 需要保证某表数据完整吗? 如果需要 考虑外联, 继续考虑左右的问题
  4. 联接条件的确定 ON
  5. 判断是否需要虚表的中的所有数据, 如果不需要 WHERE
  6. 是否需要分组, 如果需要 GROUP BY, 进一步判断分组依据的列名.
  7. 把分组依据的列名放在SELECT后面
  8. 继续考虑SELECT究竟要选择哪些列(组函数)
  9. 分组的结果是都需要吗? 如果不需要 HAVING过滤
    10)是否需要对最终的显示排序 ORDER BY

//按照字段一升序查询,如果字段一值相等,按照字段二升序查询

 select * from  student order  by 字段一 ASC ,字段二 ASC ;

//若字段一有一条数据为null,不计算进去。采用ifnull函数

select  count( ifnull(字段一,0)) from student;

第一页

Select * from student limit 0,3 ;   

第二页

Select * from student limit 3,3;  

公式:开始的索引=(当前的页码 - 1)*每页显示的条数
limit分页操作是一个mysql的“方言”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值