我的MYSQL学习心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我的MYSQL学习心得(十一)视图我的MYSQL学习心得(一)简单语法
我的MYSQL学习心得(二)数据类型宽度
我的MYSQL学习心得(三)查看字段长度
我的MYSQL学习心得(四)数据类型
我的MYSQL学习心得(五)运算符
我的MYSQL学习心得(六)函数
我的MYSQL学习心得(七)查询
我的MYSQL学习心得(八)插入更新删除
我的MYSQL学习心得(九)索引
我的MYSQL学习心得(十)自定义存储过程和函数
我的MYSQL学习心得(十二)触发器
我的MYSQL学习心得(十三)权限管理
我的MYSQL学习心得(十四)备份和恢复
我的MYSQL学习心得(十五)日志
我的MYSQL学习心得(十六)优化
我的MYSQL学习心得(十七)复制
这一篇《我的MYSQL学习心得(十一)》将会讲解MYSQL的视图
使用视图的理由是什么?
1、安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据。
之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。
2、查询性能提高
3、有灵活性的功能需求后,需要改动表的结构而导致工作量比较大,那么可以使用虚拟表的形式达到少修改的效果。
这是在实际开发中比较有用的
4、复杂的查询需求,可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。
创建视图
创建视图的语法
CREATE[OR REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL]CHECK OPTION]
其中,CREATE:表示新建视图;
REPLACE:表示替换已有视图
ALGORITHM :表示视图选择算法
view_name :视图名
column_list:属性列
select_statement:表示select语句
[WITH [CASCADED | LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内
可选的ALGORITHM子句是对标准SQL的MySQL扩展。
ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。
如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL 处理视图的方式。
对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,
这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
LOCAL和CASCADED为可选参数,决定了检查测试的范围,默认值为CASCADED。
脚本视图的数据来自于两个表
CREATE TABLE student (stuno INT ,stuname NVARCHAR(60))
CREATE TABLE stuinfo (stuno INT ,class NVARCHAR(60),city NVARCHAR(60))
INSERT INTO student VALUES(1,'wanglin'),(2,'gaoli'),(3,'zhanghai')
INSERT INTO stuinfo
VALUES(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong')
-- 创建视图
CREATE VIEW stu_class(id,NAME,glass) AS SELECT
student.`stuno`,student.`stuname`,stuinfo.`class`
FROM student ,stuinfo WHERE student.`stuno`=stuinfo.`stuno`
SELECT*FROM stu_class
查看视图
查看视图必须要有SHOW VIEW权限
查看视图的方法包括:DESCRIBE、SHOW TABLE STATUS、SHOW CREATE VIEW DESCRIBE查看视图基本信息
DESCRIBE 视图名
DESCRIBE stu_class
结果显示了视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外
信息
DESCRIBE一般都简写成DESC
SHOW TABLE STATUS语句查看查看视图基本信息
查看视图的信息可以通过SHOW TABLE STATUS的方法
SHOW TABLE STATUS LIKE'stu_class'
Name Engine Version Row_format Rows Avg_row_length
Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum
Create_options Comment
--------- ------ ------- ---------- ------ --------------
----------- --------------- ------------ --------- --------------
----------- ----------- ---------- --------- --------
-------------- -------
stu_class (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) VIEW
COMMENT的值为VIEW说明该表为视图,其他的信息为NULL说明这是一个虚表,如果
是基表那么会基表的信息,这是基表和视图的区别