#语法:CREATE VIEW 视图名称 AS  SQL语句

增加了一张表
mysql> create view course2teacher as select * from course inner join teacher on course.teacher_id=teacher.tid;
Query OK, 0 rows affected (0.28 sec) mysql> show tables;
+----------------+
| Tables_in_db2 |
+----------------+
| class |
| course |
| course2teacher |
| score |
| student |
| teacher |
+----------------+
6 rows in set (0.00 sec)

创建一张表 都会在mysql 指定数据库目录里面添加 表结构文件表数据文件

而刚才用视图创建的course2teacher表只有表结构,没有表数据

因为他的数据来自于其他表,查询出来的

[root@mysql db2]# pwd
/data/mysql/db2
[root@mysql db2]# ll
总用量 612
-rw-rw----. 1 mysql mysql 8594 11月 3 23:33 class.frm
-rw-rw----. 1 mysql mysql 98304 11月 3 23:33 class.ibd
-rw-rw----. 1 mysql mysql 906 11月 11 02:49 course2teacher.frm
-rw-rw----. 1 mysql mysql 8632 11月 3 23:33 course.frm
-rw-rw----. 1 mysql mysql 114688 11月 3 23:33 course.ibd
-rw-rw----. 1 mysql mysql 61 11月 3 23:33 db.opt
-rw-rw----. 1 mysql mysql 8668 11月 3 23:33 score.frm
-rw-rw----. 1 mysql mysql 131072 11月 3 23:33 score.ibd
-rw-rw----. 1 mysql mysql 8662 11月 3 23:33 student.frm
-rw-rw----. 1 mysql mysql 114688 11月 3 23:33 student.ibd
-rw-rw----. 1 mysql mysql 8590 11月 3 23:33 teacher.frm
-rw-rw----. 1 mysql mysql 98304 11月 3 23:33 teacher.ibd
视图创建的虚拟表可以当做真正的表来用
mysql> select * from course2teacher;
+-----+--------+------------+-----+-----------------+
| cid | cname | teacher_id | tid | tname |
+-----+--------+------------+-----+-----------------+
| 1 | 生物 | 1 | 1 | 张磊老师 |
| 2 | 物理 | 2 | 2 | 李平老师 |
| 4 | 美术 | 2 | 2 | 李平老师 |
| 3 | 体育 | 3 | 3 | 刘海燕老师 |
+-----+--------+------------+-----+-----------------+
4 rows in set (0.37 sec)

每次执行select * from course2teacher;语句 都会触发 select * from course inner join teacher on course.teacher_id=teacher.tid; 运行

把结果当做course2teacher这种虚拟表

不用重复写表

#!!!注意注意注意:
#1. 使用视图以后就无需每次都重写子查询的sql,但是这么效率并不高,还不如我们写子查询的效率高 #2. 而且有一个致命的问题:视图是存放到数据库里的,如果我们程序中的sql过分依赖于数据库中存放的视图,
那么意味着,一旦sql需要修改且涉及到视图的部分,则必须去数据库中进行修改。
视图是用来方便查的 ,视图不应该改
单表不用视图,
多表连接表查询时候才用到视图 我们不应该修改视图中的记录,而且在涉及多个表的情况下是根本无法修改视图中的记录的

删除视图

语法:DROP VIEW 视图名称

DROP VIEW course2teacher
 

mysql 内置功能 视图 使用的更多相关文章

  1. mysql 内置功能 视图介绍

    之前的多表查询本质是把多张有关系的表连接在一起组成一张虚拟表,从而进行查询 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需使用[名称]即 ...

  2. mysql 内置功能目录

    mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ...

  3. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  4. mysql 内置功能 存储过程 目录

    mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程

  5. mysql 内置功能 存储过程介绍

    存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存 ...

  6. mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ...

  7. 数据库——mysql内置功能(11)

    1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临 ...

  8. MySQL内置功能之事务、函数和流程控制

    主要内容: 一.事务 二.函数 三.流程控制 1️⃣  事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # ...

  9. Mysql内置功能《五》 函数

    一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...

随机推荐

  1. WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)

    想对某个函数下断点,但是记不清楚的函数具体的名字,这个时侯可以使用x命令来列举所有的符号. 命令格式为: x [选项] 模块名字!符号匹配表达式 这里的符号匹配表达式类似dos的文件名匹配表达式,可以 ...

  2. 怎样用Windows10全屏流畅运行红色警戒2

    https://jingyan.baidu.com/article/9113f81b1cb7f22b3214c724.html jpg 转 rar 

  3. Contain的使用

  4. SALT+HASH撒盐加密

    #region 撒盐加密 string salt = Guid.NewGuid().ToString(); byte[] passwordAndSaltBytes = System.Text.Enco ...

  5. Clock skewdetected. Your build may be incomplete.

    解决方法: find . -type f | xargs -n touch make clean make

  6. 【Java基础】System的arraycopy方法拷贝数组

    一.在System类中查看方法的定义 二.示例 public class SystemArrayCopyTest { /** * @Description: System的arrayCopy方法测试 ...

  7. Python Extension Packages 下载

    Python Extension Packages下载 这个下载源资源丰富,python支持版本从2.x到3.7,从win32到win64位都有支持,是非常好资源. 特别留下记号备查. Index b ...

  8. C# mongohelper的初始化及账户密码设置

    MongoClientSettings mongoSettings = new MongoClientSettings(); TimeSpan t = ); mongoSettings.Connect ...

  9. oracle IMP-00085: 为无界导出文件指定了多个输入文件

    导入按表导出的数据的时候,提示为无界导出文件指定了多个输入文件 命令如下: imp user/user@database file=e:\test.dmp  提示信息: Import: Release ...

  10. vue Element动态设置el-menu导航当前选中项

    1,npm install vuex --save 2,在src下新建vuex文件夹,新建store.js文件: store.js import Vue from 'vue' import Vuex ...