七、MySQL视图语法基础

视图是从一个或多个表中导出来的表,是一种虚拟存在的表,并且表的结构和数据都依赖于基本表。通过视图可以看到基本表中的数据,也可以像操作基本表一样操作视图,进行增删改查。可以简化查询语句,具有更高的安全性,逻辑数据独立性。

视图管理

创建视图语法格式
CREATE [OR REPLACE] [ALGORITHM] = {UNDEFINED或者MERGE或者TEMPTABLE}
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED或者LOCAL] CHECK OPTION]
 
CREATE 创建视图的关键字
OR REPLACE 该字句表示若已存在视图,则可替换
ALGORITHM 表示视图选择的算法
UNDEFINED 表示MySQL将自动选择所要的算法
MERGE 表示将使用视图的语句与视图定义合并起来,是的视图定义的某一部分取代语句的对应部分
TEMPTABLE 表示将视图的结果存入临时表,然后用临时表执行语句
view_name 视图名称
column_list 属性清单,指定视图中各个属性的名,默认情况下,与select语句中查询的属性相同
SELECT_statement 一个完整的查询语句,表示从某个表或视图中查出某些符合条件的记录,并导入视图中
WITH CHECK OPTION 表示创建视图时要保证在该视图的权限范围内
CASCADED 表示创建视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值
LOCAL 表示创建该视图时,只要满足该视图本身定义的条件即可
在单表上创建视图
例一:现有student表(id,name,math,chinese),创建视图包含数学成绩,语文成绩,总成绩

create VIEW view_stu as select math,chinese from student;create or replace VIEW view_stu as select math,chinese,math+chinese from student;create or replace VIEW view_stu2(数学,语文,总分) as select math,chinese,math+chinese from student;
在多表上创建视图
例一:现有一stu_info表(id,class,address),id为学生编号,创建视图,包含编号,姓名,班级

create view stu_class (编号,姓名,班级)asselect student.id,student.name,stu_info.class from student,stu_info where student.id=stu_info.id;
查看视图

DESCRIBE关键字

DESCRIBE 视图名;  
或者  
DESC 视图名;  

SHOW TABLE STATUS语句

SHOW TABLE STATUS LIKE '视图名';

SHOW CREATE VIEW语句:查看视图创建语句

SHOW CREATE VIEW 视图名;
修改视图:修改视图的定义

CREATE OR REPLACE VIEW语句:重新创建一个视图覆盖前一个

例一:使用该语句修改view_stu视图
create or replace view view_stu as select * from student;

ALTER关键字

ALTER [ALGORITHM = {UNDEFINED或者MERGE或者TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH[CASCADED或者LOCAL] CHECK OPTION]
例一:使用ALTER修改视图
alter view view_stu as select chinese from student;
更新视图
  1. 使用UPDATE语句更新视图,实际修改了原表中的数据
--例一:更新view_stu视图中chinese子段对应的数据值,改为100
UPDATE view_stu SET chinese = 100;
  1. INSERT语句来更新视图
--例一:在原表中插入一条数据
insert into student values(null, 'lili',20,30);
  1. DELETE语句来更新视图
--例一:删除视图里的一条记录
delete from view_stu where chinese=30;

注意:以下情况不更新
1、视图中不包含基本表中表定义为非空的列
2、定义视图的SELECT语句后的字段列表中使用了数学表达式
3、在定义视图的SELECT语句后的字段列表中使用了聚合函数
4、在定义视图的SELECT语句中使用了DISTINCT,UNION,TOP,GROUP BY或HAVING字句

删除视图
DROP VIEW [IF EXISTS] view_name [,view_name1]...[RESTRICT或者CASCADE]l;
例一:删除view_stu视图
drop view view_stu;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值