综合练习

news2025/1/21 5:56:09

目录

查询每个员工的编号、姓名、职位、基本工资、部门名称、部门位置

确定要使用的数据表

确定已知的关联字段

查询每个员工的编号、姓名、职位、基本工资、工资等级

确定要使用的数据表

确定已知的关联字段 

查询每个员工的编号、姓名、职位、基本工资、部门名称、工资等级

确定所需要的数据表

 确定已知的关联字段


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

前面介绍了多表查询,实际上就是在 from子句之后增加新的数据表,每增加一张数据表就必须消除笛卡尔积(没有关联字段的表不能够进行多表查询) 

需要注意:不管你怎么优化,笛卡尔积永远存在,数据量都会很大,现在来巩固一下前面学习的知识点

查询每个员工的编号、姓名、职位、基本工资、部门名称、部门位置

确定要使用的数据表

emp 表:员工的编号、姓名、职位、基本工资

dept 表:部门名称、部门位置

确定已知的关联字段

员工与部门: emp.deptno=dept.deptno

第一步:查询出每个员工的编号、姓名、职位、基本工资。现在只需要使用 emp 一张数据表即可

SQL> select e.empno,e.ename,e.job,e.sal
  2  from emp e;

     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7369 SMITH                CLERK                     800
      7499 ALLEN                SALESMAN                 1600
      7521 WARD                 SALESMAN                 1250
      7566 JONES                MANAGER                  2975
      7654 MARTIN               SALESMAN                 1250
      7698 BLAKE                MANAGER                  2850
      7782 CLARK                MANAGER                  2450
      7839 KING                 PRESIDENT                5000
      7844 TURNER               SALESMAN                 1500
      7900 JAMES                CLERK                     950
      7902 FORD                 ANALYST                  3000
      7934 MILLER               CLERK                    1300
      8989 HELLO

已选择 13 行。

此时数据表 emp 别名命名为 e,并显示出该表每个员工的编号、姓名、职位和基本工资

第二步:查询出每个员工对应的部门信息,需要引入 dept 表(引入表的时候一定要考虑关联) 。这两张表直接可以利用 deptno 字段关联,利用 where子句来消除笛卡尔积

SQL> select e.empno,e.ename,e.job,e.sal,d.dname,d.loc
  2  from emp e,dept d
  3  where e.deptno=d.deptno;

     EMPNO ENAME                JOB                       SAL DNAME                        LOC
---------- -------------------- ------------------ ---------- ---------------------------- --------------------------
      7839 KING                 PRESIDENT                5000 ACCOUNTING                   NEW YORK
      7782 CLARK                MANAGER                  2450 ACCOUNTING                   NEW YORK
      7934 MILLER               CLERK                    1300 ACCOUNTING                   NEW YORK
      7902 FORD                 ANALYST                  3000 RESEARCH                     DALLAS
      7369 SMITH                CLERK                     800 RESEARCH                     DALLAS
      7566 JONES                MANAGER                  2975 RESEARCH                     DALLAS
      7900 JAMES                CLERK                     950 SALES                        CHICAGO
      7844 TURNER               SALESMAN                 1500 SALES                        CHICAGO
      7654 MARTIN               SALESMAN                 1250 SALES                        CHICAGO
      7521 WARD                 SALESMAN                 1250 SALES                        CHICAGO
      7499 ALLEN                SALESMAN                 1600 SALES                        CHICAGO
      7698 BLAKE                MANAGER                  2850 SALES                        CHICAGO

已选择 12 行。

二张表通过“e.deptno=d.deptno”进行关联,显示的数据字段增加数据表 dept 中的 dname 和 loc 字段

以上的操作属于之前基本概念的加强,并且给出了明确的关联字段。很多查询是不会明确给出关联字段的

查询每个员工的编号、姓名、职位、基本工资、工资等级

SQL> select * from salgrade;

     GRADE      LOSAL      HISAL
---------- ---------- ----------
         1        700       1200
         2       1201       1400
         3       1401       2000
         4       2001       3000
         5       3001       9999

确定要使用的数据表

emp 表:员工的编号、姓名、职位、基本工资

salgrade 表:工资等级

确定已知的关联字段 

尽管 emp 表中没有确定的字段与 salgrade 表中的字段一样,但仍然可以通过其他关系进行关联。

通过 salgrade 表中的两个字段形成范围进行管理,即员工表的 sal 字段的值落在 salgrade 表中的两个字段形成范围中,这时关联关系可以写成 emp.sal BETWEEN salgrade.losal AND salgrade.hisal

第一步:查询出每个员工的编号、姓名、职位、基本工资。现在只需要使用 emp 一张数据表即可

SQL> select e.empno,e.ename,e.job,e.sal
  2  from emp e;

     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7369 SMITH                CLERK                     800
      7499 ALLEN                SALESMAN                 1600
      7521 WARD                 SALESMAN                 1250
      7566 JONES                MANAGER                  2975
      7654 MARTIN               SALESMAN                 1250
      7698 BLAKE                MANAGER                  2850
      7782 CLARK                MANAGER                  2450
      7839 KING                 PRESIDENT                5000
      7844 TURNER               SALESMAN                 1500
      7900 JAMES                CLERK                     950
      7902 FORD                 ANALYST                  3000
      7934 MILLER               CLERK                    1300
      8989 HELLO

已选择 13 行。

第二步:增加 salgrade 表,增加了数据表之后就需要引入 where子句消除笛卡尔积

SQL> select e.empno,e.ename,e.job,e.sal,s.grade
  2  from emp e,salgrade s
  3  where e.sal between s.losal and s.hisal;

     EMPNO ENAME                JOB                       SAL      GRADE
---------- -------------------- ------------------ ---------- ----------
      7369 SMITH                CLERK                     800          1
      7900 JAMES                CLERK                     950          1
      7521 WARD                 SALESMAN                 1250          2
      7654 MARTIN               SALESMAN                 1250          2
      7934 MILLER               CLERK                    1300          2
      7844 TURNER               SALESMAN                 1500          3
      7499 ALLEN                SALESMAN                 1600          3
      7782 CLARK                MANAGER                  2450          4
      7698 BLAKE                MANAGER                  2850          4
      7566 JONES                MANAGER                  2975          4
      7902 FORD                 ANALYST                  3000          4
      7839 KING                 PRESIDENT                5000          5

已选择 12 行。

查询每个员工的编号、姓名、职位、基本工资、部门名称、工资等级

确定所需要的数据表

emp 表:编号、姓名、职位、基本工资

dept 表:部门名称

salgrade 表:工资等级

 确定已知的关联字段

员工与部门: emp.deptno=dept.deptno

员工与工资等级: emp.sal BETWEEN salgrade.losal AND salgrade.hisal

第一步:查询出每个员工的编号、姓名、职位、基本工资

SQL> select e.empno,e.ename,e.job,e.sal
  2  from emp e;

     EMPNO ENAME                JOB                       SAL
---------- -------------------- ------------------ ----------
      7369 SMITH                CLERK                     800
      7499 ALLEN                SALESMAN                 1600
      7521 WARD                 SALESMAN                 1250
      7566 JONES                MANAGER                  2975
      7654 MARTIN               SALESMAN                 1250
      7698 BLAKE                MANAGER                  2850
      7782 CLARK                MANAGER                  2450
      7839 KING                 PRESIDENT                5000
      7844 TURNER               SALESMAN                 1500
      7900 JAMES                CLERK                     950
      7902 FORD                 ANALYST                  3000
      7934 MILLER               CLERK                    1300
      8989 HELLO

已选择 13 行。

 第二步:加入部门名称,增加一张表就增加一个条件消除笛卡尔积

SQL> select e.empno,e.ename,e.job,e.sal,d.dname
  2  from emp e,dept d
  3  where e.deptno=d.deptno;

     EMPNO ENAME                JOB                       SAL DNAME
---------- -------------------- ------------------ ---------- ----------------------------
      7839 KING                 PRESIDENT                5000 ACCOUNTING
      7782 CLARK                MANAGER                  2450 ACCOUNTING
      7934 MILLER               CLERK                    1300 ACCOUNTING
      7902 FORD                 ANALYST                  3000 RESEARCH
      7369 SMITH                CLERK                     800 RESEARCH
      7566 JONES                MANAGER                  2975 RESEARCH
      7900 JAMES                CLERK                     950 SALES
      7844 TURNER               SALESMAN                 1500 SALES
      7654 MARTIN               SALESMAN                 1250 SALES
      7521 WARD                 SALESMAN                 1250 SALES
      7499 ALLEN                SALESMAN                 1600 SALES
      7698 BLAKE                MANAGER                  2850 SALES

已选择 12 行。

第三步:加入工资等级信息,与原始的消除笛卡尔积条件应该同时满足,所以使用 AND 连接

SQL> select e.empno,e.ename,e.job,e.sal,d.dname,s.grade
  2  from emp e,dept d,salgrade s
  3  where e.deptno=d.deptno and e.sal between s.losal and s.hisal;

     EMPNO ENAME                JOB                       SAL DNAME                             GRADE
---------- -------------------- ------------------ ---------- ---------------------------- ----------
      7839 KING                 PRESIDENT                5000 ACCOUNTING                            5
      7902 FORD                 ANALYST                  3000 RESEARCH                              4
      7566 JONES                MANAGER                  2975 RESEARCH                              4
      7698 BLAKE                MANAGER                  2850 SALES                                 4
      7782 CLARK                MANAGER                  2450 ACCOUNTING                            4
      7499 ALLEN                SALESMAN                 1600 SALES                                 3
      7844 TURNER               SALESMAN                 1500 SALES                                 3
      7934 MILLER               CLERK                    1300 ACCOUNTING                            2
      7654 MARTIN               SALESMAN                 1250 SALES                                 2
      7521 WARD                 SALESMAN                 1250 SALES                                 2
      7900 JAMES                CLERK                     950 SALES                                 1
      7369 SMITH                CLERK                     800 RESEARCH                              1

已选择 12 行。

在 emp 基本信息表中,有员工姓名、员工职位、入职日期等。如果现在把这 3 个 字段显示在同一个字段中,并且中间有分割符。

例如,现在想显示的结果为“SMITH 的岗位是 CLERK, 入职日期是 1980-12-27”

其实,这是比较简单的,我们可以在 select查询语句中,利用连接符把这些字段连接起来

SQL> select ename || '的岗位是' ||job||'入职日期是'||to_char(hiredate,'yyyy-mm-dd')
  2  from emp;

ENAME||'的岗位是'||JOB||'入职日期是'||TO_CHAR(HIREDATE,'YYYY-MM-DD')
----------------------------------------------------------------------------------------------------------------
SMITH的岗位是CLERK入职日期是1980-12-17
ALLEN的岗位是SALESMAN入职日期是1981-02-20
WARD的岗位是SALESMAN入职日期是1981-02-22
JONES的岗位是MANAGER入职日期是1981-04-02
MARTIN的岗位是SALESMAN入职日期是1981-09-28
BLAKE的岗位是MANAGER入职日期是1981-05-01
CLARK的岗位是MANAGER入职日期是1981-06-09
KING的岗位是PRESIDENT入职日期是1981-11-17
TURNER的岗位是SALESMAN入职日期是1981-09-08
JAMES的岗位是CLERK入职日期是1981-12-03
FORD的岗位是ANALYST入职日期是1981-12-03
MILLER的岗位是CLERK入职日期是1982-01-23
HELLO的岗位是入职日期是

已选择 13 行。

也就是说,我们在平时查询中,可以利用“||”连接符把一些相关的字段连接起来。这在报表视图中非常有用。而且,利用连接符还可以在字段中间加入一些说明性的文字,以方便大家阅读。这些使用连接符的方法可以大大提高内容的可读性。这也是我们在数据库设计过程中需要关注的一个内容

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

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

相关文章

如何系统地学习Python

建议系统学习Python的途径遵循理论与实践相结合的教学方法。以下是一个分阶段的学习计划: 阶段一:基础知识 理解Python的特点: 认识Python的历史与设计哲学。学习Python的基本语法和运行环境。 安装Python: 学习如何在不同操作系…

NNLM - 神经网络语言模型 | 高效的单词预测工具

本系列将持续更新NLP相关模型与方法,欢迎关注! 简介 神经网络语言模型(NNLM)是一种人工智能模型,用于学习预测词序列中下一个词的概率分布。它是自然语言处理(NLP)中的一个强大工具,…

从kafka如何保证数据一致性看通常数据一致性设计

一、前言 在数据库系统中有个概念叫事务,事务的作用是为了保证数据的一致性,意思是要么数据成功,要么数据失败,不存在数据操作了一半的情况,这就是数据的一致性。在很多系统或者组件中,很多场景都需要保证…

IO进程线程作业day1

1> 使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <unistd.h> int main(int argc, const char *argv[]) {//判断外部输入文件名是否规范if(argc!2){printf("in…

K8S之运用污点、容忍度设置Pod的调度约束

污点、容忍度 污点容忍度 taints 是键值数据&#xff0c;用在节点上&#xff0c;定义污点&#xff1b; tolerations 是键值数据&#xff0c;用在pod上&#xff0c;定义容忍度&#xff0c;能容忍哪些污点。 污点 污点是定义在k8s集群的节点上的键值属性数据&#xff0c;可以决…

ARMv8-AArch64 的异常处理模型详解之异常处理详解(进入异常以及异常路由)

在上篇文章 ARMv8-AArch64 的异常处理模型详解之异常处理概述Handling exceptions中&#xff0c;作者对异常处理整体流程以及相关概念做了梳理。接下来&#xff0c;本文将详细介绍处理器在获取异常、异常处理以及异常返回等过程中都做了哪些工作。 ARMv8-AArch64 的异常处理模型…

批量追踪中通快递

在物流信息的管理中&#xff0c;批量追踪中通快递单号一直是个让人头疼的问题。但有了固乔快递查询助手&#xff0c;这一切都变得轻而易举。 固乔快递查询助手&#xff0c;作为市场上备受好评的快递查询软件&#xff0c;专门针对批量查询需求进行了优化。用户只需将中通快递单号…

鸿蒙生态来了 ,60k 高薪向你招手

最近&#xff0c;各大平台都被华为鸿蒙不断刷屏。原因是在华为秋季发布会上&#xff0c;华为宣布启动鸿蒙原生应用&#xff0c;不再兼容安卓应用。一石激起千层浪&#xff0c;这无疑是IT界的一颗核弹&#xff0c;各大企业和开发者都纷纷开始加入“鸿蒙朋友圈”。 鸿蒙原生应用…

数据分析 — Matplotlib 、Pandas、Seaborn 绘图

目录 一、Matplotlib1、折线图2、柱状图3、水平条形图4、直方图5、散点图6、饼图 二、pandas1、折线图2、柱状图 三、seaborn1、散点图2、箱线图3、直方核密度图4、成对图 一、Matplotlib Matplotlib 是一个用于绘制数据可视化图形的 Python 库。它提供了丰富的绘图工具&#…

Eliminating Domain Bias for Federated Learning in Representation Space【文笔可参考】

文章及作者信息&#xff1a; NIPS2023 Jianqing Zhang 上海交通大学 之前中的NeurIPS23论文刚今天传到arxiv上&#xff0c;这次我把federated learning的每一轮看成是一次bi-directional knowledge transfer过程&#xff0c;提出了一种促进server和client之间bi-direction…

浅析Linux设备驱动:IO端口和IO内存

文章目录 概述IO端口和IO内存的区别 IO资源管理IO资源类型IO端口资源IO内存资源 IO资源分配 IO端口访问IO端口操作函数 IO内存访问IO内存操作函数 相关参考 概述 在计算机系统中&#xff0c;外部设备通常会提供一组寄存器或内存用于处理器配置和访问设备功能。这些寄存器或内存…

MCU电源控制(PWR)与低功耗

目录 一、STM32 的内核和外设电源系统管理&#xff1a; 二、MCU电源监控&#xff1a; 三、三种低功耗模式&#xff1a; 1、睡眠模式&#xff1a; 2、停止模式&#xff1a; 3、待机模式&#xff1a; 一、STM32 的内核和外设电源系统管理&#xff1a; ① 电池备份区域&#…

思迈特再获国家权威认证:代码自主率98.78%

日前&#xff0c;思迈特软件自主研发的商业智能与数据分析软件&#xff08;Smartbi Insight&#xff09;通过中国赛宝实验室&#xff08;工业和信息化部电子第五研究所&#xff09;代码扫描测试&#xff0c;Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩&#xf…

原创详解OpenAI Sora是什么?技术先进在哪里?能够带来什么影响?附中英文技术文档

一&#xff1a;Sora是什么 Sora是一个文本到视频的模型&#xff0c;由美国的人工智能研究机构OpenAI开发。Sora可以根据描述性的文本提示&#xff0c;生成高质量的视频&#xff0c;也可以根据已有的视频&#xff0c;向前或向后延伸&#xff0c;生成更长的视频。 Sora的主要功…

【完全二叉树节点数!】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数

【完全二叉树】【深度优先】【广度优先】Leetcode 222 完全二叉树的节点个数 :star:解法1 按照完全二叉树解法2 按照普通二叉树&#xff1a;深度优先遍历 后序 左右中解法3 按照普通二叉树&#xff1a;广度优先遍历 层序遍历 ---------------&#x1f388;&#x1f388;题目链接…

【漏洞复现-通达OA】通达OA swfupload_new存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

~汉诺塔~(C语言)~

引言 汉诺塔&#xff08;Hanoi Tower&#xff09;&#xff0c;又称河内塔&#xff0c;源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从上面开始按大小顺序重新摆放在…

[计算机网络]深度学习传输层TCP协议

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录专栏&#xff1a;深度学习传输层TCP协议 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 [计算机网络]深度学习传输层TCP协议 前提概括一: TCP协议段格式二:确认应答三:超时重传四:…

IgG1 (mouse), ELISA kit——ENZO热销产品

90分钟内可得结果的高特异性定量ELISA试剂盒 免疫球蛋白G&#xff08;IgG&#xff09;是一种免疫球蛋白单体&#xff0c;由两条&#xff08;γ&#xff09;重链和两条轻链组成。每个IgG分子包含两个抗原结合域和一个效应&#xff08;Fc&#xff09;域。Enzo Life Sciences可提供…

【hcie-cloud】【29】华为云Stack数据安全服务

文章目录 前言数据安全概述数据产业发展和敏感数据上云趋势下对数据安全的需求重大隐私数据泄露事件云端数据安全问题成为业务上云的主要障碍数据安全相关法律法规密集出台数据安全法 - 欧盟的GDPR中国的数据安全法端到端考虑数据安全数据安全生命周期华为云Stack全生命周期数据…