数据库MySQL高级——视图和函数

文章目录

  • 前言
  • 一、视图
  • 1、为什么使用视图
  • 2、视图的优缺点
      • 1)优点
      • 2)缺点
  • 3、MySQL中视图的使用
  • 4.使用视图更新数据
  • 5.视图管理

前言

本章节的主要内容为视图和函数。


一、视图

MySQL 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

1、为什么使用视图

1)视图可以避免频繁的编写这些关联查询语句
2)起到对基表中的其他列和数据行进行安全保护
3)视图中存储了可以返回结果集的 sql 查询语句,当用在 from子句时,内部的 sql 查询语句就会被执行

2、视图的优缺点

1)优点

1.简单化,数据所见即所得;
2.安全性,用户只能查询或修改他们所能见到得到的数据;
3.逻辑独立性,可以屏蔽真实表结构变化带来的影响。

2)缺点

1.性能相对较差,从视图查询数据可能会很慢,特别是如果视图是基于其他视图创建的;
2.修改不方便,特别是复杂的聚合视图基本无法修改。

3、MySQL中视图的使用

1.基于单表创建视图:创建视图,显示学生姓名、性别、年龄和所在班级编号
代码如下:

-- 创建视图
create view view1
as select studentName,gender,age,classid from studentinfo;
-- 通过视图查询
select * from view1;

2.使用别名的视图:创建视图,显示学生姓名、性别、年龄和所在班级编号,并以中文表头显示

-- 创建视图
create view view2(姓名,性别,年龄,班级编号)
as select studentName,gender,age,classid from studentinfo;
-- 通过视图查询
select * from view2;

3.基于多表创建视图:创建视图,显示学生姓名、性别、年龄和所在班级名称

-- 创建视图
create view view3
as select studentName,gender,age,classname
from studentinfo s inner join classinfo c
on s.ClassID = c.ClassID;
-- 通过视图查询
select * from view3;

4.使用视图更新数据

1.定义视图的 SELECT 语句不能包含以下任何元素
1)聚合函数;
2)distinct 子句;
3)group by 子句;
4)having 子句
5)union 和 union all 子句;
6)外连接
注意:不建议使用基于多表创建的视图进行更新操作

5.视图管理

  1. 查看视图定义
show create view view1;
  1. 修改或替换视图
使用 alter view 替换 create view 就可以实现视图的修改操作,
还可以使用CREATE OR REPLACE VIEW 语句来创建或替换现有视图。
如果一个视图已经存在,MySQL 只会修改视图。如果视图不存在,
MySQL 将创建一个新的视图
  1. 删除视图
使用“drop view 视图名”命令就可以删除视图了。

以上就是今天要讲的主要内容

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