oracle 查询表字段_SQL基础----(四)复杂的子查询(select within select)

(一) 关键知识点

1.1 消化阶梯

18a3c4225ae4b275a0ec8db06d83f450.png
任何知识点,均可遵循此消化路径

1.2 功能点

1.2.1 视图

  • 案例

d4a933247e4fc8e940993b225710481f.png

42587b1a5a095cd2bc00eba3fd0309df.png

78a3b38c5050c4ef06cb1594a6fbb07a.png
选中视图,右键刷新,将会呈现新创建的视图

531c98ba568c7d6b05b65e2a1c9133b3.png
选中具体视图,右键弹出功能菜单,选择对应功能项
  • 注意事项

(1) 视图中存放的是sql语句,非表的实际数据,节省存储空间,动态更新较便捷;

(2) from子句中,视图名代替表名,运行时动态创建出一张临时表;

(3) 频繁/复杂的sql语句,保存成视图,可反复使用,节省存储空间;

(4) 避免:级联多级视图(降低效率),视图中插入数据(报错);

1.2.2 子查询

1.2.2.1 概况

  • 常规子查询(临时表)

d085074d9237a12ef69324a0ddf4a004.png
临时表“按性别汇总”,动态创建,动态删除,语句运行后自动消失;
  • 特殊子查询 (in,any,some,all)

8dbcf7fbb7876ee055924ecacea7a024.png

859dab597a099202766f2576f2f5a99b.png
any,任意一个,与some等价

5cbf11b003d35248d48a654571e51331.png
all,全部
  • 注意事项

(1) 确保逻辑运算的优先级,可以使用括号;

(2) 尽量避免子查询的层层嵌套,拖累效率;

(3) 子查询,可以嵌入select/from/where子句(目标对象:常量,字段,字段的运算);

(4) 注意子查询的功效,条件判断的值域一般不需要内外表字段的关联,组内判断需要关联子查询;

(5) 必须提前过滤异常值,直接用in,all,any比较会导致整体结果异常;

特殊处理:Null,>0则过滤掉异常值;字母顺序,name<=all(name)表示升序第一个字符,

(6)分组子句,在没有汇总函数时,未起作用,虽然不报语法错误;

(7)子查询的逻辑核心,是拆分问题,逐步回答(select within select);

1.2.2.2 标量子查询 (完成数值间比较)

  • 案例

d8c50ae03b34c0c59a07ddd15db00c69.png
单值,进行简单查询

746e7169a6725e0156916ad3bf78364b.png
结合关键字(in,any,some,all),进行复杂查询
  • 注意事项

(1) 有且仅能返回一行一列的结果,即单个值

1.2.2.2 关联子查询 (多表字段关联,单表数值比较)

  • 案例

9e879cfa7220949eda2b6b96cb3dff86.png

8f845532dd46c41b03a8269ee4209426.png
内外表关联,借助where子句实现;s2 仅在子查询里有效;
  • 注意事项

(1) 对单表中数据进行比较时,使用单表关联自身的关联子查询 ;

(2) 注意表的有效范围,正确访问;

(3) 注意表的关联条件,大因素相同,才成立的过滤条件;

(4) 关联子查询,一定注意是否需要包含与自身相比,注意过滤,或者条件中的等于号;

1.3 功能函数

  • 汇总函数

fc66b85cc342adbe0d22be1d8387ef37.png
  • 字符串函数

3f79faa4fbe5b94d1f68aa1588900f7d.png
  • 日期函数

6d50770543806b8e0daf8abd613a8357.png
  • 算术函数

51cc97aa5cd8cc66d8ab71aa10f0e221.png
round中-n,表示完成取整后的整数,最后一位抹掉零头

(二)SQL ZOO实操

42c369ecff4a8943c99ba0872927d650.png

844eef097490b9db90d2583af4301e5e.png

c4105004a6b48bd02d3951877babe949.png

2d4a17a044369bdfd605b3ac8c332567.png
between通过修改边界,或者用大于,小于拼接

fe8082a7051f5cac7e416fa136b901d8.png
注意,相乘,不会修改原始小数点的位置;必须放大倍数,取整才行;3%不等价于3.00% round(population/(select population from world where name = &amp;amp;amp;#39;Germany&amp;amp;amp;#39;),2)*100 等价于3.00%

2b081e9f4bf930cfc00f4c91f860eddb.png

996ac5ba9bcd7a677b63b48ad665e548.png
使用关联子查询时,需要严格注意关联条件的选择

48bc12afbbeadfb9aa198c6d8d213727.png
方法一:字符name = all()与关联,结合的使用

4dd936e7bc3529bdd3019b4b34b6343a.png
方法二:采用关联,排序和limit 1

4cb81bf54cbce2c033e147dab9ea8926.png
方法三:普通排序,手动比对结果一致,但是与系统正确结果相比未匹配成功

b49d27c156645aabe45df9dc6537dbc7.png
未有汇总需求,group by分组子句不建议使用

afed76339894a919331661ef8d934cc6.png
利用w1.name&amp;amp;lt;&amp;amp;gt;w2.name 不跟自身相比,all返回多行值,可以把3倍放到子查询中,或者左侧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值