MySQl心得4--4--数据库查询4--子查询_MySQL

php中文网
发布: 2016-06-01 13:42:11
原创
2398人浏览过

bitsCN.com  1.子查询 在查询条件中,可以使用另一个查询的结果作为条件的一部分,例如,判定列值是否与某个查询的结果集中的值相等,作为查询条件一部分的查询称为子查询。SQL标准允许SELECT多层嵌套使用,用来表示复杂的查询。子查询除了可以用在SELECT语句中,还可以用在INSERT、UPDATE及DELETE语句中。子查询通常与IN、EXIST谓词及比较运算符结合使用。 2.IN子查询 IN子查询用于进行一个给定值是否在子查询结果集中的判断,格式为: expression [ NOT ] IN  (subquery )     其中,subquery是子查询。当表达式expression与子查询subquery的结果表中的某个值相等时,IN谓词返回TRUE,否则返回FALSE;若使用了NOT,则返回的值刚好相反。 例:查找在XSCJ数据库中选修了课程号为206的课程的学生的姓名、学号。 SELECT 姓名,学号 FROM XS WHERE 学号 IN         (SELECT 学号  FROM XS_KC          WHERE课程号 = '206' ); 说明:在执行包含子查询的SELECT语句时,系统先执行子查询,产生一个结果表,再执行查询。本例中,先执行子查询: SELECT 学号 FROM  XS_KC WHERE 课程号='206'; 得到一个只含有学号列的表,XS_KC中的每个课程名列值为206的行在结果表中都有一行。再执行外查询,若XS表中某行的学号列值等于子查询结果表中的任一个值,则该行就被选择。 注意:IN子查询只能返回一列数据。对于较复杂的查询,可以使用嵌套的子查询。 例:查找未选修离散数学的学生的姓名、学号、专业名。 SELECT 姓名,学号,专业名 FROM XS       WHERE 学号 NOT IN(         SELECT学号 FROM XS_KC           WHERE课程号 IN              (SELECT 课程号 FROM KC                WHERE  课程名 ='离散数学'));   3.比较子查询 这种子查询可以认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算,格式为:  expression { | >= | != | } { ALL | SOME | ANY } ( subquery ) 其中,expression为要进行比较的表达式,subquery是子查询。ALL、SOME和ANY说明对比较运算的限制。 如果子查询的结果集只返回一行数据时,可以通过比较运算符直接比较。 ALL指定表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时,才返回TRUE,否则返回FALSE; SOME或ANY是同义词,表示表达式只要与子查询结果集中的某个值满足比较的关系时,就返回TRUE,否则返回FALSE。 例: 查找XS表中比所有计算机系的学生年龄都大的学生学号、姓名、专业名、出生日期。 SELECT 学号, 姓名, 专业名, 出生日期  FROM XS      WHERE  出生日期 = | 4; 读取下一行:          handler KC read NEXT; 关闭该表:            handler KC close;   作者 tianyazaiheruan bitsCN.com

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号