连接查询(等值连接,内连接,左连接,右连接,自关联)

有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:

 

例:查询郑州市所有区县

 

 例:查询河南省的所有区县

 

posted @ 2020-09-08 15:15  追梦人娟儿  阅读(1757)  评论(0编辑  收藏  举报