内连接:结果为两个表匹配到的数据;(取交集)
左连接:两个表匹配到的数据加上左表特有的数据;
右连接:两个表匹配到的数据加上右表特有的数据
语法格式:
select * from 表1
inner join 表2 on 表1.列=表2.列
查询王昭君的成绩,要求显示姓名,课程号,成绩
PS:如果表中的字段名和系统某些名字重名,建议加上反引号(不是单引号)
查询男生中最高成绩,要求显示姓名,课程名,成绩
语法格式:
select * from 表1
left join 表2 on 表1.列=表2.列
查询所有学生的成绩,包括没有成绩的学生
查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
应用场景:省市区的信息,一般不会分开放在不同的表里面进行存储,而是放在同一个表里面
自关联:inner join 关联同一个表,不同字段
自关联要用别名
将一条SQL查询语句嵌入在其他的SQL语句中,被嵌入的SQL语句称之为子查询,其他的SQL语句称之为主查询
--子查询的select语句,要么充当条件,要么充当数据源;
--子查询语句是一条完整的select语句,且可以单独执行
in范围:
格式:主查询 where 条件 in (列子查询)
all所有
格式:主查询 where 列=all(列子查询)
any|some任意
格式:主查询 where 列=all(列子查询)
in与=any等价
some是any的别称,很少用
!=all和not in等价
1.列出总人数大于4的部门号和总人数
2、列出开发部和测试部的职工号,姓名
3、求出各部门党员的人数,要求显示部门名称
因为这是两张表连接在一起,所以不能直接在group by 后面用having进行过滤,having过滤的话在一张表里面可以。所以这里在员工表和部门表内连接的时候只连接党员,再来分组
4.列出市场部的所有女职工的姓名和政治面貌