MySql 视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视
图的数据变化会影响到基表,基表的数据变化也会影响到视图

        

1.创建视图
create view v_ename_dname as select ename, dname
from EMP, DEPT where EMP.deptno=DEPT.deptno;

2.查看视图

当然我们可以使用show full tables来查看哪些是表哪些是视图

3.删除视图
drop view 视图名;

4.视图的规则和限制
1.与表一样,必须唯一命名(不能出现同名视图或表名)
2.创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响
3.视图不能添加索引,也不能有关联的触发器或者默认值
4.视图可以提高安全性,必须具有足够的访问权限
5.order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图
中的 order by 将被覆盖
6.视图可以和表一起使用
一、实验目的 1、掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言查询语句的理解。 2、掌握用查询分析器和视图创建向导的方法创建视图。 3、学会使用SQL数据控制语句来进行授权控制和权限回收。 4、了解高级语言中用SQL语句来连接和访问数据库的方法 二、实验环境: Microsoft Windows 2000操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版,Visual Basic 6.0开发工具。 三、实验内容、步骤、结果和实验过程中出现的问题: 1>内容: 基于实验一建立的“图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL语句。具体实验内容如下: 1、视图定义与查询实验 ① 在“图书读者数据库”(Book_Reader_DB)中,先用视图创建向导的方法创建视图View1和View2。其中View1包括书号、书名、定价、数量等属性。View2包括读者号、读者姓名、单位、电话、书号、书名、借阅日期、应归还日期、实际还书日期和过期天数等属性,其条件是所有借书已过期的读者和借书情况(假定借阅期为60天); ② 根据上述定义的视图,在查询分析器中用语句完成如下查询: A:通过视图View1查询书库中藏书的情况; B:通过视图View2查询借书过期的读者和借书情况及罚款金额(假定超期罚款标准为1元/天); ③ 在查询分析器中用SQL语句来创建视图View3和视图View4,视图View3的要求与View1相同,视图View4与视图View2的条件相同。 2、数据控制实验 ① 假定系统有U1、U2、U3 、U4、U5、U6六个登录用户,试将查询图书表的权限由管理员授权给U1, 以U1用户的身份重新登录系统后,再把权限授予给U2; ② 系统管理员把插入数据给借阅表的权限授予给U3; ③ 系统管理员把添加图书数据的权限授予给U4; ④ 系统管理员把修改读者数据信息的权限授予给U5; ⑤ 将U1访问图书表的权限收回; 3、嵌入式SQL语言实验 ① 用VB建立一个工程,在对话框Form1上添加一些访问数据库和显示数据的控件,并通过ODBC建立与数据库Book_Reader_DB的连接; ② 在Form1上添加一个按钮Button1,对Button1添加一个点击事件(双击按钮Button1即可进入源代码输入界面),在事件上添加一些访问数据库中表对象或视图对象的SQL语句,运行工程,即可将满足要求的记录显示在界面的显示数据的控件上。换用不同的SQL语句,检查其执行结果。
### MySQL 视图的创建与使用 #### 创建视图MySQL 中,可以通过 `CREATE VIEW` 语句来定义一个新的视图视图本质上是一个虚拟表,其内容由查询动态生成[^1]。 ```sql CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; ``` 例如,在名为 `student` 的表上创建一个简单的视图: ```sql CREATE VIEW student_view AS SELECT * FROM student; ``` 如果需要更复杂的逻辑,可以指定多个表之间的连接条件以及筛选字段。比如,创建一个包含学生姓名 (`sname`)、课程名称 (`cname`) 和成绩 (`grade`) 的视图: ```sql CREATE VIEW student_view (sname, cname, grade) AS SELECT s.sname, c.cname, sc.grade FROM student s JOIN course c ON s.sno = sc.sno JOIN score sc ON c.cno = sc.cno; ``` --- #### 查询视图数据 一旦视图被创建成功,就可以像操作普通表一样对其进行查询。以下是通过视图获取特定学生成绩的例子: ```sql SELECT * FROM student_view WHERE sname = '张三'; ``` 此查询会返回所有属于 “张三” 学生的相关记录及其关联的成绩信息[^2]。 --- #### 删除视图 若不再需要某个视图,则可通过以下命令将其删除: ```sql DROP VIEW IF EXISTS student_view; ``` 注意这里的 `IF EXISTS` 是为了避免因试图移除不存在的对象而导致错误发生。 --- #### 修改视图结构 当原有视图无法满足新的业务需求时,可利用 `ALTER VIEW` 来调整它的定义而不必先删掉它再重建新版本: 假设我们希望更改之前建立的那个复杂视图使其只显示三个核心要素——即学生的全名(`sname`)、所学科目称呼(`cname`)还有分数等级(`grade`)——那么执行如下SQL脚本即可完成更新动作: ```sql ALTER VIEW student_view (sname, cname, grade) AS SELECT s.sname, c.cname, sc.grade FROM student s JOIN course c USING(sno) JOIN score sc USING(cno); ``` 这里采用了稍微不同的写法(`USING()`),简化了原表达式的冗长部分同时保持功能不变. --- #### 更新视图中的基础表格数据 值得注意的是,虽然可以直接向某些类型的视图插入或者修改数据,但这取决于底层实际物理存储的设计模式;并不是所有的视图都支持这样的操作。对于那些允许DML(Data Manipulation Language)活动的视图来说,任何针对它们所做的变更最终都会反映回原始的数据源上去。 --- ### 总结 以上介绍了如何基于MySQL数据库管理系统构建并管理基本到高级别的视图对象。这些技术能够帮助开发者封装复杂的查询逻辑从而提高应用程序开发效率的同时也增强了系统的安全性和灵活性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值