视图
将查询的结果创建为一个视图。
在视图中没有数据,只有查询语句,当需要通过查询视图中的数据时,根据查询语句到实际的表中查询到数据并显示。
语法:
创建视图例子:
使用:
SELECT * FROM empinfo
视图中没有数据,只有创建视图时的SQL语句定义。
在使用视图时才会去执行SQL语句,查询实际的数据。
将多表查询定义为视图,可以大大方便实际查询的日常使用。
使用视图不方便修改数据,容易出错,视图一般用于查看数据。
子查询
需求:
给在北京工作的员工涨工资10%,更新员工表,但工作地点北京在部门表里,通过部门表查询北京的部门编号,根据查询到的部门编号再到员工表中更新。
在某些情况下,增、删、改、查操作需要其他的SELECT语句结果。这个SELECT查询语句就称为子查询。
下面查询操作的为这三张中数据:
部门表dept
员工表emp
工资等级表salgrade
单行单列的子查询结果
显示在北京上班的员工信息
查询在北京的部门编号
显示在北京上班的员工信息
多行单列的子查询结果
子查询得到多行单列的多个结果值
显示在北京和上海的员工的信息
查询北京和上海的部门编号
显示在北京和上海的员工的信息
多行多列的子查询
案例:显示每个部门工资最多的员工信息
子查询替换
显示员工工资超过北京平均工资的人员信息
找北京的部门编号
找北京部门编号对应的员工的平均工资
显示员工工资超过北京平均工资的人员信息
表连接实现:
比较表连接和子查询
子查询优点:思路简单理解方便,可以解决连接查询不能解决的问题。
子查询缺点:效率低,多个SQL语句,会多次连接数据库服务器发送多次请求。
表连接查询优点:显示效果好,可以显示多张表中的信息。效率高,请求次数少。
表连接查询缺点:连接情况复杂。