4.6 DQL → 自连接(联表查询)
自连接:自己的表和自己的表 进行个连接,实际上 T喵^ 的也是 联表查询
,核心在于 一张表拆成 两张一样的表。
- 父类表
categoryid | categoryName |
---|---|
2 | 信息技术 |
3 | 软件开发 |
5 | 美术设计 |
- 子类表
pid | categoryid | categoryName |
---|---|---|
3 | 4 | 数据库 |
2 | 8 | 办公信息 |
3 | 6 | web开发 |
5 | 7 | PS技术 |
有些时候,明明 可以用 一张表 来表示 所有的数据关系和存储数据,但是 非得用两张表!这就使得 有些逻辑比较强的程序员 把两张表 弄成一个 表来 存储数据,最常见的 就是 这种 “树形结构” 的父子类关系。
select father.categoryName as '父类字段',son.categoryName '子类字段' from category as father INNER JOIN category as son on son.pid = father.categoryid;
你会发现 在 sql 的世界里 select 语句 查询的结果,是一个 特殊的 独立的存在!并不是 存储的表,而是 一个 新的 数据表结构。我们称为 “查询表或结果表”。所以 我们可以根据 同一个 表的原数据,来 进行两次 查询,生成 两个 独特的表!!!
4.7 排序
分页和排序 在项目和业务中 是非常实用的功能。
所有的数据 都需要进行 排序 和 分页吧,这是必须的!!!
- 根据某个字段降序排序
在查询语句的语句后面加上 order by 字段名 desc
select s.studentno,studentname,r.subjectno,subjectname,studentresult from student as s left join result as r on r.studentno = s.studentno inner join `subject` as sub on sub.subjectno=r.subjectno order by studentresult desc;
- 根据某个字段升序排序
在查询语句的语句后面加上 order by 字段名 asc
select s.studentno,studentname,r.subjectno,subjectname,studentresult from student as s left join result as r on r.studentno = s.studentno inner join `subject` as sub on sub.subjectno=r.subjectno order by studentresult asc;
4.7.1 分页
语法:limit 起始数据(从0开始),页面显示的数据条数
这个其实的 数据,是从 下标 0 开始计数的。
select s.studentno,studentname,r.subjectno,subjectname,studentresult from student as s left join result as r on r.studentno = s.studentno inner join `subject` as sub on sub.subjectno=r.subjectno order by studentresult asc
limit 0,2;
select s.studentno,studentname,r.subjectno,subjectname,studentresult from student as s left join result as r on r.studentno = s.studentno inner join `subject` as sub on sub.subjectno=r.subjectno order by studentresult asc
limit 1,2;
select s.studentno,studentname,r.subjectno,subjectname,studentresult from student as s left join result as r on r.studentno = s.studentno inner join `subject` as sub on sub.subjectno=r.subjectno order by studentresult asc
limit 0,4;
where 条件 是 在 join on 后面的 条件,如果写在 其它 条件的后面 可能不会生效。