Mysql数据库基础第五章:(二)视图

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 视图是一个虚拟表:和普通表一样使用可以将查询结果放在视图里作为虚拟的表,不返回结果,只保留逻辑

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)


@TOC


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连接
  • 常量视图
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 程序员
【MySQL 数据库】8、视图
【MySQL 数据库】8、视图
40 0
|
2月前
|
存储 数据库
Navicate 如何导出数据库中的存储过程、事件、视图等?
Navicate 如何导出数据库中的存储过程、事件、视图等?
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
77 0
|
3月前
|
SQL 存储 数据可视化
SAP HANA 内存数据库不同类型的视图的应用场景介绍
SAP HANA 内存数据库不同类型的视图的应用场景介绍
55 0
|
4月前
|
数据库
数据库第十一次作业 视图的应用
数据库第十一次作业 视图的应用
32 1
|
20天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
9 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
1月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
1月前
|
Oracle 关系型数据库 MySQL
【mysql】—— 视图
【mysql】—— 视图
|
1月前
|
关系型数据库 MySQL
Mysql基础第二十五天,使用视图
Mysql基础第二十五天,使用视图
19 0
Mysql基础第二十五天,使用视图
|
2月前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
37 0