第四章 MySQL高级查询(二)
第四章 MySQL高级查询(二)
一.EXISTS子查询
在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false。除此之外,exists也可以作为where语句的子查询,语法如下:
SELECT ……FROM 表名 WHERE EXISTS(子查询);
EXISTS关键字后面的参数是一个任意的子查询,如果该子查询没有返回行,则EXISTS子查询的结果为true,此时再执行外层查询语句。如果EXISTS子查询结果为false,此时外层语句不再执行查询。
例:检查Logic Java课程最近一次考试,如果成绩有80以上者,则显示分数排在前5位的学员和分数。
SELECT `studentNo` AS 学号,`studentResult` 成绩 FROM `result`
WHERE EXISTS(
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;
二.NOT EXISTS子查询
EXISTS 和IN一样,同时允许添加NOT关键字实现取反操作,NOT EXISTS表示不存在
例:检查Logic Java课程最近的一次考试,如果全部没有通过考试(60分及格线),则认为考试偏难,计算该次考试的平均分+5.
分析:所有人都没有通过考试,则“不存在成绩大于60的学生”,可以采用NOT EXISTS检测。
SELECT AVG(studentresult)+5 AS 平均分 FROM resulf
WHERE NOT EXISTS(
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')
)
三.子查询的注意事项
- 1. 子查询语句可以嵌套在SQL语句中任何表达式出现的位置。
语法: SELECT * FROM (子查询) AS 表的别名;
A)如果子查询结果为单行单列,则可以不用指定列的别名。
B) 如果子查询结果为多行多列,必须为表指定别名。
- 2. 只出现在子查询中而没有出现在父查询中的表不能包含在输出列中。
常见错误: SELECT * FROM (SELECT * FROM ‘表名’);错误
这个子查询的错误在于主查询语句的FROM子句是一个子查询语句,返回的是大于单行单列的数据,应该为子查询结果集指定别名。正确的代码如下:
语法: SELECT * FROM (SELECT * FROM `表名`) AS TEMP(别名);
第四章 MySQL高级查询(二)的更多相关文章
- accp8.0转换教材第4章MySQL高级查询(二)理解与练习
知识点:EXISTS子查询.NOT EXISTS子查询.分页查询.UNION联合查询 一.单词部分 ①exist存在②temp临时的③district区域 ④content内容⑤temporary暂时 ...
- 第三章 MySQL高级查询(一)
第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1. DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...
- accp8.0转换教材第3章MySQL高级查询(一)理解与练习
一.单词部分 ①constraint约束②foreign外键③references参考 ④subquery子查询⑤inner内部的⑥join连接 二.预习部分 1.修改表SQL语句的关键字是什么 RE ...
- MySQL高级查询(二)
EXISTS 和NOT EXISTS子查询 EXISTS子查询 语法: SELECT ……… FROM 表名 WHERE EXISTS (子查询); 例: SELECT `studentNo` A ...
- mysql 高级查询二
各种showshow columns from my_student;show grants for root;show aviables;show processlist;show table st ...
- MySQL高级查询与编程笔记 • 【目录】
章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...
- MySQL 高级查询操作
目录 MySQL 高级查询操作 一.预告 二.简单查询 三.显示筛选 四.存储过程 五.查询语句 1.作为变量 2.函数调用 3.写入数据表 备注 附表一 附表二 相关文献 博客提示 MySQL 高级 ...
- python进阶09 MySQL高级查询
python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...
- 第09章 MySQL子查询
第09章 MySQL子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入. SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要 ...
随机推荐
- 利用 VMWare 搭建随机拓扑网络
这篇文章是计算机网络上机实验课的作业. 实验任务:利用 VMWare 搭建一个由 5 个主机组成的随机拓扑的网络.要求该网络中至少有 2 个子网,两个路由器 .实验的网络拓扑图如下: 网络中有两个路由 ...
- 原生的AJAX
var XHR=null; if (window.XMLHttpRequest) { // 非IE内核 XHR = new XMLHttpRequest(); } else if (window.Ac ...
- Sublime Text 安装插件
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等.还可自定义键绑定,菜单和工具栏.Sublime Text 的主要功能包括:拼写检查,书签,完整的 ...
- Swing-JCheckBox用法-入门
JCheckBox是Swing中的复选框.所谓复选框就是指,可以同时存在多个这样的控件,它们可以有多个处于被选中状态.对于每一个复选框而言,它只有选中和未选中两种状态. JCheckBox的常用方法如 ...
- java201521123118《java程序设计》第3周总结
1. 本周学习 总结初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521123033《Java程序设计》第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521145048《java程序与设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自 ...
- 201521123100 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 201521123113《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图.Onenote或其他)归纳总结多数据库相关内容. JDBC体系架构: 2. 书面作业 Q1. MySQL数据库基本操作 1.1 建立数据库test ...
- 201521123016《Java程序设计》第12周学习总结
1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...