一、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);
当上述关键字参与查询是,提供一种思考思路。
- 判断需要从哪个表中取数据 确定FROM
- 一张表够吗? 如果不够 JOIN
- 需要保证某表数据完整吗? 如果需要 考虑外联, 继续考虑左右的问题
- 联接条件的确定 ON
- 判断是否需要虚表的中的所有数据, 如果不需要 WHERE
- 是否需要分组, 如果需要 GROUP BY, 进一步判断分组依据的列名.
- 把分组依据的列名放在SELECT后面
- 继续考虑SELECT究竟要选择哪些列(组函数)
- 分组的结果是都需要吗? 如果不需要 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的“方言”。