SELECT s.studentno,studentname,subjectno,studentresult FROM student AS s INNERJOINresultAS r WHERE s.studentno = r.studentno
-- right join SELECT s.studentno,studentname,subjectno,studentresult FROM student s RIGHTJOINresult r ON s.studentno = r.studentno
-- left join SELECT s.studentno,studentname,subjectno,studentresult FROM student s RIGHTJOINresult r ON s.studentno = r.studentno
-- 查询缺考 SELECT s.studentno,studentname,subjectno,studentresult FROM student s LEFTJOINresult r ON s.studentno = r.studentno WHERE studentresult ISNULL
操作
描述
inner join
表中至少有一行匹配,返回行
left join
即使右表不匹配,也会返回左表所有的
right join
即使左表不匹配,也会返回右表所有的
1 2 3 4 5 6
SELECT s.studentno,studentname,studentresult,subjectname FROM student s RIGHTJOINresult r ON r.studentno = s.studentno INNERJOIN `subject` sub ON r.subjectno = sub.subjectno
自连接
自己的表和自己连接 核心:一张表拆为两张一样的表
categroyid
categroyname
2
信息技术
3
软件开发
5
美术设计
子类
pid
categoryid
categoryname
3
4
数据库
2
8
办公信息
3
6
web开发
5
7
ps技术
操作:查询父类 对应子类的关系
父类
子类
信息技术
办公信息
软件开发
web开发
软件开发
数据库
美术设计
ps技术
1 2 3 4
-- 查询父子信息 SELECT a.categoryName AS'父栏目',b.categoryName AS'子栏目' FROM category AS a,category AS b WHERE a.categoryid = b.pid
-- 查询学员所属的年级(学号,姓名,年级名称) SELECT studentno ,studentname,gradename FROM student s INNERJOIN grade g ON s.gradeid = g.gradeid
-- 查询科目所属的年级(科目名称,年级名称) SELECT subjectName,gradename FROM `subject` sub INNERJOIN grade g ON sub.gradeid = g.gradeid
-- 查询 参加 数据库结构-1 考试的学生 SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNERJOINresult r ON s.studentno = r.studentno INNERJOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname ='高等数学-1'
4.5 分页和排序
排序
1 2 3 4 5 6 7 8 9 10 11
-- ========= 分页和排序 =========== -- 排序,升序 ASC 降序 DESC -- 查询结果降序排序 SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNERJOINresult r ON s.studentno = r.studentno INNERJOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname ='高等数学-1' ORDERBY StudentResult DESC
分页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
-- 分页 减小数据库压力 给人的体验更好 -- 分页每页只展示5条数据 -- limit 0,5 1-5 起始到结束 SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNERJOINresult r ON s.studentno = r.studentno INNERJOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname ='高等数学-1' ORDERBY StudentResult DESC LIMIT 0,5