mysql数据库学习笔记五--视图

视图
创建视图
在创建试图时,当前用户必须具有创建视图的权限,同时应该具有查询涉及列的select权限。
select creat_view_priv from mysql.user where user=‘root’;
当用户具有创建视图的权限,可以进行创建视图的操作
create [or replace] [algorithm={undefined | merge | temptable}] view [db_name.]view_name [(column_list)] as select_statement [with [cascaded | local] check option];

create表示创建视图的关键字
or replace如果给定了此子句,表示该语句能够替换己有视图
algorithm为可选参数表示视图选择的算法
undefinend表示mysql将自动选择使用的算法
merge表示将使用视图的语句与视图含义合并起来,使视图定义的某一部分取代语句的对应部分
temptable表示将视图的结果存入临时表,然后使用临时表执行语句
view_name表示要创建视图的名称
column_list为可选参数,表示属性清单,指定了视图中的各个属性名。在默认情况下,它与select语句中查询的属性相同。
as表示指定视图要执行的操作
select_statement表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中
with check option为可选参数,表示创建视时要保证在该视图的权限范围之内
cascaded为可选参数,表示创建视图时需要满足与该视图有关的所有视图和表的条件,该参数为默认值
local为可选参数,表示创建视图时只要满足与该视图本身的定义条件即可

在单表上创建视图
例:create view view_emp(id,name,sex,age,department) as select id,name,sex,age,department from emp;
查看视图
select * from view_emp;
在多表上创建视图
create view view_emp_detail (id,name,sex,age,department,pos,experence) as select a.id,a.name,a.sex,a.age,a.department,b.pos,b.experence from emp a,emp_detail b where a.id=b.id;
查看视图
select * from view_emp_detail;


查看视图
\G的作用是将查到的结构旋转90度变成纵向
\g的作用是分号
1.describe 视图名;=desc 视图名;
2.show table status like ‘视图名’;一般用\G
3.show create view 视图名;一般用\G
修改视图(注意视图权限)
1.create or replace修改视图
create [or replace] [algorithm={undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local | check optinon]];
例如:create or replace view view_emp_detail(id,name,sex) as select id,name,sex from emp;
2.alter修改视图
alter [algorithm={undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local | check optinon]];
例如:alter view view_emp;
更新视图
1.update更新视图
update 视图名 set 字段名一=值一 [,字段名二=值二,....] [where 表达式];
例如:update view_emp_detail set sex='女' where name='赵六';
2.insert更新视图
insert into 视图名 values (值1,值2,......);
3.delete更新视图
delete from 表名 [where 条件表达式];
删除视图
drop view [if exists] 视图名[,视图名1,...] [restrict | cascade];
例如: drop view if exists view_emp_detail;

你可能感兴趣的:(数据库学习,笔记,mysql,mysql,学习笔记)