JAVA / MySql 编程—— 第四章 高级查询(二)
1、 EXISTS和NOT EXISTS子查询:EXISTS关键字用来检测数数据库对象是否存在。
★EXISTS和NOT EXISTS的结果只取决于是否有返回记录,不取决于这些记录的内容,
所以EXISTS或NOT EXISTS子查询后SELECT语句中的字段列表通常是无关紧要的。
●EXISTS子查询:
|
在执行CREATE或DROP语句前,可以使用EXISTS语句判断该数据库对象是否存在,返回值是true或false。 Eg:如果存在数据表temp,则先删除它,然后重新创建。 DROP TABLE IF EXISTS temp; |
|
EXISTS也可以作为WHERE语句的子查询, 语法: SELECT …… FROM 表名 WHERE EXISTS(子查询) ◆EXISTS关键字后面的参数是一个任意的子查询,如果该子查询有返回值,则EXISTS子查询的结果为true,此时在执行外层查询语句。 如果字查询没有返回行,则EXISTS子查询的结果为false,此时外层与不在执行查询。 |
|
Eg:检查Logic Java课程最近一次考试。如果有成绩达到80分以上者,则显示分数排在前5名学员的学号和分数 SELECT `studentNo` AS 学号,`studentResult` 成绩 FROM `result` WHERE EXISTS ( #查询Logic Java最后一次考试成绩大于80的记录 SELECT * FROM `result` WHERE `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java' ) AND `examDate` = ( SELECT MAX(`examDate`) FROM `result` WHERE `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java') ) AND `studentResult` > 80) AND `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java') ORDER BY `studentResult` DESC LIMIT 5; #按成绩降序排序,显示前5名 |
|
Eg:
|
●NOT EXISTS子查询
|
EXISTS和IN一样,同样允许添加NOT关键字实现取反操作,NOT EXISTS表示不存在。 |
|
Eg:/*如果没有考试通过的学员,则平均分加5分*/ SELECT AVG(studentresult)+10 AS 平均分 FROM result WHERE NOT EXISTS ( #查询Logic Java最后一次考试成绩小于60的记录 SELECT * FROM `result` WHERE `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java' ) AND `examDate` = ( SELECT MAX(`examDate`) FROM `result` WHERE `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java') ) AND `studentResult` > 60) AND `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java') AND `examDate` = ( SELECT MAX(`examDate`) FROM `result` WHERE `subjectNo` = ( SELECT `subjectNo` FROM `subject` WHERE `subjectName` = 'Logic Java') ); |
2、 子查询注意事项:
|
1) 子查询语句可以嵌套在SQL与语句中任何表达式出现的位置: 在SELECT语句中,子查询可以被嵌套在SELECT语句的列、表和查询条件中, 即SELECT子句FROM子句、WHERE子句、GROUP BY子句和HAVING子句。 ❤嵌套在SELECT语句的SELECT子句中的子查询语句如下。 语法: SELECT (子查询) FROM 表名; ❤嵌套在SELECT语句的FROM子句中的子查询语句如下。 语法: SELECT * FROM (子查询) AS 表的别名; |
|
2)只出现在子查询中而没有出现在父查询中农的表不能包含在输出列表中 多层嵌套子查询的最终数据集值包含父查询(即最外层的查询)的SELECT子句中出现的字段, 子查询的输出结果通常会作为其外层子查询数据源或用于数据判断匹配。 |
JAVA / MySql 编程—— 第四章 高级查询(二)的更多相关文章
- JAVA / MySql 编程—— 第三章 高级查询(一)
1. 修改表: (1)修改表名语法: ALTER TABLE <旧表名> RENAME [ TO ] <新表名>: 注意:其中[TO]为可选参数,使用与否不影响结 ...
- JAVA / MySql 编程——第七章 JDBC
1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力: ●Java是通过JDBC技术实现对各种数据 ...
- JAVA / MySql 编程——第五章 事务、视图、索引、备份和恢复
1.事务(Transaction): 事务是将一系列数据操作绑成一个整体进行统一管理. 如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分. 如果事务执行是遇到错误 ...
- JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令
1. 创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password']; //user:用户名,host:主机名,passw ...
- java面向对象编程——第四章 类和对象
OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...
- Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象
1 参数(类型)推断 参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以 ...
- 《Java程序设计》第四章-认识对象
20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...
- [Java并发编程(四)] Java volatile 的理论实践
[Java并发编程(四)] Java volatile 的理论实践 摘要 Java 语言中的 volatile 变量可以被看作是一种 "程度较轻的 synchronized":与 ...
- 《Java 8实战》读书笔记系列——第三部分:高效Java 8编程(四):使用新的日期时间API
https://www.lilu.org.cn/https://www.lilu.org.cn/ 第十二章:新的日期时间API 在Java 8之前,我们常用的日期时间API是java.util.Dat ...
随机推荐
- Quartz使用(5) - Quartz的Job存储及集群部署
1. Job的存储与持久化 Quartz的JobStore接口定义了作业Job.触发器trigger.调度器Scheduler等数据存储机制.Quartz主要有两种Job存储类型:内存存储RAMJob ...
- POJ 3522 ——Slim Span——————【最小生成树、最大边与最小边最小】
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7102 Accepted: 3761 Descrip ...
- Socket网络通信之NIO
Socket网络通信之NIO NIO:new io ,java1.4开始推出的可非阻塞IO. java.nio 包,可解决BIO阻塞的不足 但比BIO学习.使用复杂. 可以以阻塞.非阻塞两种方式工作. ...
- Python人工智能之初识接口
本节需要的两个工具: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w6hk 2.baidu-aip: pip ins ...
- Eclipse Action
Interface IAction package org.eclipse.jface.action; import org.eclipse.core.commands.IHandlerAttribu ...
- Android自定义控件练手——波浪效果
这一次要绘制出波浪效果,也是小白的我第一次还望轻喷.首先当然是展示效果图啦: 一.首先来说说实现思路. 想到波浪效果,当然我第一反应是用正余弦波来设计啦(也能通过贝塞尔曲线,这里我不提及这个方法但是在 ...
- Arm启动流程解析
谈到arm的启动流程不得不说的是bootloader,但是我这篇文章主要来谈谈arm启动流程的,所以bootloader只是跟大家简介一下就ok.这篇文章我会谈到以下内容: 1.bootloader简 ...
- 悟空crm-0.5.4 (OpenLogic CentOS7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: 5kcrm0.5.4 centos7.2 lamp stack 5.6.22 commercial crm lamp 服务优惠价: 按服务商许可协议 ...
- yii网站未来改进
1.去掉debug模式 2.下载文件复选 3.文章发布.评论.赞.标签等系统
- php的yii框架开发总结5
MVC架构之model类: 我的日报系统用到的数据表:tbl_dailyreport表 其中anthor_id是外键,对应tbl_user数据表的主键id,下面是tbl_user表 class Dai ...
