MySQL数据库对视图的操作方法

  

使用视图的原则:

1,视图名字唯一性

2,视图的创建个数不受限制,用户可以创建多个视图

3,用户创建视图,必须从数据库管理员得到权限。

4,视图可以嵌套,

5,一些数据库管理系统禁止用户在查询语句中使用order by子句。

一、创建实用表数据

创建学生表

mysql>, create  table  studenginfo (int sno (4),补零,sname  varchar (18), sex  ENUM(& # 39;男& # 39;& # 39;女& # 39;),not  null  default  & # 39;女& # 39;,address  varchar (48), default  & # 39;北京& # 39;,dno  int (3));   Query 好吧,,0,rows  affected  (0.07, sec)

创建学院表

create  table  recruitinfo (address  varchar (18), not  null, score  float  not  null, snum  int (3), not 零);   Query 好吧,,0,rows  affected (0.08,秒)   mysql>, show  create  table 部门\ G;   * * * * * * * * * * * * * * * * * * * * * * * * * * *,1只row  * * * * * * * * * * * * * * * * * * * * * * * * * * *   ,,,,,,表:部门   Create 表:,Create  TABLE “部门”,(   dno的才能,int (2), NOT 空,   “dname”,才能varchar (18), NOT 空,   “dnum”才能,int (3), NOT  NULL  DEFAULT  & # 39; 0 & # 39;   ),引擎=InnoDB  DEFAULT  CHARSET=utf8   1,row  set 拷贝;(0.00,sec)

为学生表创建索引

mysql>, create  index  name_index 提醒studentinfo  (sname);

二,视图:

视图作为查询数据的另外一种形式,利用视图,用户可以集中,简化和定制数据库,同时提供了安全保证

视图是从一个或过个表中导出的表,其结构和数据是建立在对标的查询基础之上的。就本质而言,视图是一张虚表。

视图创建语法:

create  view  & lt; view_name>, [column1 column2…],   select  & lt; column_name>,得到& lt; tb_name>;

其中[column1, column2,…)为可选项,缺省是子查询结果中的字段名,选择语句指明了视图中的字段机器数据。

强调:

1,视图创建后,只在数据字典中存放视图的定义,而其中的选择语句并不执行

2,只有当用户对视图进行操作时,才按照视图的定义将数据从基本表中取出。

创建视图:

1,创建一个与studentinfo相同信息的视图

mysql>, create  view  studentinfo_view  as  select  *,得到studentinfo;   select  *,得到studentinfo_view;

2,为视图创建视图

mysql>, create  view  boy_view  as  select  *,得到studentinfo_view  where 性=& # 39;男& # 39;;

3,为列创建视图并查看其信息

mysql>, create  view  nameaddress_view  as  select  sname, address 得到studentinfo;

4,创建与表具有不同字段名的视图

mysql>, create  view  New_view (boy_name boy_address), as  select  sname, address 得到studentinfo  where 性=& # 39;男& # 39;;   Query 好吧,,0,rows  affected  (0.00, sec)

5,利用视图简化表的复杂连接

创建一个关于学生信息表(studentinfo),招生信息表(Recruitinfo)和部门的关联。

sname, dname和dnum三个字段。

mysql>, create  view  join_view  as  select  sname, dname, score 得到studentinfo 年代,department  d, recruitinfo  r  where  s.address=r.address 以及s.dno=d.dno;   Query 好吧,,0,rows  affected (0.00,秒)   mysql>, select  *,得到join_view;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   |,sname ,,,, |, dname ,,,,,,,,,,,,, |, score  |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   |,张平,,,,,,|,汽车系,,,,,,,,,,,,,|,648.5 |   |,李山,,,,,,|,电子工程系,,,,,,,,,|,,,560 |   |,王彤,,,,,,|,汽车系,,,,,,,,,,,,,|,654.5 |   |,张伟,,,,,,|,计算机工程系,,,,,,,|,,,638 |   |,高守传,,,,|,机械工程,,,,,,,,,,,|,,,650 |   |,刘红,,,,,,|,工程物理系,,,,,,,,,|,629.5 |   |,张勇,,,,,,|,应用数学系,,,,,,,,,|,,,625 |   |,刘晓,,,,,,|,电子工程系,,,,,,,,,|,,,650 |   |,吴军,,,,,,|,电子工程系,,,,,,,,,|,,,631 |   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

MySQL数据库对视图的操作方法