中小企业网站建设费用/java培训学费多少钱

中小企业网站建设费用,java培训学费多少钱,企业网站不足,青海政府网站建设公司数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建…

数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。

本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建
链接:点这里跳转
自行创建步骤如下:

0、预备工作

0.1 建表

-- 创建 dept 表(部门表)
CREATE TABLE dept (deptno INT PRIMARY KEY,  -- 部门编号dname VARCHAR(14),       -- 部门名称loc VARCHAR(13)          -- 部门位置
);-- 创建 emp 表(员工表)
CREATE TABLE emp (empno INT PRIMARY KEY,   -- 员工编号ename VARCHAR(10),       -- 员工姓名job VARCHAR(9),          -- 职位mgr INT,                 -- 上级经理编号hiredate DATE,           -- 入职日期sal DECIMAL(7,2),        -- 工资comm DECIMAL(7,2),       -- 奖金deptno INT,              -- 部门编号FOREIGN KEY (deptno) REFERENCES dept(deptno)
);-- 创建 salgrade 表(工资等级表)
CREATE TABLE salgrade (grade INT PRIMARY KEY,   -- 工资等级losal DECIMAL(7,2),      -- 最低工资hisal DECIMAL(7,2)       -- 最高工资
);

0.2 插入测试数据

-- 插入 dept 表数据
INSERT INTO dept (deptno, dname, loc) VALUES
(10, 'ACCOUNTING', 'NEW YORK'),
(20, 'RESEARCH', 'DALLAS'),
(30, 'SALES', 'CHICAGO'),
(40, 'OPERATIONS', 'BOSTON');-- 插入 emp 表数据
INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES
(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000.00, NULL, 20),
(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100.00, NULL, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);-- 插入 salgrade 表数据
INSERT INTO salgrade (grade, losal, hisal) VALUES
(1, 700, 1200),
(2, 1201, 1400),
(3, 1401, 2000),
(4, 2001, 3000),
(5, 3001, 9999);

创建好以后,如果表的内容和下图一样,那基本就没问题了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、复合表的查询

1.查询工资高于500 或 岗位为MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的J

根据上述的要求,我们可以发现,要查询的表总共两个条件,工资高于500 或 岗位为MANAGER, 首字母为J。 根据上述的两个条件,我们可以写出对应的sql查询语句: select name, job , sal from emp where (sal >= 500 or job = 'MANAGER') and enum like 'J%'; 这两个条件可以看成是并列条条件

在这里插入图片描述

2.按照部门号升序而雇员工资降序的顺序对表的内容排序

先观察一下这里的需求,首先就是要部门号升序,然后就是雇员的工资降序,所以这个案例的需求非常简单。根据这个要求我们可以写出sql查询语句:select deptno , sal from emp order by deptno asc , sal desc;

在这里插入图片描述

3. 使用年薪进行降序排序
这里我们需要特别注意的一个点就是年薪这个概念,年薪在这里是包括了12个月的月薪加上奖金,而这里奖金就是comm,但是奖金这一列很多都是NULL,而NULL是不参与计算的,所以这里就需要用ifnull(expression ,values)(如果expression为null,返回的值为values否则返回expression)利用这个函数的特点,我们就可以算出年薪 = 12 x sal + ifnull(comm,0); 根据这个要求我们可以写出sql查询语句:select sal * 12 + ifnull(comm,0) 年薪 from emp order by 年薪 desc;

在这里插入图片描述

4.显示工资最高的员工名字和工作岗位
这条语句的要求非常简单,我们可以直接写出对应sql查询语句: select ename , job from emp where sal = (select max(sal) from emp);这里select是可以嵌套使用的,执行顺序就和C语言的中函数一样。当然,这里我们也可以分两步走,先把最高工资打印出来,再让第二条语句中 sal = 最高工资,结果是一样的。

在这里插入图片描述

5. 显示工资高与平均工资的员工信息
这个例子的要求和上面一个例子相差无几,做法也都差不多,先求出平均工资,再作比较即可。我们可以直接写出对应sql查询语句:select * from emp where sal >= (select avg(sal) from emp);

在这里插入图片描述

6.显示每个部门的平均工资与最高工资
这里也是只有两个条件,我们将平均工资和最高工资列出即可。我们可以直接写出对应sql查询语句:select deptno ,avg(sal),max(sal) from emp group by deptno;这里是先分组,然后再对内中内容进行筛查。

在这里插入图片描述

7.显示平均工资低于两千的部门号和它的平均工资
这个例子就需要和上面的例子一样,先对部门进行分组,分完组后就可以计算平均工资,然后再比对工资低于两千的部门。根据上述的条件,我们可以直接写出对应sql查询语句:select deptno ,avg(sal) 平均工资 from emp group by deptno having 平均工资 < 2000;这里的having是最后执行的,所以可以使用平均工资这个别名。

在这里插入图片描述

8.显示每种岗位的雇员总数,平均工资
这个例子和上面几个例子大差不差,这里不再赘述,直接把对应的语句写出:select deptno ,count(job) 人数,avg(sal) 平均工资 from emp group by job;

在这里插入图片描述

2、多表复合查询

前面我们介绍了单张表下的复合查询,但在日常生活中还存在非常的多表查询的情况。

1、显示每一个雇员名,雇员工资和部门名称
这个例子中和上面不同就是我们需要去查询部门名称,部门名称是在dept这张表中,而雇员名称以及工资在emp这张表中。这就需要我们将两张表的内容合并成一张表,也就是对第一张表的每一行内容与第二张表整张表进行组合,这种穷举的方式也叫作笛卡尔积。当然这种方式会生成很多没有啥意义的组合(部门号不对应)。这里我们就可以使用where进行筛查,select * from emp, dept where emp.deptno = dept.deptno结果如下图
>![
经过上述sql语句的筛查基本已经把要求给完成了,我们这里稍微完善一下即可:select ename,sal,dname from emp, dept where emp.deptno = dept.deptno
在这里插入图片描述

3、自链接

前面我们了解了不同表之间的进行链接查询,下面介绍一下同一张表之间链接。以下面这个例子为例:a.显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号–empno)。这个例子中,我们需要将在FORD的领导编号查出,然后在从当前这张表中查领导的相关信息。由此我们可以写出对应的sql语句:select empno,ename from emp where emp.empno=(select mgr from emp where ename=‘FORD’);

在这里插入图片描述

4、子查询

概念:子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。前面已有描述,这里就不再赘述

4.1、单行子查询

单行子查询表示的就是返回结果只有一行的子查询,以下面这一个通过下面这个例子帮助了解:
显示SMITH同一部门的员工
这个案例比较简单,我们只需先对SMITH先做子查询即可:select * from emp where deptno = (select deptno from emp where ename=‘smith’);

在这里插入图片描述

4.3、多行子查询

这种子查询返回结果有很多行,但是原本子查询返回结果只有一行,所以这里我们需要将引入一些关键字,才能使其达到多行子查询的效果。

  • in关键字
  • all关键字
  • any关键字

首先我们可以通过一个例子了解一下in关键字:a.查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己.
在这个例子中,我们要先查询10号部门的工作岗位相同的雇员,然后才是其它的相关信息,最后剔除十号部门。
第一步:select distinct job from emp where deptno=10;
第二步:select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10);这里的in在where中作为一种条件判断,表示判断job否在子查询中的表中。
第三步:select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10) and deptno<>10;
在这里插入图片描述

然后,我们通过另外一个例子来增加对all的理解:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号.这里的all关键字其实和上面的in关键字一样,也是where中作为一种条件判断,代表子查询的所有结果。我们可以直接写出对应的sql语句:select ename, sal, deptno from emp where sal > all(select sal from emp where deptno=30);

在这里插入图片描述

最后一个any,作用和上面两个关键字大同小异,表示子查询的任意一个结果,用一个例子帮助理解:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工).,对应的sql语句:select ename, sal, deptno from emp where sal > any(select sal from emp where deptno=30);

在这里插入图片描述

4.4、多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。以下面例子为例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人这里第一步就是筛出SMITH部门和岗位相同的雇员,然后剔除SMITH,我们可以用括号的方式来对子查询各列的数据进行查询比对,具体方式如下: select ename from emp where (deptno, job)=(select deptno, job from emp where ename=‘SMITH’) and ename <> ‘SMITH’;

4.5、from字句中使用子查询

通过对前面的相关知识的了解,我们可以知道,子查询本质其实就是一张新的临时表,所以本质上我们查表都是在查一张表,就是将临时表和原表进行处理后的一张新表。既然上面 where 后面能够使用子查询,那from后面也必然是可以使用子查询的。from后面使用子查询就是将子查询生成的临时表与另外的表做笛卡尔积生成新的表,在从新的表中对数据进行筛查。下面用一个例子来帮助理解:显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
对应的sql语句://获取各个部门的平均工资,将其看作临时表
select ename, deptno, sal, format(asal,2) from emp, (select avg(sal) asal, deptno dt from emp group by deptno) tmp where emp.sal > tmp.asal and emp.deptno=tmp.dt;需要
需要注意的时from中子查询形成的临时表要有临时的名称。

5、合并查询

由于这个合并查询并不多见,使用率也较低,所以这里简单介绍即可。

union操作符:该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。例子:将工资大于2500或职位是MANAGER的人找出来。 sql语句:select ename, sal, job from emp where sal>2500 union select ename, sal, job fromemp where job='MANAGER';

union all操作符:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。例子:将工资大于25000或职位是MANAGER的人找出来。sql语句:select ename, sal, job from emp where sal>2500 union all select ename, sal, job from emp where job='MANAGER';

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter 开发web端的性能优化

参考资料 Flutter for Web 首次首屏优化 ——JS 分片优化_main.dart.js-CSDN博客文章浏览阅读1.4k次。本文介绍了如何通过延迟加载组件和js分片优化Flutter for Web应用的加载速度。在实践中&#xff0c;通过按需加载减少js文件大小&#xff0c;使用并行加载提升加载效率。通过…

Java定时任务的三重境界:从单机心跳到分布式协调

《Java定时任务的三重境界&#xff1a;从单机心跳到分布式协调》 本文将以生产级代码标准&#xff0c;揭秘Java定时任务从基础API到分布式调度的6种实现范式&#xff0c;深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异&#xff0c;并给出各方案的性能压…

QT QML实现音频波形图进度条,可点击定位或拖动进度

前言 本项目实现了使用QT QML创建一个音频波形图进度条的功能。用户可以在界面上看到音频波形图&#xff0c;并且可以点击进度条上的位置进行定位&#xff0c;也可以拖动进度条来调整播放进度。可以让用户更方便地控制音频的播放进度&#xff0c;并且通过音频波形图可以直观地…

高速网络包处理,基础网络协议上内核态直接处理数据包,XDP技术的原理

文章目录 预备知识TCP/IP 网络模型&#xff08;4层、7层&#xff09;iptables/netfilterlinux网络为什么慢 DPDKXDPBFPeBPFXDPXDP 程序典型执行流通过网络协议栈的入包XDP 组成 使用 GO 编写 XDP 程序明确流程选择eBPF库编写eBPF代码编写Go代码动态更新黑名单 预备知识 TCP/IP…

[每周一更]-(第137期):Go + Gin 实战:Docker Compose + Apache 反向代理全流程

文章目录 **1. Go 代码示例&#xff08;main.go&#xff09;****2. Dockerfile 多段构建**3.构建 Docker 镜像**4. docker-compose.yml 直接拉取镜像****5. 运行容器****6. 测试 API**7、配置域名访问**DNS解析&#xff1a;将域名转换为IP地址****DNS寻址示例** 8.错误记录 访问…

Qt之MVC架构MVD

什么是MVC架构&#xff1a; MVC模式&#xff08;Model–view–controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;把软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controll…

(C语言)理解 回调函数 和 qsort函数

一. 回调函数 1. 什么是回调函数&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是通过 函数指针 调用的函数。其本质是&#xff1a; 将函数作为参数传递给另一个函数&#xff0c;并在特定条件下被调用&#xff0c;实现 反向控制。 2. 回调函数的使用 回调函…

vscode记录

vs code 下载安装&#xff0c;git 配置&#xff0c;插件安装_vscode安装git插件-CSDN博客 手把手教你在VS Code中使用 Git_vscode如何输入git命令-CSDN博客 VS Code | 如何快速重启VS Code&#xff1f;_vscode 怎么一键全部重启-CSDN博客 1&#xff0c;安装插件与git集成 2&am…

大数据学习(80)-数仓分层

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

数智读书笔记系列021《大数据医疗》:探索医疗行业的智能变革

一、书籍介绍 《大数据医疗》由徐曼、沈江、余海燕合著&#xff0c;由机械工业出版社出版 。徐曼是南开大学商学院副教授&#xff0c;在大数据驱动的智能决策研究领域颇有建树&#xff0c;尤其在大数据驱动的医疗与健康决策方面有着深入研究&#xff0c;曾获天津优秀博士论文、…

SpringSecurity——前后端分离登录认证

SpringSecurity——前后端分离登录认证的整个过程 前端&#xff1a; 使用Axios向后端发送请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><script src"https://cdn…

qt下载和安装教程国内源下载地址

qt不断在更新中&#xff0c;目前qt6日渐成熟&#xff0c;先前我们到官方下载或者国内镜像直接可以下载到exe文件安装&#xff0c;但是最近几年qt官方似乎在逐渐关闭旧版本下载通道&#xff0c;列为不推荐下载。但是qt5以其广泛使用和稳定性&#xff0c;以及积累大量代码使得qt5…

Mysql架构理论部分

Mysql架构是什么&#xff1f;实际可以理解为执行一条sql语句所要经历的阶段有哪些&#xff01; 1.连接层 &#xff08;1&#xff09;客户端发起连接 客户端通过TCP/IP、Unix Socket或命名管道等方式向Mysql服务器发起链接请求 想要了解tcp与udp的区别&#xff0c;可以参考这…

架构师面试(十九):IM 架构

问题 IM 系统从架构模式上包括 【介绍人模式】和 【代理人模式】。介绍人模式也叫直连模式&#xff0c;消息收发不需要服务端的参与&#xff0c;即客户端之间直连的方式&#xff1b;代理人模式也叫中转模式&#xff0c;消息收发需要服务端进行中转。 下面关于这两类模式描述的…

【服务器】RAID0、RAID1、RAID5、RAID6、RAID10异同与应用

目录 ​编辑 一、RAID概述 1.1 磁盘阵列简介 1.2 功能 二、RAID级别 2.1 RAID 0&#xff08;不含校验与冗余的条带存储&#xff09; 2.2 RAID1&#xff08;不含校验的镜像存储&#xff09; 2.3 RAID 5 &#xff08;数据块级别的分布式校验条带存储&#xff09; 4、RAI…

MySQL身份验证的auth_socket插件

在Ubuntu 20.04 LTS上&#xff0c;MySQL 8.0默认使用auth_socket插件进行身份验证&#xff0c;可能存在意想不到的情况。 一、auth_socket插件 在使用sudo mysql或通过sudo切换用户后执行任何MySQL命令时&#xff0c;不需要输入密码或错误密码都可以正常登入mysql数据库&…

使用Python在Word中创建、读取和删除列表 - 详解

目录 工具与设置 Python在Word中创建列表 使用默认样式创建有序&#xff08;编号&#xff09;列表 使用默认样式创建无序&#xff08;项目符号&#xff09;列表 创建多级列表 使用自定义样式创建列表 Python读取Word中的列表 Python从Word中删除列表 在Word中&#xff…

软考-软件设计师-计算机网络

一、七层模型 中继器&#xff1a;信号会随着距离的增加而逐渐衰减&#xff0c;中继器可以接受一端的信息再将其原封不动的发给另一端&#xff0c;起到延长传输距离的作用&#xff1b; 集线器&#xff1a;多端口的中继器&#xff0c;所有端口公用一个冲突域&#xff1b; 网桥&…

关于Flask框架30道面试题及解析

文章目录 基础概念1. 什么是Flask?其核心特性是什么?2. Flask和Django的主要区别?3. 解释Flask中的“路由”概念。如何定义动态路由?核心组件4. Flask的请求上下文(Request Context)和应用上下文(Application Context)有什么区别?5. 如何访问请求参数?POST和GET方法的…

C++20 中 `constexpr` 的强大扩展:算法、工具与复数库的变革

文章目录 一、constexpr 在 <algorithm> 中的应用1. 编译时排序2. 编译时查找 二、constexpr 在 <utility> 中的应用1. 编译时交换2. 编译时条件交换 三、constexpr 在 <complex> 中的应用1. 编译时复数运算 四、总结 C20 对 constexpr 的增强是其最引人注目…