分享

SQL|select查询:海量结构数据的行、列筛选、计算、分组、排序

 weimiao 2017-12-05

数据是信息社会重要的资源,许多重大决策都离不开数据和信息的支持。如果只是小规律的数据,用简单的文件或表格就行了,但无法应付以百万计的数据处理。针对结构化数据的数据库技术便应运而生。

数据处理包括数据的生成、处理与使用。数据生成主要由数据的增、改、删。数据的使用主要是数据查询、生成视图与报表。表中结构数据的增、改、删在SQL语言中,用Insert、update、delete语句完成,数据查询使用select语句。

在关系数据库中,数据查询select语句也就是用于数据的筛选。从数据源中筛选需要的行、列,并可以有适当的计算、分组、排序。数据源可以是多个数据库的多个表或视图。例如,有3个关系型数据库,每个数据库有5个表,每个表有10列,1万行记录,则需要处理的数据是3*5*10万行,10*3*5*10万个数据项。数据库中列的筛选直接指定,行的筛选通过逻辑条件去判断选取。

在数据处理中,select语句的完整语法比较复杂。基本的语句通常包含五个部分:

partKeyWordvariables功能
SELECTselect_list列筛选
FROMtable_list数据源
WHEREsearch_conditions行筛选
GROUP BYgroup_by_list分组
HAVINGsearch_conditions按分组做行筛选
ORDER BYcolumn_name,column_name ASC|DESC;排序

说明:

I select_list可以是包含column_name(字段名)的简单表达式或以column_name(字段名)为参数的简单函数;也可以添加DISTINCT关键词(位置是select后)用于返回唯一不同的值。通配符'*'表示全部列;

II table_list可以是不同数据库的表或视图,数据库与表或视图以点“.'符号连接;

III search_conditions可以使用的关系运算符有:

运算符描述
=等于
<>不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值

补充说明

I 关系表达式可以用or、and连接。

II LIKE后的表达式可以使用以下通配符:

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]or[!charlist]不在字符列中的任何单一字符

如:

WHERE City LIKE 'ber%';

WHERE City LIKE '%es%';

WHERE City LIKE '_erlin';

WHERE City LIKE 'L_n_on';

WHERE City LIKE '[bsp]%';

WHERE City LIKE '[a-c]%';

WHERE City LIKE '[!bsp]%';

举例说明一个查询实例:

MyTest数据库的表Orders:

ProductShopsSales
A001caraford100
A001caraford100
A002caraford80
A002caraford80
A003caraford90
A004wanda200

构造查询表达式:

SELECT ProductID, SUM(Sales) As TotalSales

FROM Orders

WHERE Shops = N'caraford'

GROUP BY ProductID

HAVING SUM(Sales) > 150

ORDER BY ProductID;

注:SUM()是可以使用在SQL中的函数;

查询结果:

ProductIDTotalSales
A001200
A002160

参考:

http://www./api/view/a/6032

-End-

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多