玩转Mysql系列 - 第15篇:详解视图,springmvc基础

mysql> SELECT * FROM myv1 a where a.last_name like ‘a%’;

±----------±----------------±---------------------+

| last_name | department_name | job_title            |

±----------±----------------±---------------------+

| Austin    | IT              | Programmer           |

| Atkinson  | Shi             | Stock Clerk          |

| Ande      | Sal             | Sales Representative |

| Abel      | Sal             | Sales Representative |

±----------±----------------±---------------------+

4 rows in set (0.00 sec)

上面我们创建了一个视图:myv1,我们需要看员工姓名、部门、工种信息的时候,不用关心这个视图内部是什么样的,只需要查询视图就可以了,sql简单多了。

案例2

案例2:查询各部门的平均工资级别

/案例2:查询各部门的平均工资级别/

/①创建视图myv1/

CREATE VIEW myv2

AS

SELECT

t1.department_id 部门id,

t1.ag            平均工资,

t2.grade_level   工资级别

FROM (SELECT

department_id,

AVG(salary) ag

FROM employees

GROUP BY department_id)

t1, job_grades t2

WHERE t1.ag BETWEEN t2.lowest_sal AND t2.highest_sal;

/②使用视图/

SELECT * FROM myv2;

效果:

mysql> SELECT * FROM myv2;

±---------±-------------±-------------+

| 部门id   | 平均工资     | 工资级别     |

±---------±-------------±-------------+

|     NULL |  7000.000000 | C            |

|       10 |  4400.000000 | B            |

|       20 |  9500.000000 | C            |

|       30 |  4150.000000 | B            |

|       40 |  6500.000000 | C            |

|       50 |  3475.555556 | B            |

|       60 |  5760.000000 | B            |

|       70 | 10000.000000 | D            |

|       80 |  8955.882353 | C            |

|       90 | 19333.333333 | E            |

|      100 |  8600.000000 | C            |

|      110 | 10150.000000 | D            |

±---------±-------------±-------------+

12 rows in set (0.00 sec)

修改视图

2种方式。

方式1

如果该视图存在,就修改,如果不存在,就创建新的视图。

create or replace view 视图名

as

查询语句;

示例

CREATE OR REPLACE VIEW myv3

AS

SELECT

job_id,

AVG(salary) javg

FROM employees

GROUP BY job_id;

方式2

alter view 视图名

as

查询语句;

示例

ALTER VIEW myv3

AS

SELECT *

FROM employees;

删除视图

语法

drop view 视图名1 [,视图名2] [,视图名n];

可以同时删除多个视图,多个视图名称之间用逗号隔开。

示例

mysql> drop view myv1,myv2,myv3;

Query OK, 0 rows affected (0.00 sec)

查询视图结构

/方式1/

desc 视图名称;

/方式2/

show create view 视图名称;

如:

mysql> desc myv1;

±----------------±------------±-----±----±--------±------+

| Field           | Type        | Null | Key | Default | Extra |

±----------------±------------±-----±----±--------±------+

| last_name       | varchar(25) | YES  |     | NULL    |       |

| department_name | varchar(3)  | YES  |     | NULL    |       |

| job_title       | varchar(35) | YES  |     | NULL    |       |

±----------------±------------±-----±----±--------±------+

3 rows in set (0.00 sec)

mysql> show create view myv1;

±-----±--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------------------±---------------------+

| View | Create View                                                                                                                                                                                                                                                                                                                                                               | character_set_client | collation_connection |

±-----±--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------------------±---------------------+

| myv1 | CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW myv1 AS select t1.last_name AS last_name,t2.department_name AS department_name,t3.job_title AS job_title from ((employees t1 join departments t2) join jobs t3) where ((t1.department_id = t2.department_id) and (t1.job_id = t3.job_id)) | utf8                 | utf8_general_ci      |

±-----±--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------------------±---------------------+

1 row in set (0.00 sec)

show create view显示了视图的创建语句。

更新视图【基本不用】

视图的更新是更改视图中的数据,而不是更改视图中的sql逻辑。

当对视图进行更新后,也会对原始表的数据进行更新。

为了防止对原始表的数据产生更新,可以为视图添加只读权限,只允许读视图,不允许对视图进行更新。

一般情况下,极少对视图进行更新操作。

示例

CREATE OR REPLACE VIEW myv4

AS

SELECT last_name,email

from employees;

/插入/

insert into myv4 VALUES (‘路人甲Java’,‘javacode2018@163.com’);

SELECT * from myv4 where email like ‘javacode2018%’;

/修改/

UPDATE myv4 SET last_name = ‘刘德华’ WHERE last_name = ‘路人甲Java’;

SELECT * from myv4 where email like ‘javacode2018%’;

/删除/

DELETE FROM myv4 where last_name = ‘刘德华’;

SELECT * from myv4 where email like ‘javacode2018%’;

注意:视图的更新我们一般不使用,了解即可。

总结

  1. 了解视图的用途及与表的区别。

  2. 掌握视图的创建、使用、修改、删除。

Mysql系列目录


  1. 第1篇:mysql基础知识

  2. 第2篇:详解mysql数据类型(重点)

  3. 第3篇:管理员必备技能(必须掌握)

  4. 第4篇:DDL常见操作

  5. 第5篇:DML操作汇总(insert,update,delete)

  6. 第6篇:select查询基础篇

  7. 第7篇:玩转select条件查询,避免采坑

  8. 第8篇:详解排序和分页(order by & limit)

  9. 第9篇:分组查询详解(group by & having)

  10. 第10篇:常用的几十个函数详解

  11. 第11篇:深入了解连接查询及原理

  12. 第12篇:子查询

  13. 第13篇:细说NULL导致的神坑,让人防不胜防

  14. 第14篇:详解事务

java高并发系列全集

  1. 第1天:必须知道的几个概念

  2. 第2天:并发级别

  3. 第3天:有关并行的两个重要定律

  4. 第4天:JMM相关的一些概念

  5. 第5天:深入理解进程和线程

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

  • Java基础部分

  • 算法与编程

  • 数据库部分

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
166)]

最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

  • Java基础部分

[外链图片转存中…(img-cfVFDUCL-1712037969167)]

  • 算法与编程

[外链图片转存中…(img-SHg0wReS-1712037969167)]

  • 数据库部分

[外链图片转存中…(img-bzzpMW9p-1712037969168)]

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

[外链图片转存中…(img-kIqG9C7z-1712037969168)]

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值