1、什么是视图

视图是一个虚表。视图可以进行查询、增加、修改、删除。进行修改、增加、删除,将影响基本表中的数据。

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

1》简单化:看到的就是想要的字段列,可以简化后续查询。

2》安全性:通过视图用户只能查询和修改他们所能看到的数据。

3》逻辑数据独立性:屏蔽基本表结构变化带来的影响。

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>

2》在多表上创建视图,基本同单表的操作。

3》查看视图:权限show view;方法有describe、show table status、show create view、views表中查询视图信息。

1>describe / desc

describe / desc view_name;

2>show table status

show table status like 'view_name';

3>show create view

show create view view_name;

4>views表中查询视图信息

select * from information_schema.views;

mysql> select * from information_schema.views where table_name='v_test' \G
*************************** 1. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: mybatisTABLE_NAME: v_testVIEW_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: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
1 row in set (0.00 sec)mysql>

4、修改视图,两种方式

1》create or replace view

//与创建视图的语句格式一致create [or replace] [algorithm ={undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option] 

2》使用alter语句修改

alter [algorithm ={undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option]

5、更新视图

1》insert

insert into view_name ...

2》delete

delete from view_name ...

3》update

update view_name set ...

当视图包含如下内容时,视图的更新操作将不能被执行:

1>>视图中不包含基表中被定义为非空的列。

2>>在定义视图的select语句后的字段列表中使用使用了数学表达式。

3>>在定义视图的select语句后的字段列表中使用聚合函数。

4>>在定义视图的select语句中使用了distict、union、top、group by或having子句。

6、删除视图

drop view [if exists]view_name [,view_name] ...[restrict | cascade]

转载于:https://www.cnblogs.com/ZeroMZ/p/11462750.html

MySQL-快速入门(9)视图相关推荐

  1. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

  2. 阿里云rds for mysql平台介绍_阿里云RDS for MySQL 快速入门——笔记

    1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...

  3. mysql rds云数据库_云数据库 RDS MySQL快速入门手册

    云数据库 RDS MySQL是一款基于成熟云计算技术提供的高性能数据库服务,具有入门版.基础版.通用版.进阶版这四种,但最近有朋友表示,说自己并不会使用云数据库 RDS MySQL,为了帮助大家更好设 ...

  4. Mysql快速入门 在python、java使用

    三分钟搞定Mysql数据库的安装 下载链接 链接:https://pan.baidu.com/s/1utfNkqgi2dG5NBiiaMgy3A  提取码:ahuf 用到的命令: mysqld --i ...

  5. 【第0天】MYSQL快速入门-了解MySQL存储引擎(SQL 小虚竹)

    回城传送–><100天精通MYSQL从入门到就业> 文章目录 零.前言 一.什么是数据库引擎 二.MYSQL中有哪些数据库引擎 2.1.MyISAM 2.2.Memoey 2.3.I ...

  6. SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...

  7. 数据库可视化工具 dbForge Studio for MySQL 快速入门以及进阶指导

    dbForge是个很优秀的数据库可视化工具 目前是我用过唯一可以断点调试sql语句的软件 以下对dbForge的一些基本操作和进阶操作做个说明与记录 一.入门操作 1.连接数据库 2.当前连接信息面板 ...

  8. MySQL快速入门笔记

    文章目录 1.数据库的基本操作 2.表的基本操作 3.数据操作 4.数据类型 5.列属性完整性 6.数据库设计思维 7.单表查询 8.多表查询 9.子查询 10.视图(view) 11.事务(tran ...

  9. mysql 快速入门_MySql快速入门

    一.数据库基本概念 数据库:信息存储的仓库,包括一系列的关系措施! 表:一个数据库中可以有若干张表(形式上你可以看出我们日常生活中建立的表) 字段:表里面的信息会分若干个栏目来存,这些栏目呢,我们在数 ...

  10. mysql 快速入门,SOAR 101 快速入门指南

    本文介绍了soar可以提供的功能以及一些使用场景,并给出相关用例. 上篇文章回顾: soar开源两周以来,在Github获得了社区2700+颗星的支持,这期间有很多的开源社区同学参与到soar的成长当 ...

最新文章

  1. ubuntu phpinfo mysql_Ubuntu 16.04 apache+php+mysql环境搭建
  2. STM32开发 -- UCOSII
  3. java程序语句的理解,[每日学习笔记][2012.07.10]使用Java理解程序逻辑(六)
  4. 为什么选择Dojo - 记Dojo中文博客正式开张
  5. Eclipse设置Courier New字体
  6. frc机器人比赛主题_RCC机器人比赛
  7. Java Web项目在Linux服务器自动化部署续-整合Bamboo
  8. 2012《Linux杂志》读者选择奖 (Readers' Choice Awards 2012- Linux Journal)
  9. java的继承实例_Java 继承方法实例详解
  10. android自定义软键盘-中文与英文大小切换
  11. IOS视频播放器的使用(MPMoviePlayerController)
  12. java web web.xml配置_web.xml配置详解
  13. PhpMyWind储存型XSS漏洞练习(CVE-2017-12984)
  14. 老男孩python2020年31期学习记录贴
  15. 灰色预测模型MATLAB代码及使用
  16. 在vue中使用element-ui 里面的按钮点击后显示加载中,防止重复提交
  17. 硬件开发之pcb---PCB抗干扰设计原则
  18. 【收藏向】电路(下) 思维导图 3小时不挂科(邱关源教材)
  19. 手机端H5页面判断是否横屏
  20. java五子棋难度设置_tiger(我) 用 java写简易五子棋游戏 上次没通过这次看看行不行...

热门文章

  1. 古代埃及希腊,数学用的什么进制
  2. 六石管理学:头目们为什么要忽略产品质量
  3. No package ‘libmatekbd‘ found
  4. WINDOWS搜索dll的路径顺序
  5. 修改配置文件,编译freeswitch支持H264
  6. 高铁:繁忙时限制上车补票
  7. 解决办法:RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
  8. 解决办法: error: passing ‘const VideoFrame’ as ‘this’ argument discards qualifiers [-fpermissive]
  9. gstreamer插件用不了,及黑名单Blacklist的解决办法
  10. php网站源码怎么在本地电脑调式,Windows 平台下配置ZendStudio调式PHP