前往顾页
以后地位: 主页 > 收集编程 > Php实例教程 >

MySQL视图的利用 概述

时候:2015-01-28 21:12来源:知行网www.zhixing123.cn 编辑:麦田守望者

视图也称虚表,包含履行某个查询前往的一组记录。视图可以简化获得数据的体例,并经由过程别号来实现笼统查询。

实例258:建立视图

实例申明

为了简化查询,在实际项目开辟过程中,凡是可以采取为数据库中的某个表建立视图的体例。在建立的视图中只需开辟职员所关心的字段。运行本实例,如图9.6所示,别离在图中输入登任命户的用户名和暗码,单击“进入”按钮后,如果用户输入错误的用户名或暗码,则给出错误提示,反之如果输入的用户名和暗码精确,则提示成功登录。因为本实例采取视图建立了虚表,所以应起首在“号令提示符”下建立视图,如图9.7所示。

图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>";
}
}
?>

触类旁通

按照本实例,读者可以:
操纵视图实现用户信息注册。
操纵视图实现商品信息的降序输入。

实例259:点窜视图
这是一个点窜视图的实例
录相地位:光盘\mingrisoft\09\259

实例申明

为了进步事情效力,对不满足前提的视图可以经由过程点窜的体例进行变动。实现本实例,起首应在数据库中建立数据表tb_changeview,该表也能够在phpMyAdmin中建立,如图9.8所示。翻开“号令提示符”窗口,建立视图userinfo,如图9.9所示。变动视图userinfo,如图9.10所示。

 

图9.8 建立表changeview
图9.9 建立新视图

 

图9.10 点窜视图

技术要点

MySQL中点窜视图可以经由过程alter view语句实现,alter view语句详细利用申明以下:

alter view [algorithm={merge | temptable | undefined} ]view view_name 
[(column_list)] as select_statement[with [cascaded | local] check option]

algorithm:该参数已在建立视图中作了介绍,这里不再赘述。
view_name:视图的称呼。
select_statement:SQL语句用于限定视图。

实现过程

(1)建立数据库及数据表,本实例中将数据表定名为tb_changeview。
(2)建立视图userinfo。代码以下:

 

create view userinfo as select * from tb_changeview

(3)查询视图userinfo。代码以下:

 

select * from userinfo

检察履行成果,可以发明tb_changeview表中的所有的字段都一一列出。
(4)下面开端点窜视图,请求点窜后只列出username字段。代码以下:

 

alter view userinfo as select * from tb_changeview

(5)从头查询视图userinfo,从成果中可以发明这时候只列出username一个字段,从而申明视图点窜成功。
(2)建立index.php文件,用于实现多表之间的查询,如果门生表和成绩表中有满足前提的记录,则显现这些记录,不然提示没有相关信息。代码以下:

触类旁通

按照本实例,读者可以:

实现点窜存储商品信息的视图。
实现点窜存储用户注册信息的视图。

实例260:利用视图
这是一个利用视图的实例
实例地位:光盘\mingrisoft\09\260

实例申明

在实际的Web开辟过程中,多个数据表中可能有很多的字段,但某个模块可能只需求此中的几个字段。为了进步查询速率和简练操纵,可以将该模块需求的字段伶仃提取出来放在某视图中,比方本实例触及到门生表和成绩表,在建立的视图中只含有与学天生绩有关的字段,如图9.11所示。运行本实例,如图9.12所示,图中的查询成果显现的字段即为视图中的所有字段。

 

图9.11 建立视图
图9.12 学天生绩列表

技术要点

本实例建立的视图触及到多表查询,这申明多个表之间可以经由过程视图来组合为一个团体,如许对视图的操纵相当于多表查询。但如果这些表中有不异的字段,必须按以下体例誊写重名的字段:

表名1.字段名,表名2.字段名……

实现过程

(1)在“号令提示符”窗口下为数据库建立视图。代码以下:

create view scoreinfo as select sno,sname,
yw,wy,sx from tb_student,tb_score where tb_student.id=tb_score.sid


(2)建立数据库连接文件conn.php。代码以下:

<?php
$conn=new mysqli("localhost","root","root","db_database09");
$conn->query("set names gb2312");
?>


(3)查询视图scoreinfo中的内容,并显现查询成果。代码以下:

<?php
include_once("conn.php");
$sql=$conn->query("select * from scoreinfo");
$info=$sql->fetch_array(MYSQLI_ASSOC);
if($info==NULL)
{
echo "暂无门生信息";
}
else
{
do
{
?>
<tr>
<td height="20" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[sno];?></div></td>
<td bgcolor="#FFFFFF"><div align="center"><?php echo $info[sname];?></div></td>
<td bgcolor="#FFFFFF"><div align="center"><?php echo $info[yw];?></div></td>
<td bgcolor="#FFFFFF"><div align="center"><?php echo $info[wy];?></div></td>
<td bgcolor="#FFFFFF"><div align="center"><?php echo $info[sx];?></div></td>
</tr>
<?php
}
while(  $info=$sql->fetch_array(MYSQLI_ASSOC));
}
?>


触类旁通

按照本实例,读者可以:

实现多表之间的嵌套查询。
实现多表之间不异信息的提取

顶一下
(0)
0%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):MySQL视图的利用
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣