Mysql数据库连接查询( 二 )


SQL查询语句为:SELECT * FROM tb_score WHERE grade> ANY(SELECT grade FROM tb_score WHERE sID=1);

Mysql数据库连接查询

文章插图
 

Mysql数据库连接查询

文章插图
 
  • 带ALL关键字的子查询
关键字ALL与ANY和SOME不同,使用ALL时需要同时满足内层查询的条件,例如,将如上的例子中的ANY改为ALL,则查询比学号为1的学生成绩(86,90)都高的成绩,则如上可看出查询出结果为空 。
  • 带EXISTS关键字的子查询
EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为TRUE,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果为FALSE,此时外层语句将不进行查询 。
Mysql数据库连接查询

文章插图
 
  • 带IN关键字的子查询
IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作 。如下两条语句分别查询学生的语文成绩、查询2班学生的所有成绩:
查询学生语文成绩:SELECT sID,grade FROM tb_score WHERE cID IN (SELECT id FROM tb_course WHERE name='语文');
Mysql数据库连接查询

文章插图
 
查询2班学生的所有成绩:SELECT sID,cID,grade FROM tb_score WHERE sID IN (SELECT id FROM tb_student WHERE classID=2);
Mysql数据库连接查询

文章插图
 
合并查询
利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集 。合并时两个表对应的列数和数据类型必须相同 。各个SELECT语句之间使用UNION或UNION ALL关键字分隔 。UNION不使用关键字ALL执行时,删除重复记录,所有返回行都是唯一的;使用关键字ALL的作用是不删除重复行也不对结果进行自动排序 。
如查询1号课程且大于80分和4号学生的成绩:SELECT sID,grade FROM tb_score WHERE grade>80 AND cID=1 UNION SELECT sID,grade FROM tb_score WHERE sID=4;SELECT sID,grade FROM tb_score WHERE grade>80 AND cID=1 UNION ALL SELECT sID,grade FROM tb_score WHERE sID=4;
Mysql数据库连接查询

文章插图
 

Mysql数据库连接查询

文章插图
 
正则表达式
正则表达式通常被用来检索或替换那些符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串 。例如从一个文本文件中提取电话号码,查找一篇文章中重复淡出或者替换用户输入的某些敏感词语等等,这些地方都可以使用正则表达式 。MySQL中使用REGEXP关键字指定正则表达式的字符串匹配模式,如下表列出了REGEXP操作符中常用匹配列表 。
Mysql数据库连接查询

文章插图
 
选择学生表中information列中首字母为z的行:SELECT * FROM tb_student WHERE information REGEXP '^z';
Mysql数据库连接查询

文章插图
 
其它正则表达式的举例略,大家可以根据自己需求自行设计 。




推荐阅读