#语法: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. java虚拟机性能监控调优及原则

    摘抄 http://uule.iteye.com/blog/2114697 一.JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...

  2. 【HubbleDotNet】HubbleDotNet配置安装注册key获取

    今天配置HubbleDotNet发现一个问题 安装界面需要注册key 点击[get key],跳转网页: http://www.hubbledotnet.com/key.aspx 结果网页有bug,坑 ...

  3. activeMQ---->ActiveMQ的使用(一)

    这里通过一个入门的案例来体会一下ActiveMQ的作用以及使用方法.你要做一个不动声色的大人了.不准情绪化,不准偷偷想念,不准回头看.去过自己另外的生活.你要听话,不是所有的鱼都会生活在同一片海里. ...

  4. 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)

    行逻辑链接,带行链接信息.程序有空指针BUG,至今未解决.还是C/C++适合描述算法数据结构.以后复杂的算法还是改用C/C++吧. 有BUG的代码,总有一天会换成没有BUG的. package 行逻辑 ...

  5. 【分享】Linux(Ubuntu)下如何自己编译JDK

    最近在看<深入理解 Java 虚拟机>这本书.里面提到了如何手动编译JDK,于是就试了试. 在编译的过程中,遇到了一些问题.上网一搜,发现了一篇很好的文章,跟大家分享一下:ubuntu 1 ...

  6. OGG 3节点级联时 关键参数

    目标架构为: node1-> node2->node3 node1-> node2 已经同步中,只是需要在此基础上做个node2 ->node3 的同步. 部署后发现 node ...

  7. 题目1003:A+B(按逗号分隔的A+B)

    题目链接:http://ac.jobdu.com/problem.php?pid=1003 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  8. linux 终端输出颜色

    在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据. 终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式 ...

  9. PHP内置安全函数一览

    内置安全函数 filter_var函数 根据参数中的过滤类型进行过滤,如过滤Email类型的,则符合的字符串返回字符串,不符合的返回False. urldecode函数 写这个函数是特别为了提醒注意, ...

  10. Unity3D 边缘高光Shader

    Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "whi ...