mysql的视图_mysql数据库笔记

mysql的视图_mysql数据库笔记1 #视图 2 /* 3 含义:虚拟表,和普通表一样使用 4 mysql5.1版本出现的新特性,是通过表动态生成的数据 5 6 比如:舞蹈班和普通班级的对比 7 创建语法的关键字 是否实际占用物理空间

mysql视图详细笔记 - 自律即自由

  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语句:分组函数、distinctgroup  byhaving、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";

代码100分

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7135.html

(0)
上一篇 2023-03-26
下一篇 2023-03-26

相关推荐

  • 用 Python 计算平均数

    用 Python 计算平均数Python 是一种高级编程语言,它可以用来计算各种数值。其中,计算平均数是 Python 上的一个基本应用。在本文中,我们将介绍如何使用 Python 计算平均数,包括 Python 计算单个数字的平均数、Python 计算多个数字的平均数、Python 计算任意多个数字的平均数,并提供对应的代码示例。

    2024-05-20
    82
  • SQL server 系统视图查询「建议收藏」

    SQL server 系统视图查询「建议收藏」– 查询所有表名、字段名、类型、长度 select o.name, c.name,t.name,c.length from syscolumns c inner join systypes t o…

    2023-03-14
    138
  • 使用Python tkinter实现复选按钮

    使用Python tkinter实现复选按钮复选按钮(Checkbutton)是一种常见的GUI控件,它用于提供多项选择,让用户可以选择其中的任意一项或多项。Python的GUI库Tkinter提供了复选按钮的实现方法,可以轻松地在图形界面中添加和使用。

    2024-02-14
    105
  • Mysql之Binlog「终于解决」

    Mysql之Binlog「终于解决」1、简述 binlog 二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。 2、Docker中无法使用vim问题解决

    2023-05-24
    143
  • Python的str.join方法:高效拼接字符串

    Python的str.join方法:高效拼接字符串在编写代码过程中,字符串拼接非常常见。有时候我们需要将列表中的元素拼接成字符串,有时候则需要将多个字符串拼接在一起。这时候就需要用到Python中的str.join方法。

    2024-03-23
    80
  • 云原生 | 混沌工程工具 ChaosBlade Operator Pod 篇[亲测有效]

    云原生 | 混沌工程工具 ChaosBlade Operator Pod 篇[亲测有效]作者:丁源 RadonDB 测试负责人 负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 继《混沌工程工具 ChaosB

    2023-04-21
    155
  • sqlserver查看表空间[通俗易懂]

    sqlserver查看表空间[通俗易懂]sqlserver 用于查看当前数据库所有表占用空间大小的存储过程 create procedure dbo.proc_getsize as begin create table #temp ( t_

    2022-12-20
    152
  • Python Numbers: 数学计算的基本工具

    Python Numbers: 数学计算的基本工具Python是一种广泛使用的高级编程语言,因为其简单易学和功能强大而受到广泛欢迎。Python支持许多类型的数据,包括数字、字符串、列表和元组等。Python的数字类型包括整数、浮点数和复数。 在这篇文章中,我们将主要探讨Python数字类型的用法和功能。

    2024-02-18
    96

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注