MySQL视图

目录

一、什么是视图

二、为什么需要视图

三、视图的作用和优点

1、作用:

2、优点:

四、视图使用规则

五、创建视图

六、修改视图

七、删除视图


一、什么是视图

        视图通过以定制的方式显示来自一个或多个表的数据

        视图是一种数据库对象,用户可以像查询普通表一样查询视图

        视图内其实没有存储任何数据,它只是对表的一个查询

        视图的定义保存在数据字典内,创建视图所基于对表称为“基表”

二、为什么需要视图

        例如经常要对emp和dept表进行连接查询,每次都要做表的连接,写同样的一串语句,同时由于工资列队数据比较敏感,对外要求不可见。对这样的问题就可以通过视图来解决。

三、视图的作用和优点

1、作用:

  • 控制安全

  • 保存查询数据

2、优点:

  • 提供了灵活一致级别安全性。

  • 隐藏了数据的复杂性

  • 简化了用户的SQL指令

  • 通过重命名列,从另一个角度提供数据

四、视图使用规则

1. 视图必须有唯一命名

2. 在mysql中视图的数量没有限制

3. 创建视图必须从管理员那里获得必要的权限

4. 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图

5. 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的ORDER BY。

6. 视图不能索引,也不能关联触发器或默认值

7. 视图可以和表同时使用

五、创建视图

语法:

CREATE [OR REPLACE] VIEW 视图名 [(alias[, alias]...)] AS subquery [WITH READ ONLY];

        [(alias[, alias]...)]--为视图字段指定别名 

        在CREATE VIEW 语句中字段与子查询中的字段必须一一对应,否则就别指定别名,或在子查询中指定别名

在employee表中有以下数据

MySQL视图_第1张图片

 根据这张表创建一张视图:

mysql> create view emp_brife_info as select emp_no,emp_name,emp_job,(salary*12+bonus) as sum_salary,dept_id from employee;
Query OK, 0 rows affected (0.01 sec)

mysql> desc emp_brife_info;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| emp_no     | int         | NO   |     | 0       |       |
| emp_name   | varchar(30) | NO   |     | NULL    |       |
| emp_job    | varchar(30) | NO   |     | NULL    |       |
| sum_salary | bigint      | NO   |     | 0       |       |
| dept_id    | int         | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

 使用视图:

mysql> select *from emp_brife_info;

mysql> select emp_name,dept_id from emp_brife_info order by dept_id;

 MySQL视图_第2张图片MySQL视图_第3张图片

 

六、修改视图

使用ALTER VIEW 语句修改emp_brife_info视图;为每个列指定列名

mysql> alter view emp_brife_info (no,dept_id,name,job) as select emp_no,dept_id,emp_name,emp_job from employee order by dept_id;

MySQL视图_第4张图片 

 

七、删除视图

删掉视图不会导致数据的丢失,因为视图是基于数据库的表之上的一个查询定义.

DROP VIEW view_name;

MySQL视图_第5张图片

 

你可能感兴趣的:(DateBase,mysql,数据库,sql)