300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【数据库】MySQL创建视图(CREATE VIEW)

【数据库】MySQL创建视图(CREATE VIEW)

时间:2024-04-01 19:32:48

相关推荐

【数据库】MySQL创建视图(CREATE VIEW)

数据库视图是什么?

创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。

视图的好处?

视图使用的时候跟表一样。主要作用是不让所有的人都能看到整张表。

比如有个员工信息表,里面有联系方式,薪资等,可能只希望HR能看到薪资,其他人只能看到联系方式,那么就可以使用视图来实现。

高效:复杂的连接查询,每次执行时效率比较低,可以考虑新建视图,每次从视图中获取,将会提高效率。

定制数据:将常用的字段放置在视图中。

视图:

是从一个或几个基本表(或视图)导出的虚拟表。

作用:

1、视图能够简化用户的操作

2、视图使用户能以多钟角度看待同一数据

3、视图对重构数据库提供了一定程度的逻辑独立性

4、视图能够对机密数据提供安全保护

5、适当的利用视图可以更清晰的表达查询

示例

【实例 1 创建基于单表的视图】在 tb_students_info 表上创建一个名为 view_students_info 的视图,输入的 SQL 语句和执行结果如下所示。

mysql> CREATE VIEW view_students_info-> AS SELECT * FROM tb_students_info;Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM view_students_info;+----+--------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+--------+---------+------+------+--------+------------+| 1 | Dany | 1 | 25 | F | 160 | -09-10 || 2 | Green | 3 | 23 | F | 158 | -10-22 || 3 | Henry | 2 | 23 | M | 185 | -05-31 || 4 | Jane | 1 | 22 | F | 162 | -12-20 || 5 | Jim | 1 | 24 | M | 175 | -01-15 || 6 | John | 2 | 21 | M | 172 | -11-11 || 7 | Lily | 6 | 22 | F | 165 | -02-26 || 8 | Susan | 4 | 23 | F | 170 | -10-01 || 9 | Thomas | 3 | 22 | M | 178 | -06-07 || 10 | Tom | 4 | 23 | M | 165 | -08-05 |+----+--------+---------+------+------+--------+------------+10 rows in set (0.04 sec)

默认情况下,创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。

【示例2 创建基于多表的视图】

mysql> CREATE VIEW v_students_info-> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)-> AS SELECT id,name,dept_id,age,sex,height,login_date-> FROM tb_students_info;Query OK, 0 rows affected (0.06 sec)mysql> SELECT * FROM v_students_info;+------+--------+------+-------+-------+----------+------------+| s_id | s_name | d_id | s_age | s_sex | s_height | s_date|+------+--------+------+-------+-------+----------+------------+| 1 | Dany | 1 | 24 | F|160 | -09-10 || 2 | Green | 3 | 23 | F|158 | -10-22 || 3 | Henry | 2 | 23 | M|185 | -05-31 || 4 | Jane | 1 | 22 | F|162 | -12-20 || 5 | Jim | 1 | 24 | M|175 | -01-15 || 6 | John | 2 | 21 | M|172 | -11-11 || 7 | Lily | 6 | 22 | F|165 | -02-26 || 8 | Susan | 4 | 23 | F|170 | -10-01 || 9 | Thomas | 3 | 22 | M|178 | -06-07 || 10 | Tom | 4 | 23 | M|165 | -08-05 |+------+--------+------+-------+-------+----------+------------+10 rows in set (0.01 sec)

通过这个视图可以很好地保护基本表中的数据。

视图中包含 s_id、s_name 和 dept_name,s_id 字段对应 tb_students_info 表中的 id 字段,s_name 字段对应 tb_students_info 表中的 name 字段,dept_name 字段对应 tb_departments 表中的 dept_name 字段。

查看视图结构

DESCRIBE 可以用来查看视图,语法如下:

DESCRIBE 视图名;

mysql> DESCRIBE v_students_info;+----------+---------------+------+-----+------------+-------+| Field | Type| Null | Key | Default | Extra |+----------+---------------+------+-----+------------+-------+| s_id| int(11) | NO || 0| || s_name | varchar(45) | YES || NULL | || d_id| int(11) | YES || NULL | || s_age | int(11) | YES || NULL | || s_sex | enum('M','F') | YES || NULL | || s_height | int(11) | YES || NULL | || s_date | date| YES || -10-22 | |+----------+---------------+------+-----+------------+-------+7 rows in set (0.04 sec)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。