`

MySQL视图的应用

阅读更多

MySQL视图的应用

视图也称虚表,包括执行某个查询返回的一组记录。视图可以简化获取数据的方法,并通过别名来实现抽象查询。

实例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));
}
?>


举一反三

根据本实例,读者可以:

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

分享到:
评论

相关推荐

    MySQL--视图的定义

    ### MySQL视图定义详解 #### 视图的概念 在MySQL中,**视图**是一种特殊的虚拟表,其结果集由从本机表中选择的数据组成。视图并不存储实际的数据,而是存储一条SELECT语句,当用户访问视图时,数据库引擎会执行该...

    Mysql视图工具(Navicat for MySQL)

    MySQL视图工具,如Navicat for MySQL,是数据库管理员和开发人员常用的一款图形化界面工具,它提供了方便的方式来管理MySQL数据库,包括创建、编辑和操作视图。Navicat for MySQL不仅支持基本的数据库管理和数据操作...

    MySql视图顺序整理工具

    在这个场景中,"MySql视图顺序整理工具"是一个专为MySQL视图设计的应用程序,旨在帮助用户更有效地管理和组织Navicat中的视图SQL。 Navicat是一款流行的数据库管理工具,支持多种数据库系统,包括MySQL。在Navicat...

    创建mysql数据库视图

    总之,创建MySQL数据库视图是数据库管理中的一项重要技巧,它可以帮助我们更好地组织和访问数据,同时提高数据的安全性和应用程序的稳定性。在实际应用中,视图可以根据需求灵活设计,以满足不同的业务场景。

    MySQL视图.doc

    MySQL视图是数据库管理系统中的一种数据抽象,它提供了一种方式来封装特定的SQL查询结果,使得这些结果看起来像一个独立的表。虽然视图在数据库中并不以实际的数据文件形式存在,但它允许用户以一种简化或定制的方式...

    国家开放大学 MySQL数据库应用 实验训练4:数据库系统维护

    MySQL 数据库应用实验训练 4:数据库系统维护 本实验训练旨在帮助学生理解视图和索引的概念和作用,掌握视图和索引的基本操作,并且了解它们在数据库系统维护中的应用。 一、视图的概念和作用 视图是一种基于基表...

    创建mysql数据库视图.pdf

    五、 MySQL 视图的应用场景 MySQL 视图的应用场景包括: * 数据报表:视图可以用于生成复杂的数据报表。 * 数据分析:视图可以用于数据分析和业务智能应用。 * 数据安全:视图可以用于限制用户访问的数据范围。 ...

    利用视图提高MySQL查找效率.doc

    即使原表被重构,基于视图的应用程序仍能正常工作,因为视图会根据新的表结构自动调整。 4. **数据安全性**:视图可以用于控制数据访问权限,确保敏感信息的安全。例如,可以创建只显示特定用户信息的视图,隐藏...

    MySQL数据库应用 实验训练4:视图和索引的构建与使用

    MySQL数据库中的视图和索引是两个非常重要的概念,它们对于数据管理、查询效率和数据安全性都有着显著的影响。...通过实践,学生将深化对MySQL数据库管理和优化的理解,提高其在实际场景中的应用能力。

    通过MSQL通过视图访问ORACLE中的表

    标题“通过MySQL通过视图访问ORACLE中的表”意味着我们将探讨如何利用MySQL的视图功能,来间接访问和操作Oracle数据库中的数据。视图是一种虚拟表,它不实际存储数据,而是根据用户定义的SQL查询动态生成结果集。这...

    mysql视图用户管理.pdf

    MySQL视图用户管理 MySQL视图用户管理是指在MySQL数据库中对视图的创建、修改和删除操作,并对视图的访问权限进行控制。本文将详细介绍MySQL视图用户管理的概念、实验要求、实验步骤和实验结果。 一、实验目的 ...

    MySQL数据库:使用NAVICAT工具创建和管理视图.pptx

    在MySQL数据库管理中,视图是一种非常重要的概念,它允许用户根据特定的需求组合多个表的数据,形成一个虚拟的表格,而无需直接操作底层的原始表。NAVICAT是一款流行的数据库管理和开发工具,支持多种数据库系统,...

    李海翔 - MySQL视图优化

    李海翔在2015 Oracle技术嘉年华(OTN)分会场上分享的“MySQL视图优化”中,详细讲解了视图优化的案例分析以及优化技术的相关知识。 首先,李海翔在讨论中指出,视图优化不仅仅是指在MySQL中对视图的优化,而是将...

    国家开放大学 形考答案 mysql 实验训练4:视图和索引的构建与使用

    本资源为 MySQL 实验训练第四课,主要涵盖视图和索引的构建与使用。实验目的是基于已有的汽车用品网上商城数据库 Shopping,理解视图和索引的概念和作用,练习视图的基本操作,包括视图的建立、视图的查询、视图的...

    25.11 MySQL 视图

    配合提供的资源,如`.eddx`、`.md`和`.pptx`文件,你可以更深入地学习MySQL视图的相关知识,包括具体的创建方法、使用示例、以及如何在实际项目中应用。 总的来说,MySQL视图是一个强大的工具,它可以帮助我们更好...

    简化查询的艺术:MySQL视图的高效应用

    MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛用于Web应用程序的后端数据存储。它基于结构化查询语言(SQL)来管理数据,并且是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈的一部分,这个...

    用power Designer生成mysql表关系视图的方法

    总结以上知识点,使用Power Designer生成MySQL表关系视图是一个涉及数据库管理、ODBC驱动配置以及Power Designer操作的应用过程。掌握这些知识点不仅有助于数据库管理员和开发人员进行高效的工作,也能够帮助相关IT...

    MySQL数据库应用从入门到精通_第2版

    MySQL提供了丰富的高级特性,如视图、存储过程、触发器和事件调度。这部分将阐述如何利用这些特性进行复杂业务逻辑的实现。同时,还将讲解如何使用PHP、Python、Java等编程语言与MySQL交互,实现数据库应用程序的...

    MySql视图创建更改销毁和显示

    ### MySQL视图创建、更改、销毁及显示 在MySQL数据库管理中,视图是一个非常重要的概念,它不仅可以简化复杂的查询操作,还能增强数据的安全性。本文档将围绕以下几个方面进行详细探讨:如何使用`CREATE VIEW`或`...

    MySQL数据库应用从入门到精通 第2版

    MySQL还提供了视图、存储过程、触发器、事件调度器等高级功能,这些特性可以简化复杂的查询逻辑,提升数据库的灵活性和可维护性。 通过阅读《MySQL数据库应用从入门到精通 第2版》,你将全面了解MySQL的基础知识,...

Global site tag (gtag.js) - Google Analytics