1、视图是一个虚拟表,是从数据库中一个或多个表中导出的表,其内容由查询定义。视图是存储在数据库中的查询的sql语句,主要出于二种原因:安全原因,视图可以隐藏一些数据,例如:员工信息表,可以用视图只显示姓名、工龄、地址,而不显示社会保险号和工资数,另一原因是可以是复杂的查询易于理解和使用。
2、定义视图的筛选可以来自当前或者其他数据库的一个或多个表,或者其他视图。
3、查询用户是否具有创建视图的权限
mysql> select select_priv,create_view_priv from mysql.user ;
+-------------+------------------+
| select_priv | create_view_priv |
+-------------+------------------+
| Y | Y |
| Y | Y |
| N | N |
+-------------+------------------+
3 rows in set (0.05 sec)
4、创建视图
mysql> select * from workmates;
+----+-------+------+--------+-------------+---------------------+
| id | name | age | sex | tel | birthday |
+----+-------+------+--------+-------------+---------------------+
| 1 | James | 30 | Male | 13545644544 | 1985-01-23 12:03:45 |
| 2 | Marry | 27 | F | 13601245698 | 1986-11-04 02:11:35 |
| 3 | Lily | 28 | Female | 13424345666 | 1987-09-21 20:00:00 |
+----+-------+------+--------+-------------+---------------------+
3 rows in set (0.07 sec)
mysql> create view workmates_view(a_id, a_name, a_age, a_sex) as select id,name,
age,sex from workmates;
Query OK, 0 rows affected (0.06 sec)
使用视图
mysql> select * from workmates_view;
+------+--------+-------+--------+
| a_id | a_name | a_age | a_sex |
+------+--------+-------+--------+
| 1 | James | 30 | Male |
| 2 | Marry |