MySQL-快速入门(9)视图

匿名 (未验证) 提交于 2019-12-02 22:06:11

1、什么是视图

2、视图相对基本表的优势

3、创建视图

//1、algorithm表示视图选择的算法,undefined表示MySQL自动选择算法;merge表示将使用的视//图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分;temptable表示将//视图的结果存入临时表,然后用临时表来执行语句。//2、[with [cascaded | local] check option]表示视图在更新时保证在视图的权限范围之内//cascaded与local为可选参数,cascaded为默认值,表示更新视图时要满足所有相关视图和表//的条件;local表示更新视图时满足该视图本身定义的条件即可。//3、创建的视图默认属于当前数据库,如果要创建属于其他数据库的视图,则db_name.view_namecreate [or replace] [algorithm = {undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local] check option]

1》在单表上创建视图,可以给视图指定不同的字段名,创建的时候会与基本表对齐。

mysql> create view v_test as select * from test; Query OK, 0 rows affected (0.00 sec)  mysql> select * from v_test; +----+-------+--------+--------+----------+------+ | id | name  | deptId | salary | t_time   | str  | +----+-------+--------+--------+----------+------+ |  1 | Lucy  |   NULL |   1000 | 10:28:33 | NULL | |  2 | Lura  |   NULL |   1200 | 10:28:33 | NULL | |  3 | Kevin |   NULL |   1500 | 10:28:33 | NULL | |  4 | Nancy |   NULL |   1000 | 22:08:38 | NULL | |  5 | Bob   |   NULL |   1200 | 22:08:38 | NULL | +----+-------+--------+--------+----------+------+ 5 rows in set (0.01 sec)  mysql> desc v_test; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id     | int(10)     | NO   |     | 0       |       | | name   | varchar(25) | NO   |     | NULL    |       | | deptId | int(11)     | YES  |     | NULL    |       | | salary | float       | YES  |     | NULL    |       | | t_time | time        | YES  |     | NULL    |       | | str    | varchar(4)  | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)  mysql> desc test; +--------+-------------+------+-----+---------+----------------+ | Field  | Type        | Null | Key | Default | Extra          | +--------+-------------+------+-----+---------+----------------+ | id     | int(10)     | NO   | PRI | NULL    | auto_increment | | name   | varchar(25) | NO   |     | NULL    |                | | deptId | int(11)     | YES  |     | NULL    |                | | salary | float       | YES  |     | NULL    |                | | t_time | time        | YES  |     | NULL    |                | | str    | varchar(4)  | YES  |     | NULL    |                | +--------+-------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)  mysql>

describe / desc view_name;

show table status like 'view_name';

show create view view_name;

select * from information_schema.views;
mysql> select * from information_schema.views where table_name='v_test' \G *************************** 1. row ***************************        TABLE_CATALOG: def         TABLE_SCHEMA: mybatis           TABLE_NAME: v_test      VIEW_DEFINITION: select `mybatis`.`test`.`id` AS `id`,`mybatis`.`test`.`nam e` AS `name`,`mybatis`.`test`.`deptId` AS `deptId`,`mybatis`.`test`.`salary` AS `salary`,`mybatis`.`test`.`t_time` AS `t_time`,`mybatis`.`test`.`str` AS `str` f rom `mybatis`.`test`         CHECK_OPTION: NONE         IS_UPDATABLE: YES              DEFINER: root@localhost        SECURITY_TYPE: DEFINER CHARACTER_SET_CLIENT: gbk COLLATION_CONNECTION: gbk_chinese_ci 1 row in set (0.00 sec)  mysql>

4、

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!