本文分别从创建视图,修改视图,和应用视图三方面介绍了视图.相信你在看完本文后对视图能够熟练应用.
什么是Mysql视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
另外Mysql 4.X 及以下版本是不支持视图的,在Mysql 5.X及更高版才开始支持.在使用时请注意.
创建视图
为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表建立视图的方式。在建立的视图中只有开发人员所关心的字段。运行本实例,如图9.6所示,分别在图中输入登录用户的用户名和密码,单击“进入”按钮后,如果用户输入错误的用户名或密码,则给出错误提示,反之如果输入的用户名和密码正确,则提示成功登录。由于本实例采用视图建立了虚表,所以应首先在“命令提示符”下建立视图,如图9.7所示。
MySQL中创建视图可以通过create view语句来实现,具体创建格式如下:
create [ or deplace] [algorithm={merge | temptable | undefined}] view view_name [( column_list)] as select_statement [with [cascaded | local] check option]
algorithm={merge | temptable | undefined}属性用于优化MySQL视图的执行,该属性有3个可用的设置。下面将介绍这3个设置的使用方法。
merge:该参数使MySQL执行视图时传入的任何子句合并到视图的查询定义中。
temptable:如果视图低层表中的数据有变化,这些变化将在下次通过表时立即反映出来。
undefined:当查询结果和视图结果为一一对应关系时,MySQL将algorithm设定为temptable。
view_name:新建视图的名称。
select_statement:SQL查询语句用于限定虚表的内容
实现过程
(1)建立数据库及数据表,本实例中将数据表命名为tb_admin。
(2)建立完数据表后,就可以在命令提示符下建立视图。创建视图的代码如下:
create view chkadmin as select name, pwd from tb_admin
创建完视图chkadmin后,该视图中只含有name和pwd两个字段,这样会给密码验证工作带来很大的方便。
(3)建立与MySQL数据库的连接。代码如下:
以下为引用的内容: <?php $conn=mysql_connect("localhost","root","root"); mysql_select_db("db_database09",$conn); mysql_query("set names gb2312"); ?> (4)判断用户是否单击了“进入”按钮,如果是则通过视图chkadmin对用户身份进行验证。该过程代码如下: <?php if($_POST[submit]!="") { include_once("conn.php"); $name=$_POST[name]; $pwd=$_POST[pwd]; $sql=mysql_query("select * from chkadmin where name='".$name."' and pwd='".$pwd."'",$conn); $info=mysql_fetch_array($sql); if($info==false){ echo "<script>alert('用户名或密码输入错误!');history.back();</script>"; exit; } else { echo "<br><div align=center>登录成功!</div>"; } } ?> |