SQL学习笔记(三)
左连接
格式:select * from 表1 left join 表2 on 表1.列=表2.列
例1:查询所有学生的成绩,包括没有成绩的学生。
例2:查询所有学生的成绩,包括没有成绩的学生,需要显示课程名。
join前面生成的表是左表,join后面是右表
右连接
格式:select * from 表1 right join 表2 on表1.列=表2.列
例1:查询所有课程的成绩,包括没有成绩的课程
join后面是右表,把右表数据全部显示
例2:查询所有课程的成绩,包括没有成绩的课程,包括学生信息
例2:查询所有学生的成绩,包括没有成绩的学生,需要显示课程名。
总结
inner join
自关联
aid:地区名ID
pid:上级ID
atitle:地区名字
例1:查询河北省的所有城市
用这种做法每次需要拷贝一个表
数据源,从一个表中查询多次,必须起别名
添加区县
例2:查询郑州市的所有区县
同样的,关联表
例3:查询河南省的所有区县
子查询
在一个select语句中,嵌入了另外一个select语句,那么被嵌入的select语句称之为子查询语句
例1:查询大于平均年龄的学生
标量子查询:子查询返回的结果是一个值(一行一列)
例2:查询最小年龄的人。
例3:查询王昭君的成绩,要求显示成绩
例4:查询王昭君数据库成绩,要求显示成绩
列级子查询:返回的结果是一列(一列多行)
返回的结果是多个值,一列多行,条件where后面跟的是“in” ,where后面都是作为条件来运用
例5:查询18岁的学生的成绩,要求显示成绩
行子查询
子查询返回的结果是一行多列,比较少用,where后面都是作为条件来运用
例6:查询男生中年龄最大的学生信息
表级子查询
子查询返回的结果是一个表,多行多列。
例7:查询数据库和系统测试的课程成绩
子查询中特定关键字使用
例:1.查询18岁到20岁的学生的学生信息
any和some 一样的作用
any 对于 >some 大于子查询返回的结果中任意一个值