天天看点

mysql的总结6--视图的学习

 1.数据库设计的三个范式:(说明:在大多数情况下,数据库应满足达到第三范式,但是特殊情况下课违反。)

<1>.第一范式:确保每列的原子性;

<2>.第二范式:确保每列都和主键相关;

<3>.确保每列都和主键直接相关,而不是间接相关。

2.视图:(视图是select查询的结果!)

<1>.定义:视图是select查询的结果,视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询,而自身不包含任何数据。

<2>.为什么要使用视图??

(1.)重用SQL语句。

(2.)简化复杂的SQL操作。

(3.)使用表的组成部分而不是整个表。

(4.)保护数据(可以给用户授权表的特定部分的访问权限而不是整个表的访问权限);

(5.)更改数据的格式和表示。

<3>.视图的规则和限制:()

(1.)与表一样,视图必须唯一命名。

(2.)在一个数据库中,可以创建的视图数目没有限制。()

(3.)视图可以嵌套,即可以利用从其他视图中查询出现的数据构建新的视图。

(4.)order by 可以用在视图中,但如果从该视图检索数据的select中也含有order by,那么该视图中的order by将会被覆盖。

(5.)视图不能索引,也不能有关联触发器或默认值。()

(6.)视图和表可以一起使用,例如编写一条连接表和视图的查询。

<4>.使用create view 语句来创建视图。

(1.)创建视图: create view v_user as select username,password,age from t_user ;

(2.)使用视图:select * from v_user;    

   select * from v_user order by age desc;

(3.)删除视图:drop view v_user;

(4.)查询创建视图的语句:show create view v_user;

<5>.视图的更新:

(1.)对视图进行insert、update、delete将会影响其基表,因为视图中不包含任何数据。

(2.)含有以下语句的视图不能更新:

含有分组(group by 和 having)

联接查询

聚合函数

子查询

distinct

(3.)不是迫不得已,不要对视图进行更新操作,因为效率低;

(4.)视图主要用于查询。

     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/924817,如需转载请自行联系原作者