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   字段