设为首页 收藏本站
查看: 777|回复: 0

[经验分享] 7、MySQL数据库的视图操作

[复制链接]

尚未签到

发表于 2018-10-7 08:37:03 | 显示全部楼层 |阅读模式
  上一张内容在结尾阶段引入了MySQL数据库的视图概念,本章将纤细介绍视图的集中用法。在创建视图之前先创建学生表,学院表和学员信息表,通过使用视图对着三张表的操作,使我们对视图有一个基本的认识和了解。
  使用视图的原则:
  1、视图名字唯一性
  2、视图的创建个数不受限制,用户可以创建多个视图
  3、用户创建视图,必须从数据库管理员得到权限。
  4、视图可以嵌套,
  5、一些数据库管理系统禁止用户在查询语句中使用order by子句。
  一、创建实用表数据
  创建学生表
mysql> create table studenginfo(sno int(4) zerofill,sname varchar(18),sex ENUM('男','女') not null default '女',address varchar(48) default '北京',dno int(3));  
Query OK, 0 rows affected (0.07 sec)
  创建学院表
create table recruitinfo(address varchar(18) not null,score float not null,snum int(3) not null);  
Query OK, 0 rows affected (0.08 sec)
  
mysql> show create table department\G;
  
*************************** 1. row ***************************
  
       Table: department
  
Create Table: CREATE TABLE `department` (
  
  `dno` int(2) NOT NULL,
  
  `dname` varchar(18) NOT NULL,
  
  `dnum` int(3) NOT NULL DEFAULT '0'
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  
1 row in set (0.00 sec)
  为学生表创建索引
mysql> create index name_index on studentinfo (sname);  二、视图:
  视图作为查询数据的另外一种形式,利用视图,用户可以集中、简化和定制数据库,同时提供了安全保证
  视图是从一个或过个表中导出的表,其结构和数据是建立在对标的查询基础之上的。就本质而言,视图是一张虚表。
  视图创建语法:
create view  [column1,column2...] as  
select  from ;
  其中[column1,column2,...]为可选项,缺省是子查询结果中的字段名,select语句指明了视图中的字段机器数据。
  强调:
  1、视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行
  2、只有当用户对视图进行操作时,才按照视图的定义将数据从基本表中取出。
  创建视图:
  1、创建一个与studentinfo相同信息的视图
mysql> create view studentinfo_view as select * from studentinfo;  
select * from studentinfo_view;
  2、为视图创建视图
mysql> create view boy_view as select * from studentinfo_view where sex='男';  3、为列创建视图并查看其信息
mysql> create view nameaddress_view as select sname,address from studentinfo;  4、创建与表具有不同字段名的视图
mysql> create view New_view(boy_name,boy_address) as select sname,address from studentinfo where sex='男';  
Query OK, 0 rows affected (0.00 sec)
  5、利用视图简化表的复杂连接
  创建一个关于学生信息表(studentinfo)、招生信息表(Recruitinfo)和Department的关联。
  sname、dname和dnum三个字段。
mysql> create view join_view as select sname,dname,score from studentinfo s,department d,recruitinfo r where s.address=r.address and s.dno=d.dno;  
Query OK, 0 rows affected (0.00 sec)
  
mysql> select * from join_view;
  
+-----------+--------------------+-------+
  
| sname     | dname              | score |
  
+-----------+--------------------+-------+
  
| 张平      | 汽车系             | 648.5 |
  
| 李山      | 电子工程系         |   560 |
  
| 王彤      | 汽车系             | 654.5 |
  
| 张伟      | 计算机工程系       |   638 |
  
| 高守传    | 机械工程           |   650 |
  
| 刘红      | 工程物理系         | 629.5 |
  
| 张勇      | 应用数学系         |   625 |
  
| 刘晓      | 电子工程系         |   650 |
  
| 吴军      | 电子工程系         |   631 |
  
| 张大山    | 材料工程系         |   635 |
  
+-----------+--------------------+-------+
  
10 rows in set (0.03 sec)
  6、视图简化复杂查询的过程
  6.1 给予学生表,创建boys_view视图,包含所有男同学信息
mysql> create view boys_view as select * from studentinfo where sex='男';  给予recruitinfo表,创建视图score_view,包含录取分数高于630的所有学生的信息
mysql> create view boyscore_view as select * from score_view where sno in (select sno from boys_view);  
mysql> select * from boyscore_view;
  
+------+-----------+-----+---------+------+
  
| sno  | sname     | sex | address | dno  |
  
+------+-----------+-----+---------+------+
  
| 0005 | 高守传    | 男  | 山东    |    3 |
  
| 0004 | 张伟      | 男  | 浙江    |    1 |
  
| 0009 | 吴军      | 男  | 山西    |    4 |
  
| 0010 | 张大山    | 男  | 陕西    |    7 |
  
+------+-----------+-----+---------+------+
  
4 rows in set (0.00 sec)
  
mysql> create view result_view (sname,dname) as select boyscore_view.sname,department.dname from boyscore_view,department where boyscore_view.dno=department.dno;
  
Query OK, 0 rows affected (0.00 sec)
  删除视图
  语法:drop view view_name
  drop view studentinfo_view
  注意:视图在物理上是不存在的,只是一个查询结果,是一个被存储的查询。create view语句只是保存了视图的定义,所以在使用drop view语句删除视图时,删除的也只是视图的定义,对实际表中的数据没有影响。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614151-1-1.html 上篇帖子: MySQL 安全配置 下篇帖子: mysql故障master and slave have equal MySQL server UU
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表