mysql 5.0新特性之视图(中文教程,原创) -凯发k8网页登录

mysql资料,java技术,管理思想,博弈论,ajax,xp极限编程,h.264,hevc,hdr
随笔 - 86, 文章 - 59, 评论 - 1069, 引用 - 0
数据加载中……

mysql 5.0新特性之视图(中文教程,原创)

         花了国庆的部分时间,终于完成了这个教程的翻译了,现在可以想象当年候捷先生翻译think in java是多么困难的了,唉,累啊,好久没运动过了,快找个机会去玩玩。可惜深圳没什么地方可以运动的,订运动场稍微慢一点就没了……政府问题,不去讨论。

         回到正题,关于这个翻译我十分推荐大家看看,因为对mysql来说,实现了视图确实是一个很大的进步,而且能给mysql开发者带来的好处不仅仅是速度上的,更多是开发和维护效率上的改进。


        这里举一个书中的例子吧:


example: constraint checks 示例:约束条件检查

mysql支持not null的列约束,如:
 
create table t ( 

  column1 int not null,  

  column2 int not null); 
 


这并非mysql约束的全部功能,但是还是不能做到只允许两列中其中一列可以为空或者让列1数值在1到5之间,又或者使列1在某些特殊情况下可以为空。不过,我们可以使用视图的定义通过下面的方法实现:

create table t (column1 int, column2 int);
 
create view v as

select column1, column2 from t

where (column1 is not null or column2 is not null) 

  and column1 between 1 and 5

with check option; 

 
之后就可以通过对视图v进行插入或更新,达到我前面所需要的效果,在特殊情况下允许为空。


 是不是比较有用呢?前面我写了篇关于mysql子查询的文章,但有了视图其实可以免去部分使用子查询的情况,大家看看下面这个例子吧:



示例:子查询的替代
 
在mysql 4.1版本以后就开始支持from语句中的子查询了,例如:

 
select *

from (select * from t2 union select * from t3) as t2_t3; 

 
但是下面这样做会更好:
 

create view t2_t3 as

select * from t2 union select * from t3;
 
select * from t2_t3;



把这个转化为对视图的查询会更好更方便,因为你可能会使用复杂的对大数字的查询语句(比方说55个字),语句中包括对系统变量的一些定义,那如果有人改变了表t2,你可能要改这个55字的select语句,然而使用视图,一切都没变,你需要改的只是视图定义中的表名。 


 
另一个子查询的例子:在mysql 5.0.3中不允许使用avg(distinct ...),因为下面这个语句是非法语句: 

 
select avg(distinct column1) from t;
 
但采用下面方法能实现一样的效果,而且是合法的:
 
create view v as select distinct column1 from t;
 
select avg(column1) from v;


下面是中文版的下载地址:


转载时保留个人及出处信息,否则可能被视为侵权,呵呵。

如果需要英文原版,可以到下面地址下载:



posted on 2005-10-05 11:39 benchensz 阅读(6882) 评论(5)     所属分类: 随便写写(比较有用,值得看看)

# re: mysql 5.0新特性之视图(中文教程,原创)  回复     

还有几本书有中文翻译没有?
我只看到过
主题 mysql 5.x 相关资料 (全中文) zz « 上一主题 | 下一主题 »

sensebb_1 发表于:2005-10-14 17:57

发帖: 862
积分: 0
注册: 2003-04-14
mysql 5.0
的正式版相信不久就出来了 (现在是 5.0.13 rc1),
快快了解一下它吧!


* mysql 5.0 新特性教程 (系列)

- 第一部分: 存储过程 (store procedure)
第一讲:
第二讲:
第三讲:
第四讲:

* mysql 5.0 中的触发器 (trigger)



* 看不懂 mysql 出错时的代码? 这里有详细的错误码
(error number) 对应表:



还缺:
mysql 5.0 data dictionary
the mysql 5.0 archive storage engine
mysql 5.0's pluggable storage engine architecture, part 1: an overview
2005-10-31 13:44 |

# re: mysql 5.0新特性之视图(中文教程,原创)  回复     

那怎样修改视图呢?
比如说我写一个视图为
create view test as select * from table1;
当我想改成 select name from table1;
的时候我怎么改啊?
2005-11-25 16:25 |

# re: mysql 5.0新特性之视图(中文教程,原创)  回复     

good place, but need more!
2006-02-10 17:48 |

# re:那怎样修改视图呢?  回复     

@gqin
mysql5手册里有
create or replace view test as select name from table1;

alter view test as select name from table1;
2006-02-28 16:17 |

# re: mysql 5.0新特性之视图(中文教程,原创)  回复     

alter view test as select name from table1
2006-04-05 20:59 | 陈朋奕
网站地图