作者:Excel高手。
在我们进行数据处理的过程中,我们常常会调用一些外部数据,此时使用SQL查询语句是非常方便的,今天我们就来给大家详细讲解一下SQL查询语句中用得最多的SELECT语句的一些基本用法。
1.SELECT 语法
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{|talbe.|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
FROMtable_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
[LIMIT [offset,] rows | rows OFFSET offset]
DISTINCT去除重复值
DISTINCTROW忽略基于整个重复记录的数据,而不仅仅是重复字段。
执行步骤:
1.先从from字句一个表或多个表创建工作表
2.将where条件应用于1)的工作表,保留满足条件的行
3.GroupBy 将2)的结果分成多个组
4.Having 将条件应用于3)组合的条件过滤,只保留符合要求的组。
5.Order By对结果进行排序。
6.LIMIT限制查询的条数
2.FROM子句
FROM子句是SELECT语句中必须要有的一部分,它指定了查询所需要的数据源的名称。
语法:FROM table_source。
参数解释:table_source可以是表、视图等等,一个语句中最多可以使用256个表源。如果使用的表过多,查询性能是会受到影响的,所以不建议使用太多表源。
请看下面的示例:
Selectdistinct供货商信息.单位名称,供货商信息.地址 from供货商信息
3.WHERE子句
在查询数据的时候,我们常常是希望查询出满足一定条件的数据,而非数据表中的所有数据,这个时候我们就可以使用WHERE子句来实现。数据库系统处理该语句时,按行为单位,逐个检查每个行是否满足条件,将不满足条件的行筛选掉。
语法:WHERE search_conditions
参数解释:search_conditions为用户所选所需要查询数据行的条件,即查询返回行记录的满足条件。
3.1 比较运算符
类别
运算符
说明
比较运算符
=,<,>,<=,>=,<>
比较两个表达式
逻辑运算符
AND ,OR, NOT
组合两个表达式的运算结果或取反
范围运算符
BETWEEN,NOT BETWEEN
搜索值是否在范围内
列表运算符
IN,NOT IN
查询值是否属于列表值之一
字符匹配符
LIKE ,NOT LIKE
字符串是否匹配
3.2 逻辑运算符
运算符
功能
AND
只有所有条件满足时才会返回结果结果
OR
只要其中一个条件满足就会返回查询结果
NOT
条件不成立时返回查询结果
3.3 字符匹配符
在WHERE子句中 使用字符匹配符LIKE或NOT LIKE 可以把表达式与字符串进行比较,从而实现对字符串的模糊查询。
语法:WHERE expression [NOT] LIKE 'string’
参数解释:[NOT]为可选项,'string’表示进行比较的字符串。WHERE子句实现对字符串的模糊匹配,进行模糊匹配是在string字符串中使用通配符。
通配符
说明
示例
%
任意多个字符
H% 表示查询以H开头的任意字符串,如Hello —– %h 表示查询以h结尾的任意字符串,如Growth —— %h% 表示查询在任何位置包含字母的h的所有字–符串,如hui,zhi
_
单个字符
H_ 表示查询以H开头,后面跟任意一个字符的两位字符串,如Hi,He
[]
指定范围的单个字符
H[ea]% 表示查询以H开头,第二个字符是e或a的所有字符串,如:Health,Hand ———- [A-G]% 表示查询以A到G之间的任意字符开头的所有字符串,如:Apple,Banana,Guide
[^]
不在指定范围的单个字符
H[^ea]% 表示查询以H开头的一个字符不是e或a的所有字符串,如:Hope,Hub ——— [^A_G]% 表示查询不是以A到G之间的任意字符开头的字符串,如;Job,Zoo
示例:Select* from 入库数据 where产品名称like '%a %’
4.ORDER BY 子句
有些时候,我们希望查询出来的结果是按照某个顺序排列的,这个时候就可以使用ORDER BY子句对生成的结果集进行排序。
语法:ORDER BY order_experssion[ASC | DESC]
参数解释:order_experssion表示用于排序的列或列名及表达式。当有多个排序列时,每个排序列用逗号隔开,而且列后都可以跟一个排序要求。ASC—–升序排序(默认值),DESC—降序排序。
示例:Select* from 入库数据 orderby产品名称 desc
5.GROUP BY 子句
在查询中,有时候我们需要对数据进行分组(类似于Excel中的分类汇总的功能),此时就可以使用GROUP BY 子句。
语法:GROUP BY group_by_expression[ WITH ROLLUP|CUBE ]
参数解释:group_by_expression表示分组所依据的列,ROLLUP表示只返回第一个分组条件指定的列的统计行,若改变列的顺序就会使返回的结果行数据发生变化。CUBE是ROLLUP的扩展,表示除了返回由GROUP BY子句指定的列外,还返回按组统计的行。GROUP BY 子句通常与统计函数联合使用。常见的统计函数如下表:
函数名
功能
COUNT
求组中项数
SUM
求和
AVG
求平均值
MAX
求最大值
MIN
求最小值
ABS
求绝对值
ASCII
求ASCII码
RAND
产生随机数
示例:Selectcount(*)from 入库数据 groupby产品名称
6.Having子句
HAVING子句的用法类似WHERE子句,它指定了组或集合的搜索条件。HAVING子句通常与GROUP BY子句一起使用。
语法:HAVING search_conditions
参数解释:search_conditions为查询所需的条件,即返回查询结果的满足条件。在使用GROUP BY 子句时,HAVING子句将限定整个GROUP BY子句创建的组。其具体规则如下:
1.如果指定了GROUP BY 子句,则HAVING 子句的查询条件应用于GROUP BY子句创建的组
2.如果指定了WHERE子句而没有指定GROUP BY子句,则HAVING子句的查询条件将应用于WHERE子句的输出结果集
3. 如果既没有指定WHERE子句又没有指定GROUP BY子句,则HAVING子句的查询条件将用于FROM子句的输出结果集
7.limit子句
其作用是用于限制查询结果的条数。常常用于实现分页查询。
语法:[LIMIT [offset,] rows | rows OFFSET offset]
参数解释:有两个参数,第一个是偏移量,第二个是数目。
Acces及Excel的数据库不支持该语句。
示例:Select*from 入库数据 limit2,2
如果觉得《Excel中使用SQL查询语句 让你的数据分析如虎添翼》对你有帮助,请点赞、收藏,并留下你的观点哦!