文章目录

一、视图的基本使用1.创建视图2.修改了视图,对基表数据有影响3.修改了基表,对视图有影响4.删除视图

二、视图规则和限制

一、视图的基本使用

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

1.创建视图

语法:

create view 视图名 as select语句;

案例:

mysql> create view myview as select ename,dname from emp,dept where emp.deptno=dept.deptno;

Query OK, 0 rows affected (0.01 sec)

我们创建一个视图,其实就是在数据库中创建了一个表

mysql> select * from myview order by dname;

+--------+------------+

| ename | dname |

+--------+------------+

| CLARK | ACCOUNTING |

| MILLER | ACCOUNTING |

| KING | ACCOUNTING |

| JONES | RESEARCH |

| SMITH | RESEARCH |

| ADAMS | RESEARCH |

| SCOTT | RESEARCH |

| FORD | RESEARCH |

| TURNER | SALES |

| MARTIN | SALES |

| ALLEN | SALES |

| JAMES | SALES |

| BLAKE | SALES |

| WARD | SALES |

+--------+------------+

14 rows in set (0.00 sec)

2.修改了视图,对基表数据有影响

在视图中将ename为’CLARK’的ename改为TEST,然后进行查询

select emp.ename,dept.dname,dept.deptno from emp,dept where emp.deptno=dept.deptno order by dname;

// 将员工为CLACK的ename改为TEST

update myview set ename='TEST' where ename= 'CLARK';

// 查询ename为clack的员工

select * from emp where ename='CLARK';

// 查询ename为TEST的员工

select * from emp where ename='TEST';

3.修改了基表,对视图有影响

将ename为JAMES的员工的部门号改为10

select emp.ename,dept.dname,dept.deptno from emp,dept where emp.deptno=dept.deptno order by dname;

// 修改基表

update emp set deptno=10 where ename='JAMES';

// 视图中的数据也发生了变化

mysql> select * from myview where ename='JAMES';

4.删除视图

drop view 视图名;

删除视图之后,对应创建的表也删除了

二、视图规则和限制

与表一样,必须唯一命名(不能出现同名视图或表名)

创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响

视图不能添加索引,也不能有关联的触发器或者默认值

视图可以提高安全性,必须具有足够的访问权限

order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖

视图可以和表一起使用

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: