视图算是一个mysql中一个稍微比较高级一点的知识点,它本身就是一个虚拟表,这篇文章从案例出发介绍mysql中的视图。

一、理解视图

还记得在刚刚学习视图的时候,总是和表的概念分不清。我们可以这样来理解。小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试。这时候每一个班级就可以当做是一张真实的表,很多班级筛选出来的这些同学就可以临时组成一个班级,这个班级就可以当做一个视图,也就是说,这个班级其实不是真实存在的,当考试过后,这些学生还是各回各家各找各妈。

mysql从5.1的版本开始有视图功能的,通常情况下,视图是为了封装一些复杂的操作或者是一些重复的操作。比如说在多个地方使用相同的查询结果,再或者是sql语句比较复杂,封装成视图,下一次直接使用即可。

视图的作用:

(1)提高了重用性,对数据库重构,却不影响程序的运行,

(2)提高了安全性,可以对不同的用户,让数据更加清晰,特别是查询操作,减少复杂的SQL语句,

(3)增强可读性;更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限定到行列级别;

二、视图操作

创建视图:

create view 视图名 as select 字段名称 from 表名……;

查看视图:

(1)describe 视图名;

(2)show table status like '视图名'\G;

(3)show create view 视图名;

(4)select * from information_schema.views;

修改视图:

create  view 视图名 as select 字段名称 from 表名……. ;

alter     view 视图名 as select 字段名称 from 表名……;

更新视图:

(1)update 视图名 set 字段名=值;

(2)insert into 表名 values(值,值…);

(3)delete from 视图名 where 字段=值;

删除视图:

drop view if exists 视图名;

下面举个例子看看吧。

三、举例演示

在这里使用的是单表下创建视图

 1mysql> create table user (
2    -> id int(11) primary key auto_increment,
3    -> name varchar(20),
4    -> english float,
5    -> math float
6    -> );
7Query OK, 0 rows affected (0.26 sec)
8mysql> select * from user;
9+----+--------+---------+------+
10| id | name   | english | math |
11+----+--------+---------+------+
12|  1 | 张三   |      70 |   75 |
13|  2 | 李四   |      75 |   80 |
14|  3 | 王五   |      85 |   90 |
15+----+--------+---------+------+
163 rows in set (0.00 sec)

在这里新建了一个user表,然后往里面插入了几条数据。下面我们新建一个视图再去使用。

 1mysql> create view user_view as
2    -> select id,name, english+math from user;
3Query OK, 0 rows affected (0.06 sec)
4mysql> select * from user_view;
5+----+--------+--------------+
6| id | name   | english+math |
7+----+--------+--------------+
8|  1 | 张三   |          145 |
9|  2 | 李四   |          155 |
10|  3 | 王五   |          175 |
11+----+--------+--------------+
123 rows in set (0.00 sec)

现在我们创建了一个视图名字叫做user_view,然后选择了其中几条字段,使用的时候就可以像正常表一样去使用了。在多表情况下创建视图也是一样的,只是在select语句的时候再多表链接查询而已。


更多相关文章

  1. 使用jQuery验证的MVC Razor View不验证空字段
  2. 执行Django数据库值的计算:视图。py或Javascript模板吗?
  3. 使用jQuery在AJAX调用中的url字段格式
  4. 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容
  5. 在使用kendo网格中的删除按钮后,如何刷新MVC中的部分视图
  6. 为什么我不能在同一个js文件中建立两个cleave.js格式的字段?
  7. 在使用javascript将信息输入到输入字段时填充文本区域
  8. 更改html隐藏字段的事件
  9. Symfony 2在用户站点上动态添加字段以形成

随机推荐

  1. android 通过 button 弹出menu
  2. 【技术直通车】ArcGIS for Android地图控
  3. android stuido中修改最低sdk
  4. Android AIDL 理解及开发要点
  5. android ndk 入门3 - log实现
  6. 布局(2、相对布局)
  7. 监听android电话呼叫状态
  8. Android使用Google提供的地图实现定位时L
  9. Android实现自定义对话框(Dialog)
  10. Android 系统音量最大值的定义位置以及默