sql知识04——排序检索数据

引言:子句的概念

sql语句有子句构成,有些子句是必须的,有些子句是可以选的。一个子句通常由一个关键字和所提供的数据组成。比如select语句的子句from子句等等。

以学生成绩表为例子讲述子句
在这里插入图片描述

按多个列排序

如果我们检索出多个列的数据,需要制定检索出的结果中呈现的列的顺序。
比如我想要检索学生成绩表的结果成绩排第一位,学生学号第二位,课程号第三位。利用order by进行顺序的界定。
SELECT * FROM score(成绩)order BY grade,sNo,cNo;

desc关键字实现降序排列

desc关键字只直接作用于在其前面的列名,如果想在多个列进行降序排列那必须对每个列都制定关键字。
SELECT * FROM score(成绩)order BY grade DESC;
在这里插入图片描述

where语句过滤数据

过滤数据是按照一定条件搜索到相关数据。
sql过滤和应用过滤:
数据可以在应用层进行过滤因为sql语句为客户机应用检索出超过实际需要的数据,然后客户机代码对返回数据进行循环,以提取出需要的行。如果在客户机上过来数据,服务器不得不通过网络发送多余的数据,导致网络带宽浪费
where语句的操作符
如果order by和where一起出现,where必须放在order by后面,否则产生错误。
在这里插入图片描述
SELECT grade FROM score(成绩)WHERE grade>=90;
SELECT grade FROM score(成绩)WHERE grade BETWEEN 90 AND 96;

空值检索

null也成为no value,是它和字段包含0、空字符串或仅仅包含空格不同,它的意思是一个列不包含值。
SELECT grade FROM score(成绩)WHERE grade IS NULL;
语句意思是选择学生成绩表里没有成绩的学生,但是由于表中所有学生都有成绩,所以返回null。
在这里插入图片描述
null和不匹配
在通过过滤检索出不具有特定值得行的时候,我们可能虚妄返回具有null值得行。但是,不行。因为未知具有特殊的意义。数据库不知道是未能检索出想要结果、表具有缺失等情况中的哪一种。

操作符的应用

and和or操作符
and操作符是并,or是或,两者不一样。and操作符的优先级大于or操作符 ,通常加一个圆括号会帮助更好的理解操作。
比如下面的检索语句:
SELECT grade FROM score(成绩)WHERE grade ==93 AND grade>90;
SELECT grade FROM score(成绩)WHERE grade ==93 OR grade>90;
SELECT grade FROM score(成绩)WHERE (grade 93 OR grade99 ) AND grade>90;

in操作符
in操作符号用来指定条件范围,范围里的每个条件进行匹配。比如下面的两个语句有相同的作用
SELECT sNo FROM score(成绩)WHERE grade 90 OR grade99;
SELECT sNo FROM score(成绩)WHERE grade IN( 90,99 ) ;
in操作符有其优点:额在使用长的合法选项清单的时候会使得检索语句更加清楚直观;in比or的执行速度更快;in操作符可以包含在其他select语句内使得更加动态的建立where子句。

not操作符
not操作符有且仅有一个功能就是否定它后面的任何条件。MySQL里not可以对in、between和exists子句取反。
SELECT sNo FROM score(成绩)WHERE grade NOT IN ( 90,99 ) ;

猜你喜欢

转载自blog.csdn.net/matthewchen123/article/details/107720645