ORACLE经典练习:三表联查:sporter,item,grade

oracle第五章多表连接习题答案(理解+剖析) 练习1 1.写一个查询,显示所有员工姓名,部门编号,部门名称。 select e.ename,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno; 注意:当使用多表连接的的时候一定要注意关联表 一般关联的条件是关联的表数减去一 如上所示,from了两个表 所以下面的where至少要有一个关联起它们的条件 否则会造成笛卡尔乘积 2... 阅读详情

--运动员表
create table sporter(
sporterid number(8) primary key,
sportername varchar2(50) not null,
sex varchar2(10),
department varchar2(50) not null
);

--项目表
create table item(
itemid varchar2(50) primary key,
itemname varchar2(50),
itemloc varchar2(50)
);

--积分表
create table grade(
sporterid  number(8),
itemid varchar2(50),
mark number(8) check(mark in (0,2,4,6)),
constraint grade_sporter_fk foreign key(sporterid) references sporter(sporterid),
constraint grade_item_fk foreign key(itemid) references item(itemid) on delete cascade
);
--on delete cascade 级联删除,删除父表数据时,会自动级联删除子表中的关联数据

insert into sporter values(1001, '李明','男','计算机系');
insert into sporter values(1002, '张三','男','数学系');
insert into sporter values(1003, '李四','男','计算机系');
insert into sporter values(1004, '王二','男','物理系');
insert into sporter values(1005, '李娜','女','心理系');
insert into sporter values(1006, '孙丽','女','数学系');


insert into item values('x001', '男子五千米','一操场');
insert into item values('x002','男子标枪','一操场');
insert into item values('x003', '男子跳远','二操场');
insert into item values('x004', '女子跳高','二操场');
insert into item values('x005', '女子三千米','三操场');

insert into grade values(1001,  'x001', 6);
insert into grade values(1002,  'x001', 4);
insert into grade values(1003,  'x001', 2);
insert into grade values(1004,  'x001', 0);
insert into grade values(1001,  'x003', 4);
insert into grade values(1002,  'x003', 6);
insert into grade values(1004,  'x003', 2);
insert into grade values(1005,  'x004', 6);
insert into grade values(1006,  'x004', 4);
insert into grade values(1003,  'x002', 6);
insert into grade values(1005 , 'x002', 4);
insert into grade values(1006,  'x002', 2);
insert into grade values(1001,  'x002', 0);

commit;

select * from sporter;
select * from item;
select * from grade;

A.求出目前总积分最高的系名,及其积分。
1.求出每个系各自有多少积分
select s.department dp,sum(g.mark) summark
from sporter s,grade g
where s.sporterid=g.sporterid
group by s.department
order by summark desc

2.积分最高的系
select dp,summark
from (select s.department dp,sum(g.mark) summark
        from sporter s,grade g
        where s.sporterid=g.sporterid
        group by s.department
        order by summark desc)
where rownum=1

B.找出在一操场进行比赛的各项目名称及其冠军的姓名。
select i.itemname,s.sportername
from item i,sporter s,grade g
where i.itemid=g.itemid and s.sporterid=g.sporterid
      and i.itemloc='一操场' and g.mark=6

C.找出参加了张三所参加的所有项目的其他同学的姓名。
select s.SPORTERNAME
from sporter s
where s.SPORTERNAME<>'张三'

张三所参加的所有项目
select g.itemid
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME='张三'

找出参加了x001和x003两个项目的同学的名字(张三除外)
select distinct s.SPORTERNAME
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME<>'张三'
      and g.ITEMID in (select g.itemid
                        from sporter s,grade g
                        where s.SPORTERID=g.SPORTERID and s.SPORTERNAME='张三')      
      
遇到查询结果有重复,两种办法:
1.第一种办法去重复(group by)
select s.SPORTERNAME
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME<>'张三'
      and g.ITEMID in ('x001','x003')
group by s.SPORTERNAME

2.第二种办法去重复(distinct)
select distinct s.SPORTERNAME
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME<>'张三'
      and g.ITEMID in ('x001','x003')
      
select s.SPORTERNAME
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME<>'张三'
      and g.ITEMID =all('x001','x003')--这里条件永远不能成立
      
如果要求其他同学必须全部参与了张三的项目
select s.SPORTERNAME
from sporter s,grade g
where s.SPORTERID=g.SPORTERID and s.SPORTERNAME<>'张三'
      and g.ITEMID in ('x001','x003')
group by s.SPORTERNAME
having count(s.SPORTERNAME)=(select count(g.itemid)
                                from sporter s,grade g
                                where s.SPORTERID=g.SPORTERID and s.SPORTERNAME='张三')

D.经查张三因为使用了违禁药品,其成绩都记0分,请在数据库中作出相应修改。
update grade set mark=0 where sporterid=(select sporterid from sporter where sportername='张三')
commit;
select * from grade;      
      
E.经组委会协商,需要删除女子跳高比赛项目。
delete from item where itemname='女子跳高';

可检验成果:select * from item;select * from grade;
 

ORACLE经典作业:三表联查:EMP,DEPT,SALGRADE 1、 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。 2、 列出薪金比“SMITH”或“ALLEN”多的所有员工的编号、姓名、部门名称、其领导姓名。 3、 列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。 4、 列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。 5、 列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。 6、 列出所有“CLERK”(办事员)的姓 阅读详情

相关推荐

Oracle多表连接练习

练习题 1. 列出所有员工的姓名、部门名称和工资 Select e.ename,d.dname,e.sal From emp e,dept d Where e.deptno=d.deptno; 2. 列出所有部门的详细信息和部门人数 Select d.deptno,d.dname, d.loc,count(e.empno) From emp e,dept d Where e. deptno(+)=d.deptno Group by d.deptno,d.dname,d.loc; 3. 列出所有员工的年工资、所在部门名称,按年薪升序排序 Select e.ename,e.sal*12 income,d.dname From emp e,dept d Where e.deptno=d.deptno Order by income;

Oracle【三表的联合查询】

原文:(https://www.cnblogs.com/cao-yin/p/9747522.html) insert into city values(1,'北京','彰显大气'); insert into city values(2,'上海','繁华都市'); insert into city values(3,'广州','凸显舒适'); insert into city values(...

蒗若晨曦 9896

李宏毅机器学习hw3

Homework 3 - Convolutional Neural Network 1作业概述 在food_11文件中有三个文件分别是training、validation、testing,打开training和validation可以看见总共有11种食物(0-10的类别编号),而testing是没有类别编号的。 然后用卷积神经网络对食物图片进行分类。 2导入用到的库 torch库 这个我弄了半天,直接pip总是timeout,用镜像源下下来又出现OSError: [WinError..

老问题的博客 4189

sql练习题

欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入MarkdownText-to-HTMLAuthorsJohnLuke。

weixin_49196517的博客 852

一分钟理解 AP(Affinity Propagation) 亲和⼒传播算法

这篇博客发出来后,我用 Rust 复现代码出现问题。为此,我对对照了 sklearn 的相关代码,反复比较了两天,发现一处 bug,把 += 误写成了 =,导致数据量大的时候完全无法聚类。这个debug过程让我仔细梳理的 AP 算法的计算过程,今天我对这篇博客做了大规模修改,以便能原样展现原论文思想。

程序猿视角 3221

点云直线检测-3DLineDetection复现

点云直线分割-Fast 3D line detection

阁楼 8156

oracle建表填数查,[数据库]Oracle的关于建表,约束,查询等的练习_星空网

Oracle的关于建表,约束,查询等的练习2013-07-080从建立一个简单表,到实现一些复杂查询的例子,DROP TABLE grade;DROP TABLE item;DROP TABLE sporter;CREATE TABLE sporter(sporteridNUMBER(4)PRIMARY KEY NOT NULL,nameVARCHAR(50)NOT NULL,sex...

weixin_33410492的博客 424

小白投资理财 - 解读威廉分形指标 Williams Fractals

威廉分形指标用于识别价格趋势中的关键点,帮助判断支撑位和阻力位。

wumingxiaoyao的博客 4343

Oracle.练习题

2018-07-31 1 ---练习3 2 ---创建sporter表 3 create table sporter( 4 sporterid number(10) constraint sport_id primary key, 5 sname varchar2(20) not null, 6 sex varchar2(10), 7 departm...

JING__12的博客 279

10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?

首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。

java专栏 714

AI编码规则:从提示工程到自动化,提升大模型生成代码质量

在软件工程领域,代码质量是保障软件可维护性、安全性和团队协作效率的核心。其背后遵循着从基础语法规范到架构设计原则的一系列工程实践。随着大语言模型(LLM)在代码生成任务中的广泛应用,如何确保AI生成的代码符合这些工程标准,成为一个关键的技术挑战。这涉及到将人类工程师积累的最佳实践,转化为机器可理解、可执行的明确约束。通过系统化的**编码规则**定义与集成,例如构建涵盖安全、风格、架构的多层次规则集,并将其融入**提示工程**或自动化工作流,可以显著引导AI产出更健壮、规范的代码。这种方法的价值在于,它能将模

weixin_42525189的博客 643

MySQL数据库知识运用1 建表查询习题

DML DQL 简答题, 实操题 每日更新已学知识及练习内容做题过程分享 巩固已学基础知识

Elysiuml的博客 308

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 244

sql(oracle)练习题

** 练习题 ** –1.看到一张新表(或者一套新表)应该做什么 1.首先看表里的字段有什么内容,整张表是关于什么的 2.判断这张表里的首要字段是什么(后边会涉及到主键-即唯一非空的那个字段,能够与其他数据区分开的字段) 3.如果是多张表,判断表与表之间的联系(尤其是通过什么字段有联系) 4.看一下具体内容,哪些字段是主要的,哪些字段是存的具体数据,哪些字段是存的码值 select * from students; select * from courses; select * from scores;

qq_37478222的博客 1621

华为HCIP的学习大纲和计划

HCIP(华为认证 ICT 高级工程师)核心围绕华为 ICT 技术体系,不同方向(如路由交换、云计算、安全等)课程目录不同,以下是最热门的。

迷逝 582

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

oracle 表关联面试,SQL常见面试题目(多表联查)

对原文章:https://blog.youkuaiyun.com/hou_miao/article/details/78854470,https://blog.youkuaiyun.com/crazygolf/article/details/38989461 进行整理一.学生表(学生id,姓名,性别,分数)student(s_id,name,sex,score)班级表(班级id,班级名称)class(c_id,c_na...

weixin_31736005的博客 1169

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

多表关联练习

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生。INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生。INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生。素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等。

qq_61739597的博客 464

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Mysql多表联查——经典50题

Mysql多表联查

weixin —> Ryan-0713 7571

oracle 三表关联查询

  oracle 三表关联查询 CreationTime--2018年7月4日17点52分 Author:Marydon 左连接实现三表关联 表A---------------------------------关联第一张表B-----------------------关联第二张表c 1.语法   select * from 表名A left join 表B on A.colu...

weixin_33717117的博客 6461

oracle基础-多表关联查询

多表查询 关联查询 外连接 左外连接 右外连接 子查询 自然连接

geminigoth的博客 6603

Oracle多表联合查询

—多表联合查询: –当需要获取的数据分布在多张中,考虑使用联合查询 –SQL92方式 –SQL99方式 –SQL92方式 –笛卡尔积:将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。 –结果的数量为所有表的数量的乘积。 select * from emp,dept where emp.deptno=dept.deptno --等值连接筛选 –概念:先做表的笛卡尔积,然后...

大白的博客 4975

Oracle多表联查总结笔记

1.内链接(查询两表共有的数据) (以两表为例) 语法: select 别称1.列名1,…别称2.列名N from 表1 别称1 inner join 表2.别称2 on 别称1.公共列=别称2.公共列 where 查询语句; 例如:查询员工编号,姓名,部门编号以及部门名称 select e.empNo,e.eName,d.deptNo,d.dName from emp e inner jo...

振藩兄的博客 2206

Oracle笔记(六) 多表查询

本次预计讲解的知识点 1、 多表查询的操作、限制、笛卡尔积的问题; 2、 统计函数及分组统计的操作; 3、 子查询的操作,并且结合限定查询、数据排序、多表查询、统计查询一起完成各个复杂查询的操作; 一、多表查询的基本概念 在之前所使用的查询操作之中,都是从一张表之中查询出所需要的内容,那么如果现在一个查询语句需要显示多张表的数据,则就必须应用到多表查询的操作,而多表查询的语法如下: ...

weixin_34351321的博客 1910

Oracle三表查询

--SQL92&99实现三表联合查询 --创建city表,使用图形操作即可 --给city添加测试数据 insert into city values(1,'商丘','历史文明古都'); insert into city values(2,'邯郸','历史文明古都'); insert into city values(3,'洛阳','历史文明古都'); ...

weixin_43421717的博客 790

oracle 三表关联查询 union all和left join 的运用问题详解(仅代表个人)

需求: 现有三张表, oa_fund_pla(简称a)、oa_fund_plan_i(简称b)、oa_fund_plan_ou(简称c) a为主表, 通过requestid与b和c相关联,其中b和c之间的数据没有任何对应关系,但是有一个列名同为amount的列. 刚开始,我只是通过简单的requestid将a与bc相关联 sql如下 SELECT distinct( oa_fund_plan.depmentname) , oa_fund_plan.operatorname , ...

Dominik_haha的博客 4968

运动会

有某个学生运动会比赛信息的数据库,保存了如下的表:   运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department) 项目item(项目编号itemid,项目名称itemname,项目比赛地点location) 成绩grade(运动员编号id,项目编号itemid,积分mark)   请用SQL/PLU

离开实践的理论是空洞的理论,没有理论指导的实践是盲目的实践 1725
上一篇: ORACLE经典作业:三表联查:EMP,DEPT,SALGRADE
下一篇: 正则表达式
好好羊
博客等级 码龄5年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值