数据库操作2

连接查询

内连接:结果为两个表匹配到的数据;(取交集)
左连接:两个表匹配到的数据加上左表特有的数据;
右连接:两个表匹配到的数据加上右表特有的数据

数据库操作2_第1张图片
数据库操作2_第2张图片
数据库操作2_第3张图片
数据库操作2_第4张图片

连接查询-内连接

语法格式:
select * from 表1
inner join 表2 on 表1.=2.

查询学生信息及学生的成绩
数据库操作2_第5张图片

查询课程信息及课程的成绩
数据库操作2_第6张图片

查询王昭君的成绩,要求显示姓名,课程号,成绩
PS:如果表中的字段名和系统某些名字重名,建议加上反引号(不是单引号)
数据库操作2_第7张图片

练习一(内连接)

查询学生信息及学生的课程对应的成绩
数据库操作2_第8张图片

查询王昭君的数据库成绩,要求显示姓名,课程名,成绩
数据库操作2_第9张图片

查询所有学生的数据库成绩,要求显示姓名,课程名,成绩
数据库操作2_第10张图片

查询男生中最高成绩,要求显示姓名,课程名,成绩

把查询到的结果进行一个降序排序,再用分页取出第一个
数据库操作2_第11张图片

连接查询-左连接

语法格式:
select * from 表1
left join 表2 on 表1.=2.

查询所有学生的成绩,包括没有成绩的学生
数据库操作2_第12张图片

查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
数据库操作2_第13张图片

连接查询-右连接

查询所有学生的成绩,包括没有成绩的学生
数据库操作2_第14张图片
查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
数据库操作2_第15张图片

自关联

应用场景:省市区的信息,一般不会分开放在不同的表里面进行存储,而是放在同一个表里面
数据库操作2_第16张图片

自关联:inner join 关联同一个表,不同字段
自关联要用别名

查询河南省所有的城市
数据库操作2_第17张图片

查询郑州市所有的区
数据库操作2_第18张图片

查询河南省的所有的市区
数据库操作2_第19张图片
查询河北省所有的市的信息
数据库操作2_第20张图片

查询洛阳市所有的区的信息
数据库操作2_第21张图片

子查询

将一条SQL查询语句嵌入在其他的SQL语句中,被嵌入的SQL语句称之为子查询,其他的SQL语句称之为主查询
--子查询的select语句,要么充当条件,要么充当数据源;
--子查询语句是一条完整的select语句,且可以单独执行

in范围:
格式:主查询 where 条件 in (列子查询)
all所有
格式:主查询 where 列=all(列子查询)

any|some任意
格式:主查询 where 列=all(列子查询)

in与=any等价
some是any的别称,很少用

!=all和not in等价

子查询充当条件

查询王昭君的成绩,要求显示成绩(标量子查询)
数据库操作2_第22张图片

查询18岁的学生的成绩,要求显示成绩(列子查询)
数据库操作2_第23张图片

查询和王昭君同班,同龄的学生信息(行子查询)
数据库操作2_第24张图片

子查询充当数据源

查询数据库和系统测试的课程成绩
数据库操作2_第25张图片

练习一

查询大于平均年龄的学生
数据库操作2_第26张图片

查询年龄在18-20之间的学生的成绩
数据库操作2_第27张图片

练习二

1.列出总人数大于4的部门号和总人数
数据库操作2_第28张图片
2、列出开发部和测试部的职工号,姓名
数据库操作2_第29张图片
3、求出各部门党员的人数,要求显示部门名称
因为这是两张表连接在一起,所以不能直接在group by 后面用having进行过滤,having过滤的话在一张表里面可以。所以这里在员工表和部门表内连接的时候只连接党员,再来分组
数据库操作2_第30张图片
4.列出市场部的所有女职工的姓名和政治面貌
数据库操作2_第31张图片

5.显示所有职工的姓名,部门名,和工资数
数据库操作2_第32张图片
数据库操作2_第33张图片
6.显示各部门名和该部门的职工平均工资
数据库操作2_第34张图片

7.显示工资最高的前3名职工的职工号和姓名
数据库操作2_第35张图片

8.列出工资在1000-2000之间的所有职工姓名
数据库操作2_第36张图片

9.列出工资比王昭君高的员工
数据库操作2_第37张图片

10.列出每个部门中工资小于本部门平均工资的员工信息
数据库操作2_第38张图片
主键:物理上存储的顺序
外键:维护两个表之间的关联关系

你可能感兴趣的:(数据库,mysql,sql)