1 #视图
2 /*
3 含义:虚拟表,和普通表一样使用
4 mysql5.1版本出现的新特性,是通过表动态生成的数据
5
6 比如:舞蹈班和普通班级的对比
7 创建语法的关键字 是否实际占用物理空间 使用
8
9 视图 create view 只是保存了sql逻辑 增删改查,只是一般不能增删改
10
11 表 create table 保存了数据 增删改查
12
13
14 */
15
16 #案例:查询姓张的学生名和专业名
17 SELECT stuname,majorname
18 FROM stuinfo s
19 INNER JOIN major m ON s.`majorid`= m.`id`
20 WHERE s.`stuname` LIKE '张%';
21
22 CREATE VIEW v1
23 AS
24 SELECT stuname,majorname
25 FROM stuinfo s
26 INNER JOIN major m ON s.`majorid`= m.`id`;
27
28 SELECT * FROM v1 WHERE stuname LIKE '张%';
29
30
31 #一、创建视图
32 /*
33 语法:
34 create view 视图名
35 as
36 查询语句;
37
38 */
39 USE myemployees;
40
41 #1.查询姓名中包含a字符的员工名、部门名和工种信息
42 #①创建
43 CREATE VIEW myv1
44 AS
45
46 SELECT last_name,department_name,job_title
47 FROM employees e
48 JOIN departments d ON e.department_id = d.department_id
49 JOIN jobs j ON j.job_id = e.job_id;
50
51
52 #②使用
53 SELECT * FROM myv1 WHERE last_name LIKE '%a%';
54
55
56
57
58
59
60 #2.查询各部门的平均工资级别
61
62 #①创建视图查看每个部门的平均工资
63 CREATE VIEW myv2
64 AS
65 SELECT AVG(salary) ag,department_id
66 FROM employees
67 GROUP BY department_id;
68
69 #②使用
70 SELECT myv2.`ag`,g.grade_level
71 FROM myv2
72 JOIN job_grades g
73 ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;
74
75
76
77 #3.查询平均工资最低的部门信息
78
79 SELECT * FROM myv2 ORDER BY ag LIMIT 1;
80
81 #4.查询平均工资最低的部门名和工资
82
83 CREATE VIEW myv3
84 AS
85 SELECT * FROM myv2 ORDER BY ag LIMIT 1;
86
87
88 SELECT d.*,m.ag
89 FROM myv3 m
90 JOIN departments d
91 ON m.`department_id`=d.`department_id`;
92
93
94
95
96 #二、视图的修改
97
98 #方式一:
99 /*
100 create or replace view 视图名
101 as
102 查询语句;
103
104 */
105 SELECT * FROM myv3
106
107 CREATE OR REPLACE VIEW myv3
108 AS
109 SELECT AVG(salary),job_id
110 FROM employees
111 GROUP BY job_id;
112
113 #方式二:
114 /*
115 语法:
116 alter view 视图名
117 as
118 查询语句;
119
120 */
121 ALTER VIEW myv3
122 AS
123 SELECT * FROM employees;
124
125 #三、删除视图
126
127 /*
128
129 语法:drop view 视图名,视图名,...;
130 */
131
132 DROP VIEW emp_v1,emp_v2,myv3;
133
134
135 #四、查看视图
136
137 DESC myv3;
138
139 SHOW CREATE VIEW myv3;
140
141
142 #五、视图的更新
143
144 CREATE OR REPLACE VIEW myv1
145 AS
146 SELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary"
147 FROM employees;
148
149 CREATE OR REPLACE VIEW myv1
150 AS
151 SELECT last_name,email
152 FROM employees;
153
154
155 SELECT * FROM myv1;
156 SELECT * FROM employees;
157 #1.插入
158
159 INSERT INTO myv1 VALUES('张飞','zf@qq.com');
160
161 #2.修改
162 UPDATE myv1 SET last_name = '张无忌' WHERE last_name='张飞';
163
164 #3.删除
165 DELETE FROM myv1 WHERE last_name = '张无忌';
166
167 #具备以下特点的视图不允许更新
168
169
170 #①包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
171
172 CREATE OR REPLACE VIEW myv1
173 AS
174 SELECT MAX(salary) m,department_id
175 FROM employees
176 GROUP BY department_id;
177
178 SELECT * FROM myv1;
179
180 #更新
181 UPDATE myv1 SET m=9000 WHERE department_id=10;
182
183 #②常量视图
184 CREATE OR REPLACE VIEW myv2
185 AS
186
187 SELECT 'john' NAME;
188
189 SELECT * FROM myv2;
190
191 #更新
192 UPDATE myv2 SET NAME='lucy';
193
194
195
196
197
198 #③Select中包含子查询
199
200 CREATE OR REPLACE VIEW myv3
201 AS
202
203 SELECT department_id,(SELECT MAX(salary) FROM employees) 最高工资
204 FROM departments;
205
206 #更新
207 SELECT * FROM myv3;
208 UPDATE myv3 SET 最高工资=100000;
209
210
211 #④join
212 CREATE OR REPLACE VIEW myv4
213 AS
214
215 SELECT last_name,department_name
216 FROM employees e
217 JOIN departments d
218 ON e.department_id = d.department_id;
219
220 #更新
221
222 SELECT * FROM myv4;
223 UPDATE myv4 SET last_name = '张飞' WHERE last_name='Whalen';
224 INSERT INTO myv4 VALUES('陈真','xxxx');
225
226
227
228 #⑤from一个不能更新的视图
229 CREATE OR REPLACE VIEW myv5
230 AS
231
232 SELECT * FROM myv3;
233
234 #更新
235
236 SELECT * FROM myv5;
237
238 UPDATE myv5 SET 最高工资=10000 WHERE department_id=60;
239
240
241
242 #⑥where子句的子查询引用了from子句中的表
243
244 CREATE OR REPLACE VIEW myv6
245 AS
246
247 SELECT last_name,email,salary
248 FROM employees
249 WHERE employee_id IN(
250 SELECT manager_id
251 FROM employees
252 WHERE manager_id IS NOT NULL
253 );
254
255 #更新
256 SELECT * FROM myv6;
257 UPDATE myv6 SET salary=10000 WHERE last_name = 'k_ing';

mysql视图详细笔记的更多相关文章

  1. 推荐收藏 —— MySQL视图详细介绍

    前言:  在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会 ...

  2. MySQL视图详细介绍

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  3. (转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记

    Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程 ...

  4. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  5. MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)

    知识点七:MySQL视图的创建(14) 视图的定义: 什么是视图: 视图数由查询结果形成的一张虚拟的表. 什么时候要用到视图? 如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询. ...

  6. MySQL 视图的基础操作(五)

    1.为什么使用视图:     为了提高复杂SQL语句的复用性和表操作的安全性(例如:工资字段不想展示给所有能查看该查询结果的人),MySQL提供了视图特性.所谓视图,本质上是一种虚拟表,其内容与真实的 ...

  7. mysql 视图(view)

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...

  8. mysql 视图示例

    基本操作 建立视图 CREATE VIEW view_test(qty,price,total) AS SELECT quantity,price,quantity*price FROM t; 多表视 ...

  9. MySQL视图view/存储过程和函数的使用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  10. MySQL视图更新

    昨天在写美团2019秋招笔试题的时候遇到了关于视图是否能更新的问题,突然感觉这个问题之前复习的时候重点关注过,但是却又想不全.今天特地搜了一些资料总结一下.本文主要说明视图的更新限制,如需关于视图的更 ...

随机推荐

  1. 期盼已久全平台支持-开源IM项目OpenIM之uniapp更新

    国内uniapp使用广泛,OpenIM的uniapp sdk以及文档和demo (https://github.com/OpenIMSDK/Open-IM-Uniapp-Demo)都已更新,本文主要展 ...

  2. 突破性的多语言代码大模型基CodeShell:引领AI编程新时代

    突破性的多语言代码大模型基CodeShell:北京大学与四川天府银行联合打造,引领AI编程新时代 1.CodeShell简介 CodeShell是北京大学知识计算实验室联合四川天府银行AI团队研发的多 ...

  3. 深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN

    深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL.RN.PN.MN 1.Simple Neural Attentive Learner(SNAIL) 元学习可以被定义为一种序列到序列的问题 ...

  4. 4.3 C++ Boost 日期时间操作库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  5. AIX6.1系统NTP同步配置

    前言   当AIX系统的本地时间与时间服务器授出的标准时间误差大于±1000秒时.xntpd服务将无法同步时间并变得无法正常工作,请进行ntp配置前,先修改AIX系统的本地时间,尽量和时间服务器的标准 ...

  6. Excel快速调整单元格行高和列宽

    之前使用的是鼠标双击的方法,但是只适用于少量调整时. 今天给同事编辑公众号文章,有一大篇表格在word中,直接从word中复制到公众号的话,格式会有一定程度的错位. 于是先粘贴到excel中处理,但到 ...

  7. ABC 306

    前三题过水. D \(dp[i][j]\) 表示吃完前 \(i\) 个菜,胃的状况为 \(j\)(\(0\) 是健康,\(1\) 是不好)所获得的最大美味值. E 暴力的平衡树.用 multiset ...

  8. JS Leetcode 81. 搜索旋转排序数组 II 题解,补救二分法的可行性

    壹 ❀ 引 今日LeetCode题为153. 寻找旋转排序数组中的最小值,在10个月前,我已在JS leetcode 寻找旋转排序数组中的最小值 题解分析,你不得不了解的二分法一文中写了本题的题解,所 ...

  9. Python 装饰器解析(一)

    装饰器用于在源码中"标记"函数,以增强函数的行为. 我们先来看下面的例子,现有一个求和函数add,现在要求统计函数执行的时长 def add(a, b): print(a+b) 最 ...

  10. Android架构组件LiveData

    LiveData LiveData是基于观察者模式创建的,其中,LiveData是被观察者,观察者通过注册方法,监听被观察者的数据变化.LiveData在数据发生变化的时候,会通知观察者. LiveD ...