结构化查询语言(SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
下面以示范数据 PopulationAndEconomy 工作空间中的 Province_R 数据集为例,介绍如何构建常用的SQL查询表达式。
数值查询
对数值进行查询,常用的运算符有“=”、“<>”、“>”、“<”、“<=”、“>=”、“Between...and...” 等。
示例:Province_R.Pop_2014 Between 5000 and 10000
表示查询2014年人口(Pop_2014字段值)在5000万到10000万之间的对象。
对双精度类型数值进行比较查询时,不推荐直接使用“=”进行查询,可能会因为精度问题,查询不到结果。
字符串查询
使用关键字“like”,可完成以下三种字符串查询。
- 部分匹配,使用“%”字符。
示例:Province_R.Name like "山%" 或 Province_R.Name like '山%'
查询 Province_R 数据集的 Name 字段中,名字以“山”开头的对象。
- 完全匹配。数据库型数据源中只能使用单引号,UDB/UDBX 数据源使用单引号或双引号均可。
示例:Province_R.Name like "北京" 或 Province_R.Name like '北京'
查询 Province_R 数据集的 Name 字段中,值为“北京”的对象。
- 单字匹配,使用“_”字符。
示例:Province_R.Name like '河__'
查询 Province_R 数据集的 Name 字段中,开头为“河”,且其后存在两个字符的对象。
特定值查询
查询指定列表内若干值中的任意一个值,使用关键词“in”。
- 示例1:Province_R.Name in ("北京市","上海市")
查询 Province_R 数据集的 Name 字段中,值为“北京市”或“上海市”的对象。
- 示例2:Province_R.ColorID in (1,4)
查询 Province_R 数据集的 ColorID 字段中,值为1或4的对象。
对于字符型字段,查询值需要用单引号或者双引号括起来。但在数据库型数据源中,只能使用单引号。
空值查询
查询存储空值的记录,使用关键字“is NULL ”。
示例:Province_R.Name Is NULL
查询 Province_R 数据集的 Name 字段中,值为空的对象。
组合语句
可使用“and”、“or”、“not”关键字组合任意合法的条件表达式。
示例:Province_R.GDP_2014 > 10000 and Province_R.IncomeLevel > 20000
查询2014年GDP大于1万亿,并且人均收入大于2万的对象。
比较运算符在字符型字段中的应用
比较运算符,如“>”、“<”、“>=”、“<=”等。对于数据库型数据源,字符型字段的值只能使用单引号。
示例:Province_R.Name >= "贵州省"
查询 Province_R 数据集的Name字段中,值的首字母在 G 到 Z 之间的对象。
日期查询
为Province_R数据集创建一个日期型字段 DataDate,用于存储每条数据的统计时间。以查询 DataDate 字段大于2019-08-10的记录为例,举例说明不同数据库型数据源中的表达式输入。
- SQL(SQL+)数据源: Province_R.DataDate > '2019-08-10 12:25:00'。
- ORACLE 数据源: Province_R.DataDate > TO_DATE('2019-08-10','YYYY-MM-DD')。
- PostGIS 数据源:"Province_R".datadate > '2019-08-10 12:25:00'。
- PostgreSQL 数据源:Province_R.datadate > '2019-08-10 0:0:0' 。
- UDB/UDBX 数据源:"Province_R".datadate > '2019-08-10',日期格式为YYYY-MM-DD。
布尔值查询
布尔型字段属性值为 True 或者 False,SQL查询时用1表示True,0表示False。
示例:Province_R.Coastal = 1
查询 Province_R.数据集中,Coastal属性值为True的对象。Coastal为新建的布尔型字段。
派生字段
示例:Province_R.SmArea / Province_R.SmArea
在查询结果属性表中会列出临时字段,用来存储查询结果。可以通过“as”关键词为该字段重命名,如:Province_R.SmArea / Province_R.SmArea as Pop_Density,“Pop_Density”为临时字段名称。
若不给定别名,系统则使用表达式内容本身作为临时字段名。
若指定多个派生字段表达式,可用逗号分隔。
相关主题