mysql-视图
时间:2021-07-01 10:21:17
帮助过:16人阅读
create or replace view view_name
[(field1_name,field2_name, ...)] as select_statement
where ...
)
创建视图:
create or replace view temp as select student.name
as ‘姓名‘,score.math
+score.chinese
+score.english
+score.mul
as ‘总成绩‘ from student,score
where student.id
=score.s_id;
create or replace view temp (姓名,总分)
as select student.name,score.math
+score.chinese
+score.english
+score.mul
from student,score
where student.id
=score.s_id;
删除视图:
drop view temp_name;
修改视图:
alter view view_name (field1_name,field2_name ... )
as select field1_name,field2_name ...
from tb_name;
更新视图:
update view_name
set field_name
=value
where ...
删除数据:
delete from view_name
where ...
怎么判断一个表时虚表还是实表:
show table status
like ‘table_name/view_name‘; status(状态) 虚表的所有属性都是空,而实表都有所有属性。
增加或删除视图中的字段都可以直接创建一个新的视图去替换原来的视图。用创建视图的语法。
不能直接向图中插入数据,插入数据都只能直接操作实表。
algorithm(算法) merge(合并) temptable(临时表) undefined(未定义):
对于merge ,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
对于temptable,视图的结果将被置于临时表中,然后使用它执行语句。
对于undefined,mysql自己选择所要使用的算法。如果可能,它倾向于merge而不是temptable,这是因为merge通常更有效,而且如果使用了临时表,视图是不可更新的。
当视图中包含如下内容的时候,视图的更新操作将不能被执行
(1)视图中包含基本中被定义为非空的列
(2)定义视图的SELECT语句后的字段列表中使用了数学表达式
(3)定义视图的SELECT语句后的字段列表中使用聚合函数
(4)定义视图的SELECT语句中使用了DISTINCT、
UNION、
TOP、
GROUP BY 、HAVING子句
mysql-视图
标签:define math table 判断 student 需要 合并 alter 字段