Mysql视图应用

在这里插入图片描述
现在,我们将创建一个视图,将员工的姓名、部门和工资信息组合在一起。

CREATE VIEW EmployeeSalaryView AS
SELECT e.FirstName, e.LastName, e.Department, s.MonthlySalary
FROM Employees e
JOIN Salary s ON e.EmployeeID = s.EmployeeID;

通过这个视图,我们可以轻松地获取员工的姓名、部门和工资信息,而不必编写复杂的联接查询。

下面是通过查询视图获得的结果:

SELECT * FROM EmployeeSalaryView;

结果如下:

在这个例子中,我们创建了一个视图(EmployeeSalaryView),它将员工表和工资表联接起来,并返回了员工的姓名、部门和工资信息。通过查询视图,我们可以方便地获取这些信息。

至少,写第一次复杂的查询sql 放到视图里了,以后对于不同的复杂查询,可以减少第二次 三次…写复杂sql的过程。

一次费事,方便多次。

这个例子展示了视图的好处:

隐藏底层数据表:外部程序无需了解实际的数据结构,只需要访问视图即可获取所需信息。
只读访问:外部程序无法通过视图直接修改数据,保证数据的完整性和安全性。
重用 SQL 语句:通过创建视图,复杂的联接查询被封装在视图中,外部程序可以直接访问视图以获取所需的数据。
数据格式化:视图可以返回与实体数据表不同的数据格式,例如在这个例子中,将员工表和工资表联接并返回一个包含员工姓名、部门和工资的结果集。

这个例子只是一个简单的演示,实际应用中,视图可以用于更复杂的查询和数据处理需求。

(1)设计视图
1) 建立一个名为V_CX_ZG的视图,功能是从职工信息表中查询非汉族的职工记录,并按出生日期排序。(该视图用于“固定条件查询”功能)
MYSQL>CREATE OR REPLACE VIEM V_CX_ZG AS SELECT NATIONAL,BRITH FROM EMPLOYEE WHERE NATIONAL NOT IN('汉') GROUP BY BRITH;
MYSQL>SELECT * FROM V_CX_ZG;

2) 建立一个名为V_CX_GZ的视图,功能是从工资档案表中查询岗位工资和补贴都高于500元的记录,要求显示出部门名称、姓名、性别、职称、基本工资、岗位工资、补贴和奖金,并按部门和基本工资的降序排列。(该视图用于“固定条件查询”功能)
MYSQL>CREATE OR REPLACE VIEW V_CX_GZ AS SELECT A.DEPARTMENT_NAME,A.EMPLOYEE_NAME,A.GENDER,A.TITLE,B.BASIC_WAGE,B.POST_WAGE,B.SUBSIDIES,B.FUND FROM EMPLOYEE A LEFT JOIN WAGE B ON (A.EMPLOYEE_ID=B.EMPLOYEE_ID)  WHERE (B.POST_WAGE >500) AND (B.SUBSIDIES >500);
MYSQL>SELECT * FROM V_CX_GZ;


3) 建立一个所有职工工资统计视图V_ZGGZTJ,计算所有人员的基本工资的总和、平均值、最大值和最小值。(该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_ZGGZTJ AS SELECT SUM(BASIC_WAGE),AVG(BASIC_WAGE),MAX(BASIC_WAGE),MIN(BASIC_WAGE) FROM WAGE;
MYSQL>SELECT * FROM V_ZGGZTJ;

4) 建立一个各部门人数统计的视图V_BMTJ,功能是从职工信息表中统计各部门的人数。(该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_BMTJ AS SELECT DEPARTMENT_NAME,COUNT(DEPARTMENT_ANEM) FROM EMPLOYEE GROUP BY DEPARTMENT_NAME;
MYSQL>SELECT * FROM V_BMTJ;

5) 建立一个各类职称人数统计的视图V_ZCTJ,功能是从职工信息表中统计各类职称的人数。(该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_ZCTJ AS SELECT TITLE,COUNT(TITLE) FROM EMPLOYEE GROUP BY TITLE;
MYSQL>SELECT * FROM V_ZCTJ;

6) 建立一个各民族人数统计的视图V_MZTJ,功能是从职工信息表中统计各民族的人数。(该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_MZTJ AS SELECT NATIONAL,COUNT(NATIONAL) FROM EMPLOYEE GROUP BY NATIONAL;
MYSQL>SELECT * FROM V_MZTJ;

7)建立一个职工工资视图V_ZGGZ,功能是从职工信息、工资档案和工资发放三个表中查询所有职工的工资情况,其中包括部门名、姓名、性别、职称、基本工资、岗位工资、补贴、奖金、应得工资、其他加、其他扣、实发工资、发放日期。(其中:应得工资=基本工资+岗位工资+补贴+奖金+其他加;实发工资=基本工资+岗位工资+补贴+奖金+其他加-其他扣。)(该视图用于“选择条件查询”功能)
内部查询
MYSQL>CREATE OR REPLACE VIEW V_ZGGZ AS SELECT EMPLOYEE.DEPARTMENT_NAME,EMPLOYEE.EMPLOYEE_NAME,EMPLOYEE.GENDER,EMPLOYEE.TITLE,WAGE.BASIC_WAGE,WAGE.POST_WAGE,WAGE.SUBSICDIES,WAGE.FUND,WAGE.BASIC_WAGE+WAGE.POST_WAGE+WAGE.SUBSIDIES+WAGE.FUND+PWAGE.BAISE_WAGE AS TOTAL_WAGE,PWAGE.RAISE_WAGE,PWAGE.CUT_WAGE,WAGE.BASIC_WAGE+WAGE.POST_WAGE+WAGE.SUBSIDIES+WAGE.FUND+PWAGE.RAISE_WAGE-PWAGE.CUT_WAGE AS WAGES FROM EMPLOYEE INNER JOIN WAGE ON EMPLOYEE.EMPLOYEE_ID=WAGE.EMPLOYEE_ID INNER JOIN PWAGE ON  WAGE.EMPLOYEE_ID=PWAGE.EMPLOYEE_ID;
MYSQL>SELECT * FROM V_ZGGZ;


8) 建立一个月工资汇总视图V_YGZHZ,功能是从视图V_ZGGZ中统计每个月发放的基本工资、岗位工资、补贴、奖金、其他加、应得工资、其他扣、实发工资的总和。 (该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_YGZHZ AS SELECT SUM(BASIC_WAGE),SUM(POST_WAGE),SUM(SUBSIDIES),SUM(FUND),SUM(RAISE_WAGE),SUM(TOTAL_WAGE),SUM(WAGES) FROM V_ZGGZ;
MYSQL>SELECT * FROM V_YGZHZ;

9) 建立一个部门工资汇总视图V_BMGZHZ,功能是从视图V_ZGGZ中统计各个部门的基本工资、岗位工资、补贴、奖金、其他加、应得工资、其他扣、实发工资的总和。(该视图用于“数据统计”功能)
MYSQL>CREATE OR REPLACE VIEW V_BMGZHZ AS SELECT SUM(BASIC_WAGE),SUM(POST_WAGE),SUM(SUBSIDIES),SUM(FUND),SUM(RAISE_WAGE),SUM(TOTAL_WAGES),SUM(CUT_WAGE),SUM(WAGES) FROM V_ZGGZ GROUP BY DEPARTMENT_NAME;
MYSQL>SELECT * FROM V_BMGZHZ; 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/126541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQLChat 的 RBAC 之旅

去年 ChatGPT 在科技圈大火,到今年彻底破圈。各个领域都有相应的一些产品,数据库领域集中在 AI SQL,自然语言转 SQL,或者利用自然语言来管理数据库等。今天我们来体验一下该领域的 SQLChat 这款 AI 数据库客户端。 今天我们预设一…

招聘信息采集

首先&#xff0c;我们需要使用PHP的curl库来发送HTTP请求。以下是一个基本的示例&#xff1a; <?php // 初始化curl $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, "jshk.com.cn");// 设置URL curl_setopt($ch, CURLOPT_URL, "http://www…

不同语言采集【淘宝1688拼多多API】平台数据的方式

首先我们以taobao商品页面采集商品详情数据为例&#xff1a; 请求方式&#xff1a;HTTPS POST GET 请求地址&#xff1a;API接口 请求参数 请求参数&#xff1a;num_iid669646899650&is_promotion1 参数说明&#xff1a;num_iid:淘宝商品ID is_promotion:是否获取取…

web前端JS基础------制作一个获取验证码

1&#xff0c;需要一个定时器&#xff0c;和一个button&#xff0c;通过点击事件启动获取验证码 2&#xff0c;参考代码如下 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><…

RapidSSL证书

RapidSSL是一家经验丰富的证书颁发机构&#xff0c;主要专注于提供标准和通配符SSL证书的域验证SSL证书。在2017年被DigicertCA收购后&#xff0c;RapidSSL改进了技术并开始使用现代基础设施。专注于为小型企业和网站提供基本安全解决方案的SSL加密。RapidSSL它具有强大的浏览器…

Python中的Socket编程

目录 一、概述 二、Socket的基本概念 三、Python中的Socket编程 四、Socket的高级功能 1、多路复用&#xff08;multiplexing&#xff09;&#xff1a; 2、非阻塞式IO&#xff1a; 3、SSL加密&#xff1a; 4、服务端编程&#xff1a; 五、Socket编程的常见问题及解决方…

基于Quartz实现动态定时任务

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

深入探析隔离CAN收发器NSI1050-DDBR各项参数

NSI1050-DDBR是一个隔离的CAN收发器&#xff0c;可以完全与ISO11898-2标准兼容。 NSI1050-DDBR集成了两个通道的数字隔离器和一个高电平可靠性CAN收发器。 数字隔离器是基于Novosense电容隔离技术的氧化硅隔离。 高度集成的解决方案可以帮助简化系统设计并提高可靠性。 NSI1050…

Yolov8模型训练报错:torch.cuda.OutOfMemoryError

最近在使用自己的数据训练Yolov8模型的时候遇到了很多错误&#xff0c;下面将逐一解答。 问题报错 在训练过程中红字报错&#xff1a;torch.cuda.OutOfMemoryError: CUDA out of memory. 后面还会跟着一大段报错&#xff1a; Tried to allocate XXX MiB (GPU 0; XXX GiB to…

Vue23-props配置功能

Vue2&3-props配置功能 Vue2-props配置 功能&#xff1a;接收从其他组件传过来的数据&#xff0c;将数据从静态转为动态注意&#xff1a; 同一层组件不能使用props&#xff0c;必须是父组件传子组件的形式。父组件传数据&#xff0c;子组件接收数据。不能什么数据都接收&a…

EMNLP2023 | LLM作用下的成分句法分析基础研究

深度学习自然语言处理 原创作者&#xff1a;cola 自训练已被证明是一种有效的针对跨域任务的方法。传统的自训练方法依赖于有限且低质量的源语料库。为克服这一限制&#xff0c;本文提出用大型语言模型(LLM)增强自训练&#xff0c;以迭代地生成特定领域的语料库。并针对句法成分…

JavaEE初阶学习:Linux 基本使用和 web 程序部署

1.Linux的基本认识 Linux 是一个操作系统.(搞管理的系统) 和Windows都是同类产品~~ Linux 实际的场景: 1.服务器 2.嵌入式设备 3.移动端(手机)Android 其实就是Linux 1991年,还在读大学的 芬兰人 Linus Benedict Torvalds,搞了一个Linux 这样的系统0.01版,正式发布了~ 后…

Docker学习——⑥

文章目录 1、什么是存储卷?2、为什么需要存储卷?3、存储卷分类4、管理卷 Volume5、绑定卷 bind mount6、临时卷 tmpfs7、综合实战-MySQL 灾难恢复8、常见问题 1、什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立…

js各种简单事件处理(整理)

**## 获取当天昨天日期** // 当天日期 const today new Date();// 格式化当天日期为 YYYY-MM-DD 格式 const formattedToday today.toISOString().slice(0, 10);// 昨天日期 const yesterday new Date(); yesterday.setDate(yesterday.getDate() - 1);// 格式化昨天日期为 Y…

并查集模版以及两道例题

&#x1f4af; 博客内容&#xff1a;并查集 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是C…

DVWA - 2

文章目录 SQL Injectionlowmediumhigh SQL Injection low 输入 1&#xff0c;可以展示 id 1 的人员信息&#xff1a;输入 1’&#xff0c;有报错信息。可以看出是mysql数据库&#xff0c;‘‘1’’’ 去除两边的引号&#xff0c;再去除1两端的引号&#xff0c;可以看出闭合符…

Thales hsm是什么意思,有什么作用?

Thales HSM是一种硬件安全模块(Hardware Security Module&#xff0c;HSM)&#xff0c;是Thales公司开发的一种安全设备&#xff0c;用于保护和管理密码和数字证书。HSM是一种物理设备&#xff0c;通常用于需要高度安全性的环境中&#xff0c;如政府机构、金融机构、大型企业等…

底座(基座)模型是如何训练的?

我们把LLM的基本训练步骤分为两步&#xff0c;预训练和对齐&#xff1b;预训练我们非常熟悉&#xff0c;是bert-finetuning时代的基本原理&#xff0c;只不过LLM一般遵循自回归的逻辑&#xff0c;因此使用GPT模型的预训练方式&#xff1a;CLM&#xff08;具备因果关系的MLM&…

【Java 进阶篇】Java Filter 过滤器拦截路径配置详解

过滤器&#xff08;Filter&#xff09;是 Java Web 应用中一种强大的组件&#xff0c;它可以用于在请求到达目标资源之前或响应返回客户端之前执行一些预处理或后处理操作。其中&#xff0c;过滤器的拦截路径配置是非常重要的&#xff0c;它决定了过滤器会拦截哪些请求。在本文…

Kotlin系列之注解详解

目录 注解&#xff1a;file:JvmName 注解&#xff1a;JvmField 注解&#xff1a;JvmOverloads 注解&#xff1a;JvmStatic 注解&#xff1a;JvmMultifileClass 注解&#xff1a;JvmSynthetic 注解&#xff1a;file:JvmName file:JvmName(“XXX”) 放在类的最顶层&#x…