当前课程知识点:MySQL数据库案例教程 > 第4章 查询与视图 > 4.6 视图 > 4-6视图视频1
同学们好
今天我们学习第4章
查询与视图
本次课的学习内容是:视图
前面我们学习了数据的查询
同学们有没有想过把查询结果保存起来
方便多次查看呢?
在数据库中有一种对象叫做视图
不仅可以保存查询
还可以对基本表的数据进行
增删改查的操作
下面我们就来学习视图的概念
视图基本的操作
以及如何通过视图操作基本表的数据
那什么是视图呢?
视图是用户从一个特定的角度
来查看数据库中的数据
是从基本表中导出来的虚表
其内容由查询定义
但是
视图并不在数据库中以存储的数据值集形式存在
行和列数据由定义视图的查询所引用的表
并且在引用视图时动态生成
使用视图有几个优点
第一,简化查询语句
若视图本身就是一个复杂查询的结果集
这样在每一次执行相同的查询时
不必重新写这些复杂的查询语句
只要一条简单的查询视图语句即可
第二,安全性
视图能够实现让不同的用户
以不同的方式看到不同或相同的数据集
用户只能通过视图查询和修改
他们所能见到的数据
对于视图之外的数据无法操作
3,屏蔽数据库的复杂性
用户不必了解复杂的数据库中的表结构
并且
数据库表的更改也不影响用户对数据库的使用
那接下来我们就来学习如何创建视图
创建视图是语法是
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED
或 MERGE 或TEMPTABLE}]
[DEFINER =
USER或CURRENT_USER
[SQL SECURITY
{ DEFINER 或 INVOKER
VIEW 视图名[(列名,…)]
AS SELECT 语句
[WITH [CASCADED或LOCAL] CHECK OPTION]
我们来看每个子句的含义
(1)CREATE [OR REPLACE]
VIEW 视图名[(列名,…)]
新建或替换原有视图
(2)ALGORITHM = {UNDEFINED
或 MERGE 或 TEMPTABLE}]
查询的算法选择是可选项
其中UNDEFINED表示自动选择算法
为默认值
MERGE表示视图定义
和查询该视图的语句合并执行
TEMPTABLE表示将查询结果放入临时表
然后用临时表查询
(3)DEFINER = { USER 或 CURRENT_USER
定义视图的用户
该项为可选项
可以是某个具体的用户
也可以是当前用户
默认为当前用户
(4)SQL SECURITY { DEFINER 或 INVOKER
可选项用于视图的安全控制
其中DEFINER表示按定义者指定的用户权限执行
INVOKER表示按调用视图的用户的权限来执行
(5)WITH [CASCADED或LOCAL] CHECK OPTION
视图的约束检查条件为可选项
其中CASCADED
用于满足所有视图和表定义的条件
LOCAL满足该视图本身定义的条件
来看案例
【案例1】
创建视图V1
查询student表中“化学工程系”的sid
sname,sex,department,年龄
要查询student表中“化学工程系”的sid
sname,sex,department,年龄
语句可以这样写
Select sid,sname,sex,department,
year(now())-year(birth)
From student
Where department=‘化学工程系’
那么怎么创建试图呢?
展开stu数据库选中视图
击右键
新建视图名
输入v1
sqlyog把创建视图的基本语法都展现出来
我们用户只需要选择相关参数
或者添加查询语句就可以
非常方便
在本例中
算法、用户、安全控制我们都采用了默认值
就不再设置了
输出项中有一个输出项不是表中字段
因此我们在视图名的后面添加列名
sid,sname,sex,department,age
执行,成功
刷新对象浏览器
可以看到视图下有v1视图了
除了这样创建
也可以在新查询编辑器窗口输入命令
Create view
v1(sid,sname,sex,department,age)
As Select sid,sname,sex,department,
year(now())-year(birth) From student
Where department=‘化学工程系’;
这种方式我不再演示了
请同学们在课下操作
接下来创建一个多表视图
来看【案例2】
创建多表视图V2
包含
sid,sname,cno,cname,result字段
查询sid,sname
cno,cname,result的语句可以这样写
Select s a.sid,sname
b.cno,cname,result
From student a
score b,course c
Where a.sid=b.sid and b.cno=c.cno
执行
查询出sid,sname,cno,cname,result字段
那视图怎么创建呢?
在新查询编辑器窗口输入命令
CREATE VIEW v2 AS
SELECT a.sid
sname,b.cno,cname,result
FROM student a,score b,course c
WHERE a.sid=b.sid AND b.cno=c.cno;
执行
v2视图创建成功
视图创建成功以后可以查看视图
查看有两种方法
(1)DESC[RIBE] 视图名
(2)SHOW CREATE VIEW 视图名
如describe v2
查询出v2视图创建的列信息
SHOW CREATE VIEW v1
查询创建视图v1的语句信息
查看的内容不同
使用时根据需要来进行选择
视图创建成功以后还可以对视图进行修改
修改视图可以使用
create or replace或alter view
后面语法与create view后语法相同
create or replace语法是新建或覆盖原有视图
alter则是修改原有视图
如将v1修改为查询所有学生的sid
sname,sex,department,年龄
可以使用
create or replace view
V1(sid,sname,sex,department,age)
As Select sid,sname,sex,department,
year(now())-year(birth)
From student
还可以使用界面方式
点击视图名
修改视图
修改相关属性即可
对于不需要的视图
我们可以执行删除视图操作
删除视图可以使用DROP view 视图名
比如DROP view aa
执行
删除掉AA视图
也可以通过快捷菜单删除
选中视图名,右键,删除视图即可
通过以上案例
我们学习了视图的创建
修改和查看删除视图的操作
本小结就先讲到这里
-1.1 数据库基础知识
-1.2 MySQL的安装与运行
-第1章 测试
-2.1 数据库的基本操作
-2.2 表的基本操作
-2.3 MySQL数据类型
-2.4 约束设置
-2.5 索引
--2-5索引视频
--2-5索引课件
--2-5索引实训
-第2章测试
-3.1 插入记录
-3.2 修改记录
-3.3 删除记录
--3.3删除记录
-第3章 测试
-4.1 select语句
-4.2 单表查询
-4.3 多表查询
-4.4 子查询
--4-4子查询课件
--4-4子查询实训
-4.5 外键
--4-5外键视频
--4-5外键课件
--4-5外键实训
-4.6 视图
--4-6视图视频1
--4-6视图视频2
--4-6视图课件
--4-6视图实训
-第4章测试
-5.1 函数
--5-1系统函数
--5-1函数课件
--5-1 函数实训
-5.2 流程控制语句
-5.3 事务与游标
-5.4 存储过程
-5.5 触发器
--5-5触发器视频
--5-5触发器课件
--5-5触发器实训
-第5章测试
-6.1 数据库备份与还原
-6.2 异构数据源导入导出
-第6章测试
-7.1 用户管理
-7.2 权限管理
-7.3 应用实例开发
-第7章测试