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)); } ?> |
举一反三
根据本实例,读者可以:
实现多表之间的嵌套查询。 实现多表之间相同信息的提取
转载于:https://www.cnblogs.com/lixiaozhe/articles/3060891.html
MySQL视图的应用相关推荐
- 【数据库优化专题】MySQL视图优化(一)
本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家--李海翔所著的MySQL视图优化系列文章.以下是第一部分的内容,未完部分敬请关注后续更新. 专家简介 李海翔 网名:那海蓝蓝 ...
- mysql视图登录_mysql视图
mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...
- mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...
我不认为有一种标准方式,但这种方法似乎值得尝试. 想法是为视图动态生成唯一的"id"值(类似于rownum).来自Create a view with column num_row ...
- 1、MySQL视图是什么?
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中.行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的. 数据库中 ...
- mysql 视图操作和存储过程
1.mysql 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图.这 ...
- MYSQL视图用户管理
MYSQL视图 文章目录 MYSQL视图 1. 基本使用 2. 视图规则和限制 用户管理 1. 用户 2. 数据库的权限 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列 ...
- mysql 视图怎么调用方法_mysql 视图的使用
mysql视图的作用(详细) 测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用 ...
- mysql视图实现的_mysql视图是什么?怎么实现?
mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...
- mysql 视图 数据相加_MySQL
查看安装路径 ps -ef|grep mysql 1,配置linux虚拟机,修改IP ????? vim /etc/sysconfig/network-scripts/ifcfg-eth0 2,配置完 ...
- mysql 视图 教程_MySQL视图简介及基本操作教程
前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...
最新文章
- 管理表空间和数据文件——使用OMF方式管理表空间
- SAS (Serial Attached SCSI) 技术详解
- 中plot 函数中字体大小_Excel中的VLOOKUP函数
- java+arrayblockquene_java集合(五)Queue集合之ArrayBlockingQueue 详解
- pytorch教程龙曲良01-05
- C语言变长数组data[0]【总结】
- Oracle入门(四)之查询基本信息
- 头像和Karma汽车
- 信息学奥赛一本通C++语言——1024:保留3位小数的浮点数
- 制作和unity调用动态链接库dll文件
- 国庆节前梳理一下需要自己干的工作
- ftk学习记(进度条篇)
- 使用Python防止SQL注入攻击
- win10 wifi连接不上服务器未响应,Win10连不上WiFi怎么办?Win10连不上WiFi解决方法介绍...
- 高考数学知识点:向量压轴题秒杀神器-中点转化式
- 学游戏设计好就业吗?有“钱”途吗?
- 由于无法验证发布者,Windows已经阻止此软件
- 北京房价当日报20141013
- word/ppt中如何插入11以上带圆圈的数字序号
- 动力锂电池-二阶RC模型等效电路-RLS参数辨识-Simulink
热门文章
- python编辑器_资深程序员:学Python我推荐你用这几款编辑器
- Java高级语法笔记-库的使用(jar)
- 对比 | Python中超级好用的“列表解析式”、“字典解析式”、“集合解析式”
- java setpriority_Java TaskEntity.setPriority方法代碼示例
- 华为云牵手同舟共济伙伴 持续发力构建云核心生态圈
- 拷贝带隐藏目录的所有文件 到另外一个目录指令
- python替换文件内容_Python实现替换文件中指定内容的方法
- c/c++ 求字符数组长度(非所占内存大小)
- 【C语言笔记进阶篇】第二章:字符串函数和内存函数
- 3-2:HTTP协议之URI(URL)和HTTP基本概念及其特征