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

举一反三

根据本实例,读者可以:

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

作者: Sjolzy | Google+
地址: http://sjolzy.cn/MySQL-Application-of-the-view.html

转载于:https://www.cnblogs.com/lixiaozhe/articles/3060891.html

MySQL视图的应用相关推荐

  1. 【数据库优化专题】MySQL视图优化(一)

    本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家--李海翔所著的MySQL视图优化系列文章.以下是第一部分的内容,未完部分敬请关注后续更新. 专家简介 李海翔 网名:那海蓝蓝 ...

  2. mysql视图登录_mysql视图

    mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...

  3. mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...

    我不认为有一种标准方式,但这种方法似乎值得尝试. 想法是为视图动态生成唯一的"id"值(类似于rownum).来自Create a view with column num_row ...

  4. 1、MySQL视图是什么?

    MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中.行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的. 数据库中 ...

  5. mysql 视图操作和存储过程

    1.mysql 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图.这 ...

  6. MYSQL视图用户管理

    MYSQL视图 文章目录 MYSQL视图 1. 基本使用 2. 视图规则和限制 用户管理 1. 用户 2. 数据库的权限 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列 ...

  7. mysql 视图怎么调用方法_mysql 视图的使用

    mysql视图的作用(详细) 测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用 ...

  8. mysql视图实现的_mysql视图是什么?怎么实现?

    mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...

  9. mysql 视图 数据相加_MySQL

    查看安装路径 ps -ef|grep mysql 1,配置linux虚拟机,修改IP ????? vim /etc/sysconfig/network-scripts/ifcfg-eth0 2,配置完 ...

  10. mysql 视图 教程_MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...

最新文章

  1. 管理表空间和数据文件——使用OMF方式管理表空间
  2. SAS (Serial Attached SCSI) 技术详解
  3. 中plot 函数中字体大小_Excel中的VLOOKUP函数
  4. java+arrayblockquene_java集合(五)Queue集合之ArrayBlockingQueue 详解
  5. pytorch教程龙曲良01-05
  6. C语言变长数组data[0]【总结】
  7. Oracle入门(四)之查询基本信息
  8. 头像和Karma汽车
  9. 信息学奥赛一本通C++语言——1024:保留3位小数的浮点数
  10. 制作和unity调用动态链接库dll文件
  11. 国庆节前梳理一下需要自己干的工作
  12. ftk学习记(进度条篇)
  13. 使用Python防止SQL注入攻击
  14. win10 wifi连接不上服务器未响应,Win10连不上WiFi怎么办?Win10连不上WiFi解决方法介绍...
  15. 高考数学知识点:向量压轴题秒杀神器-中点转化式
  16. 学游戏设计好就业吗?有“钱”途吗?
  17. 由于无法验证发布者,Windows已经阻止此软件
  18. 北京房价当日报20141013
  19. word/ppt中如何插入11以上带圆圈的数字序号
  20. 动力锂电池-二阶RC模型等效电路-RLS参数辨识-Simulink

热门文章

  1. python编辑器_资深程序员:学Python我推荐你用这几款编辑器
  2. Java高级语法笔记-库的使用(jar)
  3. 对比 | Python中超级好用的“列表解析式”、“字典解析式”、“集合解析式”
  4. java setpriority_Java TaskEntity.setPriority方法代碼示例
  5. 华为云牵手同舟共济伙伴 持续发力构建云核心生态圈
  6. 拷贝带隐藏目录的所有文件 到另外一个目录指令
  7. python替换文件内容_Python实现替换文件中指定内容的方法
  8. c/c++ 求字符数组长度(非所占内存大小)
  9. 【C语言笔记进阶篇】第二章:字符串函数和内存函数
  10. 3-2:HTTP协议之URI(URL)和HTTP基本概念及其特征