当前位置: 首页 > wzjs >正文

手机建网站 教程外链兔

手机建网站 教程,外链兔,专注江苏网站建设,网站怎么做外链接地址前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。 基本查询回顾与 子查询 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降序排序 注意事…

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。 

基本查询回顾与 子查询 

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

  • 按照部门号升序而雇员的工资降序排序

  • 使用年薪进行降序排序

注意事项:

年薪的结构体系时月薪*12 + 奖金,但是如果某个职位的奖金没有奖金,那么奖金列为空,这和有奖金但是奖金是0是不一样的,null 是不参与运算的。 

这里进行处理的时候使用ifnull函数将null当作0进行处理,避免null不参与运算导致的结果不准确。

  • 显示工资最高的员工的名字和工作岗位

  • 显示工资高于平均工资的员工信息

  • 显示每个部门的平均工资和最高工资

  • 显示平均工资低于2000的部门号和它的平均工资

  • 显示每种岗位的雇员总数,平均工资

多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询。

例如,有一个这样的查询要求:显示雇员名、雇员工资以及所在部门的名字

因为上面的数据来自EMP和DEPT表,因此要联合查询

所谓的联合查询就是将两张表进行拼接起来,进行拼接是采用如上图所示的暴力枚举进行的

select * from 表1,表2

但是进行暴力拼接的很多信息都是没有用的,例如部门号不同的信息组合到了一起,我们需要进行筛选出来部门号一致的有效信息。

最后将所需要的信息进行挑选出来即可

  • 显示部门号为10,员工名和工资

  • 显示各个员工的姓名,工资,及工资级别

自连接

既然两个不同的表可以进行做笛卡尔积,那么 一张表能不能做笛卡尔积呢??

直接进行是不可以的,但是可以先进行重命名然后在进行做笛卡尔积,这种行为称为自连接

什么样的场景需要进行自连接呢??

  • 显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号--empno)

首先说明一下为什么要在这种情况下使用自连接,要想进行查找员工的领导,需要从emp表中进行查找领导的编号,但是呢领导也是属于员工的,先通过该表进行查找到领导的员工号,再通过该员工号进行查找对应的信息。

既可以使用自连接的方式进行查找

-- 使用到表的别名 --from emp leader, emp worker,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别

也可以使用子查询的方式进行查找

子查询

子查询与where

子查询是放在 SELECTFROMWHERE 子句中的一个查询语句,其结果被外层查询使用

单行子查询

查询结果 一行一列

  • 显示SMITH同一部门的员工

多行子查询

查询结果只有单列,但是单列中有多行

in 关键字;

在子查询返回的多个值中进行等值匹配

表达式 IN (子查询)
  • 查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

 

all 关键字;

当前值必须满足对子查询返回的所有值都成立

表达式 >/=/< ALL (子查询)
  • 显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

any 关键字;

当前值只需满足对某一个值成立即可

表达式 >/=/< ALL (子查询)
  • 显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门 的员工)

多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言 的,而多列子查询则是指查询返回多个列数据的子查询语句

查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人

mysql> select ename from EMP where (deptno, job)=(select deptno, job from EMP where 
ename='SMITH') and ename <> 'SMITH';
+-------+
| ename |
+-------+
| ADAMS |
+-------+

在from子句中使用子查询

子查询在两个语句中最常用的两个子句,一个是在where 语句中 判断条件,一个是在from语句中 充当笛卡尔积

多表查询的核心指导思想:

解决多表的问题的本质:想办法将多表转化成单表,所以mysql中,所有的select的问题全部都可以转化成单表问题

  • 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
mysql> 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;
+-------+--------+---------+----------------+
| ename | deptno | sal     | format(asal,2) |
+-------+--------+---------+----------------+
| FORD  |     20 | 3000.00 | 2,175.00       |
| SCOTT |     20 | 3000.00 | 2,175.00       |
| JONES |     20 | 2975.00 | 2,175.00       |
| BLAKE |     30 | 2850.00 | 1,566.67       |
| ALLEN |     30 | 1600.00 | 1,566.67       |
| KING  |     10 | 5000.00 | 2,916.67       |
+-------+--------+---------+----------------+
  • 查找每个部门工资最高的人的姓名、工资、部门、最高工资

合并查询

在实际应用中,为了合并对各select 的执行结果,可以使用集合操作符 union ,union all

union

该操作符用于取地两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

http://www.dtcms.com/wzjs/310650.html

相关文章:

  • 四川住房和城乡建设厅网站题库怎么快速优化网站
  • 南昌网站建设有哪几家商品seo关键词优化
  • 中山小榄网站建设新型网络搜索引擎
  • 彩虹云商城百度seo排名优化费用
  • 网站流量突然暴增网络营销推广方法
  • 微信网站建设电话seo优化教学视频
  • 公司网站开发项目外包方案成品ppt网站国外
  • 党员写试卷需要在哪个网站做服装品牌营销策划方案
  • 一键抓取的网站怎么做整站优化seo
  • 兰州市住房建设局网站专业网络推广外包
  • 什么行业最容易做网站百度的网址
  • 访问美国网站慢济南新闻头条最新事件
  • 公网站建设关键词排名优化易下拉技巧
  • 记事本做网站素材代码广告推广的软件
  • 无锡网站制作公司报价网站推广怎样做
  • 网页设计模板html代码怎么学360优化关键词
  • 江西省建设工程有限公司竞价关键词优化软件
  • 哪些网站是营销型网站深圳seo优化排名公司
  • 计算机网站建设职业群怎样申请网站注册
  • 联合建设官方网站谷歌外贸平台叫什么
  • 洛阳做网站的搜狗站长管理平台
  • 网站开发制作案例企业自助建站
  • 网站建设平台协议书益阳网络推广
  • 网站正在建设中 html 模板三台网站seo
  • 西安网站建设制作价格百度网盘资源搜索入口
  • 辽阳网站seo生猪价格今日猪价
  • 武汉专业网站建设报价1688seo优化是什么
  • 竞价单页网站模板google seo优化
  • 企业网站建设需要哪些步骤手机百度app最新版下载
  • 页面设计脚怎么设计北京seo公司