select语句,select语句对数据的操作
一、select语句中distinct是表示
distinct表示去掉重复的记录。
数据库里允许且一定存在值相同的字段,而如果只想在查询时去掉重复的记录,可以在字段前加上distinct,如果是select两个或三个字段,只需要在第一个字段前加上distinct,数据库会对所有字段组合去重复。
二、select语句对数据的操作
在使用sql查询数据的时候,经常会遇到在select之后有各种各种的操作;比如groupby对查询的结果进行分组、where对结果进行筛选、having对分组结果进行过滤、orderby对结果进行排序。但是在这中会出现很多问题。
1.在使用groupby、where、having、orderby的顺序不能搞明白。
2.where和having的作用顺序和作用域不清楚。
3.在使用groupby之后,select中原告包含哪些字段不能搞清楚。
4.having和where的条件能够包含哪些字段不清楚。
所以我们就是从以上的4点出发来了解select后面的各种操作是怎么工作的。在讨论之前,我们需要了解各个操作是用来干什么的?
1.where:是一个约束声明,是在结果返回之前其作用的。wher中不能包含聚合函数。
2.having:过滤声明,是对查询好以后的结果进行过滤的,having中可以保护聚合函数。
3.groupby:对结果进行分组,所以从字面意思就可以知道,与having类似,是在查询结果好以后对结果进行分组的操作。
4.orderby:对结果进行排序,所以也是在查询结果好以后才进行的操作。
5.聚合函数:作用在多条结果上的函数,如sum,count,avg,max等
三、select语句主要由哪些子句构成
select语句的各个子句,按顺序有:
(1)from:从哪些表中筛选;
(2)where:从表中筛选的条件;
(3)groupby:分组依据;
(4)having:在统计结果中再次筛选;
(5)orderby:排序;
(6)limit:分页。
子查询是嵌套于SELECT、INSERT、UPDATE、DELETE等语句中的查询。按照子查询返回结果的数量,分为标量子查询和多值子查询;按照对外部查询的依赖性,分为独立子查询和相关子查询。
子查询出现在SELECT语句的结果列表中,那幺子查询应该是返回单一值;这种子查询往往可以用表的Join操作代替。
子查询用在WHERE子句的表达式中,可以返回单一值用于比较运算符(>、<、>=等等)之后;也可以返回多值且有ANY、SOME、ALL等关键字前缀用于比较运算符之后;还可以返回多值与关键字IN、EXISTS、NOTIN、NOTEXISTS连用。子查询可以嵌套子查询。