Mysql数据库基础第五章:(二)视图
Mysql数据库基础系列
软件下载地址
提取码:7v7u
数据下载地址
提取码:e6p9
mysql数据库基础第一章:(一)数据库基本概念
mysql数据库基础第一章:(二)mysql环境搭建
mysql数据库基础第二章:(一)基础查询
mysql数据库基础第二章:(二)条件查询
mysql数据库基础第二章:(三)排序查询
mysql数据库基础第二章:(四)常见函数
mysql数据库基础第二章:(五)分组查询
mysql数据库基础第二章:(六)连接查询
mysql数据库基础第二章:(七)子查询
mysql数据库基础第二章:(八)子查询经典案例
mysql数据库基础第二章:(九)分页查询
mysql数据库基础第二章:(十)连接查询
mysql数据库基础第三章:DML语言
mysql数据库基础第四章:DDL(数据定义语言):库表的管理、数据类型与约束条件
mysql数据库基础第五章:(一)事务
mysql数据库基础第五章:(二)视图
mysql数据库基础第六章:变量、存储过程与函数
mysql数据库基础第七章:流程控制结构
mysql数据库基础第八章:窗口函数和公用表达式(CTE)
1.视图
视图是一个虚拟表:和普通表一样使用
可以将查询结果放在视图里作为虚拟的表,不返回结果,只保留逻辑
优势是可以:
1.可以重用sql语句
2.简化sql语句
3.保存数据,提供安全性
2.视图创建
语法:
create view 视图名
as
查询语句;
USE myemployees;
#1.查询姓名中包含a字符的员工名、部门名和工种信息
首先创建视图
CREATE VIEW myv1
AS
SELECT last_name,department_name,job_title
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN jobs j ON j.job_id = e.job_id;
视图示意图
视图创建成功后刷新可以在视图栏中看到相关的视图
然后使用上述创建的视图:将其当做一个新的表来看待
SELECT * FROM myv1 WHERE last_name LIKE '%a%';
#2.查询各部门的平均工资级别
#①创建视图查看每个部门的平均工资
CREATE VIEW myv2
AS
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id;
#②使用
SELECT myv2.`ag`,g.grade_level
FROM myv2
JOIN job_grades g
ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;
#3.查询平均工资最低的部门信息
SELECT * FROM myv2 ORDER BY ag LIMIT 1;
#4.查询平均工资最低的部门名和工资
CREATE VIEW myv3
AS
SELECT * FROM myv2 ORDER BY ag LIMIT 1;
SELECT d.*,m.ag
FROM myv3 m
JOIN departments d
ON m.`department_id`=d.`department_id`;
3.视图修改
方式一:create or replace
方式二:alter
SELECT * FROM myv3;
CREATE OR REPLACE VIEW myv3
AS
SELECT AVG(salary), job_id FROM
employees
GROUP BY job_id;
;
4.视图的删除与更新
DROP VIEW myv1;
CREATE VIEW myv4
AS
SELECT last_name, salary
FROM employees;
SELECT * FROM myv4;
INSERT INTO myv4 VALUES('皮卡丘',10000);
UPDATE myv4 SET last_name = '喷火龙' WHERE last_name = '皮卡丘'
DELETE FROM myv4 WHERE last_name = '喷火龙' ;
SELECT * FROM employees;
视图可以更新,主要是进行insert, update, delete。但是一般我们不建议更新视图,因为更新视图的数据也会在原始表中更新。
下列几种不可进行视图更新的情况:
- 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
- select中包含子查询
- join连接
- 常量视图
最新文章
- RGW/SWIFT对象存储性能测试工具--COSBench安装
- 使用ImageCreate()创建一个代表空白图像的变量
- fibonacci封闭公式及矩阵连乘
- Java基础(4):Scanner输入的典型应用
- httperf ---linux web站点压力测试
- H5 App设计者需要注意的21条禁忌
- 2015年9月29日 sql 触发器
- vs2013 使用vs调试器,发现调试器显示的数据错误。查看内存,发现内存是正确的。
- 它们的定义AlertDialog(二)
- 怎么利用composer创建laravel项目
- 响应式移动端去除css的hover和jq的hover还有input在苹果下的默认样式
- centos 下安装 Jre 及 selenium
- BZOJ_2595_[Wc2008]游览计划_斯坦纳树
- Java开发知识之Java控制语句
- 数据库镜像转移Failover Partner
- redis数据库通过dump.rdb文件恢复数据库或者数据库迁移
- 贪吃蛇 v1.01
- [C] 如何使用头文件 .h 编译 C 源码
- 建造者模式及C++实现
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象
热门文章
- 10、比较Bigdecimal类型是否相等的方法
- 结合商业项目深入理解Go知识点
- [编程基础] Python列表解析总结
- (一)elasticsearch 编译和启动
- iOS根据两点经纬度坐标计算指南针方位角
- DVWA靶场实战(三)——CSRF
- AIR32F103(八) 集成Helix MP3解码库播放MP3
- 从 GPT2 到 Stable Diffusion:Elixir 社区迎来了 Hugging Face
- vue-admin-template 单页面刷新 404 问题
- 反射_Class对象功能概述-反射_Class对象功能_获取Field