IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL——视图 -> 正文阅读

[大数据]MySQL——视图

含义:虚拟表,和普通表格一样使用

mysql5.1版本出现的新特性,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。

应用场景:多个地方用到同样的查询结果;该查询结果使用的sql语句较复杂。

特点:

????????(1)实现了sql语句的重用

? ? ? ? (2)简化复杂的sql操作,不必知道他的查询细节

????????(3)保护数据,提高安全性

eg1.查询姓张的学生名和专业名

CREATE VIEW vl
AS
SELECT studentname,majorname
FROM student AS s?
INNER JOIN major AS m
ON s.`majorid`=m.`majorid`;

SELECT * FROM vl WHERE studentname LIKE '张%';

一、视图的创建

语法:

????????CREATE VIEW 视图名
????????AS
????????查询语句;

eg1.查询姓名中包含a字符的员工名、部门名和工种信息

CREATE VIEW vl1
AS
SELECT last_name,department_name,j.*
FROM employees AS e
INNER JOIN departments AS d
ON e.department_id=d.department_id
INNER JOIN jobs AS j
ON e.job_id=j.job_id;

SELECT *?
FROM vl1
WHERE last_name LIKE '%a%';

eg2.查询各部门的平均工资级别

CREATE VIEW vl2
AS?
SELECT AVG(salary) AS avgs,department_id
FROM employees AS e
GROUP BY department_id;

SELECT vl2.*,j.`grade_level`
FROM vl2
INNER JOIN job_grades AS j
ON vl2.`avgs` BETWEEN j.`lowest_sal` AND j.`highest_sal`;

eg3.查询平均工资最低的部门

SELECT vl2.*
FROM vl2
ORDER BY vl2.`avgs`
LIMIT 1;

eg4.查询平均工资最低的部门名和工资

CREATE VIEW myv3
AS
SELECT vl2.*
FROM vl2
ORDER BY vl2.`avgs`
LIMIT 1;

SELECT myv3.`avgs`,d.*
FROM myv3
INNER JOIN departments AS d
ON d.`department_id`=myv3.`department_id`;

二、视图的修改

#方式一:

CREATE OR REPLACE VIEW 视图名
AS
查询语句;

#方式二:

ALTER VIEW 视图名?
AS?
查询语句;

三、视图的删除

语法:

DROP VIEW 视图名1,视图名2……;

四、视图结构的查看

DESC 视图名;

或:

SHOW CREATE VIEW 视图名;

SHOW CREATE VIEW 视图名\G;

五、视图的更新(数据更新)

具备以下特点的视图不允许更新(增删改):

(1)包含以下关键字的sql语句:分组函数、distinct、group by、having、union或union all

(2)常量视图

(3)select中包含子查询

(4)join(可以update,不能insert)

(5)from一个不能更新的视图

(6)where子句的子查询引用了from子句中的表

????????eg.

????????CREATE OR REPLACE VIEW myv5
????????AS
????????SELECT last_name,email,salary
????????FROM employees
????????WHERE employee_id IN(
?????????? ?SELECT manager_id
?????????? ?FROM employees
?????????? ?WHERE manager_id IS NOT NULL
????????);

#视图和表的区别:

1、创建语法不同,视图为create view;表为create table

2、视图没有实际占用物理空间(只保存了sql逻辑),表占用实际物理空间(保存了数据)

3、视图一般不能增删改,可以查;表可以增删改查

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:46:40  更:2021-11-11 12:48:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:18:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码