mysql学生成绩视图_mysql的视图

# 转载请联系

假如你在管理着学生系统,有两张这样的表。

mysql> select * fromstudent;+-----+-----------+--------+-------+--------------+--------------------+

| id | name | gender | birth | department | address |

+-----+-----------+--------+-------+--------------+--------------------+

| 901 | 张老大 | 男 | 1985 | 计算机系 | 北京市海淀区 |

| 902 | 张老二 | 男 | 1986 | 中文系 | 北京市昌平区 |

| 903 | 张三 | 女 | 1990 | 中文系 | 湖南省永州市 |

| 904 | 李四 | 男 | 1990 | 英语系 | 辽宁省阜新市 |

| 905 | 王五 | 女 | 1991 | 英语系 | 福建省厦门市 |

| 906 | 王六 | 男 | 1988 | 计算机系 | 湖南省衡阳市 |

+-----+-----------+--------+-------+--------------+--------------------+

6 rows in set (0.00sec)

mysql> select * fromscore;+----+--------+-----------+-------+

| id | stu_id | c_name | grade |

+----+--------+-----------+-------+

| 1 | 901 | 计算机 | 98 |

| 2 | 901 | 英语 | 80 |

| 3 | 902 | 计算机 | 65 |

| 4 | 902 | 中文 | 88 |

| 5 | 903 | 中文 | 95 |

| 6 | 904 | 计算机 | 70 |

| 7 | 904 | 英语 | 92 |

| 8 | 905 | 英语 | 94 |

| 9 | 906 | 计算机 | 90 |

| 10 | 906 | 英语 | 85 |

+----+--------+-----------+-------+

10 rows in set (0.00 sec)

一张是学生信息表,一张是成绩表。由于要经常查看或处理某一个学生的全部信息,必须要把这两张表连接在一起。但是每一次查看或处理都要用SQL语句把两张表连接在一起,SQL语句又这么长,新建一个表包含这两个内容吧,又浪费空间。这时候视图就有用了。

视图是什么?

视图就是一个能够把复杂SQL语句的功能封装起来的一个虚表。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

视图是对若干张基本表的引用,一张虚表,只查询语句执行结果的字段类型和约束,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);

方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;

创建视图

create view 视图名称 as select语句 # 为了方便辨认,视图名称通常用v_开头

示例:

mysql> create view v_studentinfo as select student.*,c_name,grade from student inner join score on student.id=score.stu_id;

查看视图

mysql> select * fromv_studentinfo;+-----+-----------+--------+-------+--------------+--------------------+-----------+-------+

| id | name | gender | birth | department | address | c_name | grade |

+-----+-----------+--------+-------+--------------+--------------------+-----------+-------+

| 901 | 张老大 | 男 | 1985 | 计算机系 | 北京市海淀区 | 计算机 | 98 |

| 901 | 张老大 | 男 | 1985 | 计算机系 | 北京市海淀区 | 英语 | 80 |

| 902 | 张老二 | 男 | 1986 | 中文系 | 北京市昌平区 | 计算机 | 65 |

| 902 | 张老二 | 男 | 1986 | 中文系 | 北京市昌平区 | 中文 | 88 |

| 903 | 张三 | 女 | 1990 | 中文系 | 湖南省永州市 | 中文 | 95 |

| 904 | 李四 | 男 | 1990 | 英语系 | 辽宁省阜新市 | 计算机 | 70 |

| 904 | 李四 | 男 | 1990 | 英语系 | 辽宁省阜新市 | 英语 | 92 |

| 905 | 王五 | 女 | 1991 | 英语系 | 福建省厦门市 | 英语 | 94 |

| 906 | 王六 | 男 | 1988 | 计算机系 | 湖南省衡阳市 | 计算机 | 90 |

| 906 | 王六 | 男 | 1988 | 计算机系 | 湖南省衡阳市 | 英语 | 85 |

+-----+-----------+--------+-------+--------------+--------------------+-----------+-------+

删除视图

drop view视图名称;drop view v_studentinfo;

视图的优点

1. 简化查询操作

对于复杂的查询,往往是有多个数据表进行关联查询而得到,对于这个复杂的查询结果保存为一个视图,便于下一次查询时简化查询操作。

2. 逻辑上的独立性,屏蔽了真实表结构更改带来的影响

视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

3. 视图能够对机密数据提供一定安全保护

因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户。

视图的缺点

1. 性能差

对视图(select)的查询最终转换为对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,也会花费一定时间。

2. 额外增加数据库的复杂度

假如有50张基表,如果有特定需要,可能会新建50张视图,这样数据库就太多表了,太复杂了。

说在后面

视图的确有很多优点,但是因为性能差这一个致命缺点,所以现在用的特别少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值