下面一起来了解下MySQL数据库对视图的操作方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL数据库对视图的操作方法这篇短内容是你想要的。
成都创新互联公司专业提供服务器主机托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买服务器主机托管服务,并享受7*24小时金牌售后服务。使用视图的原则:
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,...]为可选项,缺省是子查询结果中的字段名,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语句删除视图时,删除的也只是视图的定义,对实际表中的数据没有影响。
看完MySQL数据库对视图的操作方法这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。