连接查询(等值连接,内连接,左连接,右连接,自关联)
有3个表
1、等值连接:连接过程中,先连接,再条件判断
语法:select * from 表1,表2
where 表1.列=表2.列
例:查询学生信息及学生的成绩
2、内连接: 连接过程中,先判断,符合条件才会连接
语法:select * from 表1,表2
inner join 表2.列=表2.列
例:查询课程信息及学生的成绩
方式1:
方式2:
例:查询学生信息及学生的课程对应的成绩
方式1:
方式2:
例:查询王昭君的成绩,要求显示姓名,课程号,成绩
方式1:
方式2:
例:查询王昭君的数据库成绩,要求显示姓名、课程名、成绩
方式1:
方式2:
例:查询所有的数据库成绩,要求显示姓名、课程名、成绩
方式1:
方式2:
例:查询男生中最高成绩,要求显示姓名、课程名、成绩
方式1:
方式2:
3、左连接:
语法:select * from 表1,表2
left join 表2 on 表1.列=表2.列
例:查询所有学生的成绩,包括没有成绩的学生
例:查询所有学生的成绩,不包括没有成绩的学生
例:查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
例:查询所有学生的成绩,不包括没有成绩的学生,需要显示课程名
4、右连接:
语法:select * from 表1,表2
right join 表2 on 表1.列=表2.列
例:查询所有学生的成绩,包括没有成绩的学生
例:查询所有学生的成绩,不包括没有成绩的学生
例:查询所有课程的成绩,包括没有成绩的学生,包括学生信息
例:查询所有课程的成绩,不包括没有成绩的学生,包括学生信息
5、自关联
举例:没有上级编号,Null
aid跟pid进行比较,如果后面的pid==前面的aid,代表市属于省
例:一共有多少个省 :select * from areas where pid is null;
pid为空,说明是省,没有上级
例:查询河南省所有城市 (areas可以查2次)
方式1:
查询的时候,重命名2个表格,一个是省,一个是市
方式2:
例:查询郑州市所有区县
例:查询河南省的所有区县