用户手册 >> 数据模型 >> SQL查询语法 >> 基础查询语法

基础查询语法

顶( )
最后更新日期: 人发表评论 (点击查看)
select、sql语句、sql语法、sql过滤
1. 问题描述
FineReport报表是用于展示数据的,对于底层的数据来源需要自己来获取。对于数据来源于数据库表时,可以使用SQL查询语句来获取数据。本节我们介绍一些基础的查询语法,这些语法适用于所有数据库,不同数据库查询语法及SQL公式都大不相同,我们在后续的章节中会分别介绍。
该节我们使用内置的FRDemo数据库。
2. 查询全部数据
查询表:select * from tablename
如:SELECT * FROM SALES_BASIC
若表名中有空格等特殊字符,不同数据库查询语法不同:
Access或SQL Server数据库中,查询表名带空格的表时,表名要用括号[ ]引起来,如SELECT * FROM [SALES BASIC];
Mysql数据库中,查询表名带空格的表时,表名要用``引起来(这个不是单引号),如SELECT * FROM `SALES BASIC`;
Oracle数据库中,查询表名带空格的表时,表名要用双引号引起来,如SELECT * FROM "SALES BASIC",且引号中的表名是区分大小写的。
对于查询这种特殊表名的表是如上处理的,若不进行上述处理,是查询不到对应的表的。因此写数据库查询语句时,建议直接使用拖拽表名的方式,因此时FineReport会根据数据库自动进行上述处理。
3. 按列名查询
select colname1,colname2,colname3,...... from tablename// 查询结果集中的列顺序与查询语句中的列顺序相同
如:SELECT 地区,销售员,销量 FROM SALES_BASIC
4. 去除重复数据
select distinct colname1,colname2,...... from tablename
如:SELECT distinct 地区,销售员 FROM SALES_BASIC
5. 条件查询
若需要在所有数据中查询出满足条件的数据,可以在查询语句中加入where子句。
5.1 比较条件
select * from tablename where 表达式 关系运算符 表达式
其中工关系运算符如下表
关系运算符含义
=表达式的值相等或相同
!=或<>表达式的值不等或不相同
>大于或靠后
>=大于或等于
<小于或靠前
<= 小于或等于
如:SELECT 地区,销售员,销量 FROM SALES_BASIC WHERE 销量 > 500
注:上例中销量为数值型不需加引号,若表达式为字符串型需加引号,如:SELECT 地区,销售员,销量 FROM SALES_BASIC WHERE 地区 = '江苏'
5.2 空值判定
空值(null)是关系数据库中的一种特殊的值,即不等同于0也不是空格。SQL中用is或 is not来判定某一列的值是null还是一个具体的值。
select * from tablename where colname is (is not) null
如:SELECT * FROM SALES_BASIC WHERE 日期 is null
及:SELECT * FROM SALES_BASIC WHERE 日期 is not null
5.3 判定范围
在where子句中使用关键字between和and来判定某个表达式值是否在某个区间范围内。
select * from tablename where colname (not) between 表达式1 and 表达式2
如:SELECT * FROM SALES_BASIC WHERE 销量 between 300 and 500
如:SELECT * FROM SALES_BASIC WHERE 销量 not between 300 and 500
5.4 组属判定
判定一个表达式的值是否与一组值中的一个相等,即成员判定。
select * from tablename where 表达式 (not) in (值1,值2,值3,......)
如:SELECT * FROM SALES_BASIC WHERE 产品 in ('电视','数码相机','电冰箱')
及:SELECT * FROM SALES_BASIC WHERE 产品 not in ('电视','数码相机','电冰箱')
注:值若为字符串需要加引号,否则不需要加。
5.5 模式匹配
判断某一列的值是否与一个模式字符串匹配。
select * from tablename where colname (not) like 模式字符串
其中模式字符串中可以包含通配符,如下表
通配符 含义
% 可以与任意长度的(长度可以为0)字符串匹配
_(下划线) 可以与任意的单个字符匹配
\ 转义符,表示紧邻的符号代表其本身
如:SELECT * FROM SALES_BASIC WHERE 销售员 like '%小%'
如:SELECT * FROM SALES_BASIC WHERE 销售员 not like '%小%'
注:此仅以一个简单的例子说明模式匹配,具体like用法可参考模糊查询章节。
5.6 复合条件
前面介绍的都为单个条件,当我们需要做一个复杂的查询时,往往需要用几组条件组成一个复杂的条件才能获得所需结果,SQL中使用and、or、not将简单条件组合起来,三者优先级顺序为not、and、or。
select * from tablename where 条件1 and 条件2 or 条件3 .....
如:SELECT * FROM SALES_BASIC WHERE 销量 > 300 AND 销量 < 500
6. 计算列
SQL查询中,除了可以获取列外,还能对列中的数据进行加工处理后取出,即计算列。计算函数不同数据库间有所不同,我们会在后续的章节中分别介绍。
如:SELECT 地区,销售员,产品,销量*0.5 AS 销售额 FROM SALES_BASIC
7. 排序
利用order by子句可以将查询结果排序后输出。
select * from tablename order by colname1,colname2,...... asc (desc)
其中asc表示升序,desc表示降序,不写则默认为升序。如:SELECT * FROM SALES_BASIC order by 销量
注:此与SELECT * FROM SALES_BASIC order by 销量 asc相同。
及:SELECT * FROM SALES_BASIC order by 销量 desc
 
 
 
 
   
文明发言,用心评论
 
应用此篇文章,您:
不费力
研究了一会
琢磨了好久
 
查看全部条>>
返回顶部
Copyright©2019 帆软软件有限公司
苏ICP备18065767号-3