MySQL学习笔记(1)视图操作
来源:互联网 发布:python snmp cisco 编辑:程序博客网 时间:2024/05/24 04:30
为什么使用视图
封装查询
数据库虽然可以存储海量数据,但是在数据表设计上却不可能为每种关系创建数据表。例如,对于学生表,存储了学生信息,学生的属性包括学号、姓名、年龄、家庭地址等信息;而学生成绩表只存储了学生学号、科目、成绩等信息。现需获得学生姓名及成绩信息,那么就需要创建一个关系,该关系需要包含学生姓名、科目、成绩。但为该关系创建一个新的数据表,并利用实际信息进行填充,以备查询使用,是不适宜的。因为这种做法很明显的造成了数据库中数据的大量冗余。视图则是解决该问题的最佳策略。因为视图可以存储查询定义(或者说关系运算),那么,一旦使用视图存储了查询定义,就如同存储了一个新的关系。用户可以直接对视图中所存储的关系进行各种操作,就如同面对的是真实的数据表。这就像mybatis在关联查询时使用中间表的概念是一样的。
灵活的控制安全性
一个数据表可能含有很多列。但是这些列的信息,对于不同角色的用户,可访问的权限有可能不同。例如,在员工表中,可能存在着员工工号、员工姓名、员工年龄、员工职位、员工家庭住址、员工社会关系等信息。对于普通用户(例如普通员工),有可能需要访问员工表,来查看某个工号的员工的姓名、职位等信息,而不允许查看家庭住址、社会关系等信息;对于高级用户(例如人事经理),则需要关注所有信息。那么,这就涉及数据表的安全性。利用视图可以灵活地实现这一策略。例如,可以首先创建名为vw_employees的视图。该视图的查询定义为,选择员工表中员工工号、员工姓名、员工职位等3列。这相当于在员工关系中,进行投影运算,即选择员工工号、员工姓名、员工职位这3个属性,形成新的关系,如图11-2所示
图11-2 利用投影运算获得普通用户使用的视图vw_employees
同样,对于高级用户,可以创建名为vw_employees_hr的视图,该视图选择员工表中所有列,如图11-3所示。
视图的操作
创建视图
Mysql创建两张表,学生表和课程表
如果有需要要求我们列出每个学生所学修的课程名称。当然这个需求比较简单,在复杂的查询中视图的作用很更加明显
创建视图:
create view new_stu(id,NAME,gend) as select s.id,s.`name`,s.gender from student s;
视图创建后,数据直接就存放在视图中,实际上视图就是一张虚拟的表。实际上我在想,视图是不是也提升了性能。查询视图
查看视图的基本信息,DESC
此处大部分信息显示为NULL,更加说明了视图只是一张虚拟表
删除视图用drop命令,更新视图可以之间删除重新创建。
0 0
- MySQL学习笔记(1)视图操作
- mysql学习笔记之四(视图)
- sql学习笔记(23)-----------MySQL视图
- MySQL学习笔记5(视图)
- MYSQL学习笔记(十八)使用视图
- MySQL学习笔记14:视图
- MySQL学习笔记14:视图
- Mysql学习笔记六,视图
- 《MySQL必知必会学习笔记》:视图
- MySQL学习笔记—视图
- MYSQL视图的学习笔记
- MySQL学习笔记 4 -触发器、MySQL视图
- 《MySQL入门很简单》学习笔记(8)之第8章视图(关键词:数据库/MySQL/创建视图/修改视图/查看视图/删除视图)
- VC学习笔记2文档视图操作
- Mysql学习笔记十六——视图
- 学习笔记PHP(1)之mysql操作
- java-mysql数据库基本操作学习笔记(1)
- MySQL学习笔记1基本操作
- android自定义控件之中间是斜线的占比条
- FXBlurView模糊图片处理
- a20 nand更换emmc 版本sdk修改记录
- CS231n winter 2016 学习笔记lecture 1
- 摇杆的简单使用 Unity3d
- MySQL学习笔记(1)视图操作
- 设置Office 365移动设备管理MDM服务——创建APNs证书
- java string 字符串替换:replace
- xmpp协议框架包介绍:org.xmpp.packet.Packet+JID+PacketInterceptor+Session
- 四年IT'TIME已过,实习、试用、流走、独立项目、参与创业都经历了,可以总结一下了,重燃学习深造的动力!
- ASP.NET MVC 简单的分页思想与实现
- 关于python
- C#.net 读写共享文件夹
- c# .net 监听磁盘映射 变更,及文件夹权限2