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
,如需转载请自行联系原作者