什么是视图
数据库中的视图是一个虚拟表。视图是从一个或者多个表中导出的表,视图的行为与表非常相似,在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。视图可以使用户操作方便,而且可以保障数据库系统安全。
数据库中,预期相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。当对通过视图看到的数据进行修改时,相应的基本表中的数据也要发生变化;同时,若基本表的数据发生变化,那么这种变化也自动地反映到视图中。
(
teacherId <span style="color: #0000ff;">INT<span style="color: #000000;">,teacherAddr <span style="color: #0000ff;">VARCHAR(<span style="color: #800000; font-weight: bold;">40<span style="color: #000000;">),teacherPhone <span style="color: #0000ff;">VARCHAR(<span style="color: #800000; font-weight: bold;">20<span style="color: #000000;">)
);
创建视图
解释一下:
1、CREATE表示创建新视图。REPLACE表示替换已经创建的视图
2、ALGORITHM表示视图选择的算法,UNDEFINED表示MysqL自动选择算法,MERGE表示将使用的视图语句与视图定义合并起来,TEMPTABLE表示将视图的结果存入临时表,然后用临时表来执行语句
3、view表示视图的名称
4、column_list为属性列
5、SELECT_statement表示SELECT语句
6、CASCADED与LOCAL为可选参数,CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL则表示更新视图时满足该视图本身定义即可
该语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限,如果还有OR REPLACE子句,必须在仕途上具有DROP权限。另外,视图属于数据库,在默认情况下,将在当前数据库创建新的视图,如果想在给定数据库中明确创建视图,创建时应将名称指定为db_name.view_name。
1、在单表上创建视图
名称了。我现在往view_teacherinfo里面插入两个字段:
说明视图中的字段发生变化,原表中的字段也发生了变化,证明了前面的结论,反之也是。
2、在多表上创建视图
使用视图的作用
用户对数据的理解,也可以简化它们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件
用户只能查询和修改他们所能看见的数据,数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定列上。通过视图,用户可以被限制在数据的不同子集上:
统计汇总上
用户屏蔽真实表结果变化带来的影响
结果为:
显示出来视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息。上面的命令,写成DESC也行
SHOW TABLE STATUS也可以用来查看视图信息,基本语法为:
比如:
修改视图
修改视图,就不细说了,因为修改视图的语法和创建视图的语法是完全一样的。当视图已经存在时,修改语句可以对视图进行修改;当视图不存在时,创建视图
删除视图
删除视图,删除一个或者多个视图可以使用DROP VIEW语句,基本语法为:
删除的视图名称,可以添加多个需要删除的视图名称,名称和名称之间使用逗号分隔开,删除视图必须拥有DROP权限。比如:
删除了,因为加了IF EXISTS,所以即使删除视图出错了(比方说视图名字写错了),MysqL也不会提示错误,大不了没东西删除罢了
MysqL中视图和表的区别
MysqL中视图和表的区别:
sql语句,是基于sql语句的结果集的可视化的表,而表不是
内容,视图是窗口
修改,但视图只能用创建的语句来修改
方法,可以查询数据表中的某些字段构成的数据,只是一些sql语句的集合。从安全的角度讲,视图可以防止用户接触数据表,因而用户不知道表结构
删除只影响视图本身,不影响对应的基本表