通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司

本文主要是介绍通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MySQL视频教程导航

https://www.shulanxt.com/database/mysqlvideo/p1

SQL 别名


SQL 别名

通过使用 SQL,可以为表名称或列名称指定别名。

基本上,创建别名是为了让列名称的可读性更强。

的 SQL 别名语法

SELECT column_name AS alias_name
FROM table_name;

的 SQL 别名语法

SELECT column_name(s)
FROM table_name AS alias_name;

SQL 别名_SQL AS - 树懒学堂

在下面的情况下,使用别名很有用:

在查询中涉及超过一个表
在查询中使用了函数
列名称很长或者可读性差
需要把两个列或者多个列结合在一起

参数应用 数据集参数

数据集参数_SQL语句查询_定义数据集_定义参数

数据集 SQL 查询语句中可以使用参数宏 ${}动态地生成过滤条件,${} 执行结果与 SQL 语句拼接起来形成最终的查询语句,传递给数据库执行。SQL 语句中可以使用多个 ${},定义多个参数使用。

使用${} 定义参数时,{ }内写入的内容即为定义参数的内容,其中可以使用 FineReport 所有内置的函数,如 if 函数、len 函数等。{ }中除了 FineReport 内置的函数名、常量、字符串拼接语法外,其他变量就是数据集参数。

如:SELECT * FROM 销量 where 地区 = ‘${area}’ 中定义的数据集参数为 area。

注:定义数据集参数时,尽量不要在${}中直接使用{ 、},可能会无法解析。若必须在${}中直接使用{ 、},需要使用函数 CONCATENATE 转义,例如:SELECT * FROM 销量${‘{‘}语句会出现报错,需要将语句改为 SELECT * FROM ${CONCATENATE(“销量{“)},即可正常查询。 

带有数据集参数的 SQL 语句写好后,点击数据集定义界面「预览」按钮时,若显示出定义的数据集参数。则表明数据集参数定义成功。如下图所示:

在参数位置输入值后点击确定,参数值就会代入 SQL 语句中,查询出数据。

数据集参数,SQL语句查询,定义数据集,定义参数

如下给出几种常见的应用方式,用户在使用时按实际场景调整即可。注意,因为数据集参数用在 SQL 查询语句中,所以在使用时,特别要注意语法和对应数据库类型的 SQL 语法匹配。

2.1 简单应用

如要定义一个地区参数,通过此参数过滤数据。新建数据集时,就可以在 SQL 查询语句中定义一个数据集参数 area:SELECT * FROM 销量 where 地区 = ‘${area}’

SQL 语句中,其他内容都是确定的,唯有 area 不确定,当 area 对应不同值时,数据集也将查询出不同地区的数据。

2.2 带公式的应用

定义数据集参数时,可以使用 FineReport 所有内置函数。如需要定义一个地区参数,当地区为空时,查询所有地区的数据;当地区值不为空时,查询对应地区的数据:

SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,””,”and 货主地区 = ‘” + area + “‘”)} 

定义时,先使用函数 len 获取参数的长度,然后使用 if 函数进行判断

  • 如果 area 参数的长度为 0,则内容为空,SQL 拼接后为 SELECT * FROM 订单 where 1=1;
  • 如果 area 参数的长度不为 0,则将字符串 and 货主地区 = ‘、参数area、‘拼接成一句 SQL ,如area的值为华东,那么参数定义部分的执行结果为and 货主地区=’华东’,完整的 SQL 语句就变成:SELECT * FROM 订单 where 1=1 and 货主地区=’华东’

2.3 定义多个参数

如果在数据过滤中,需要多个过滤条件,则可以定义多个数据集参数,如:

SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,””,”and 货主地区 = ‘” + area + “‘”)} ${if(len(province) == 0,””,”and 货主省份 = ‘” + province + “‘”)}

其中使用了两次 ${},定义了两个数据集参数 area 和 province,定义过程解释可参考 2.2 节。

2.4 嵌套应用

定义数据集参数时,也可以通过一些逻辑判断嵌套定义多个数据集参数。如:

SELECT  * FROM 销量 where 1=1 ${if(len(area)!=0,” and 地区='”+area+”‘”,if(len(product)=0,””,” and 产品='”+product+”‘”))}

if 函数是 FineReport 内置的公式,变量 area 和 product 是数据集参数,如果len(area)!=0,即 area 参数不为空,即以

SELECT * FROM 订单 where 1=1 and 货主地区=’area’ 查询,如地区为空,则要判断 len(product) ,若product参数为空,则不拼接任何查询条件,即查出所有,否则以 SELECT * FROM 订单 where 1=1 and 产品=’product’ 查询。

3 示例

3.1 定义数据集参数

新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句 SELECT * FROM 销量 WHERE 地区=’${area}’,相当于在数据库查询语句中定义一个数据集参数area。点击右下角「刷新」按钮,下方数据集参数管理面板会显示已经新建好的数据集参数area,设置它的默认值为华东。点击「确定」,即同时完成了数据准备和定义数据集参数的工作。如下图所示:

数据集参数,SQL语句查询,定义数据集,定义参数

3.2 表格样式设计

1)如下图所示设置表格样式,其中给表格选择预定义样式 Head类型的样式,标题字体自动居中。如下图所示:

数据集参数,SQL语句查询,定义数据集,定义参数

2)将数据集中的字段拖入到对应单元格中,字体居中,给表格整体添加预定义样式默认的天蓝色内外框。

3)选中 C2 单元格,右边属性面板选择「单元格元素>基本」。数据设置下拉框选择汇总>求和。

3.3 参数添加控件

1)点击参数面板的「编辑」按钮,进入参数面板设置界面。

2)右上角控件设置面板会显示没有添加控件的参数,点击 「area 」或者点击「全部添加」,将参数的默认控件添加到参数面板。如下图所示:

注:参数与控件是通过参数名称进行绑定的,也就是说当控件名称与参数名称一致时,参数与控件就进行了绑定,即在 Web 端给控件赋值就相当于给参数赋值。

数据集参数,SQL语句查询,定义数据集,定义参数

3)参数area的默认控件添加到参数面板后,效果如下图所示:

注:如果不想点击「全部添加」或「参数」快捷添加默认控件,也可以直接从控件栏中将控件拖拽到参数面板中,修改控件的名称与参数名称一致,即可将控件与参数进行绑定。

数据集参数,SQL语句查询,定义数据集,定义参数

4)点击自定义控件的「编辑」按钮,选择下拉框控件类型,让用户通过下拉框选择参数值。

5)要想报表预览时点击「下拉框」可以出现参数值的选项,则需要设置下拉框的数据字典为销量表下的地区字段。

参数面板选中「下拉框控件」,右边属性面板选择「属性>数据字典」,点击数据字典「编辑」按钮,弹出数据字典设置对话框。数据字典的类型设置为数据库表,数据库为 FRDemo ,选择数据库表为销量,列名实际值和显示值都为地区。如下图所示:

注:控件绑定数据字典时,当数据集中有和控件同名的参数时,不要使用,否则将造成循环引用,使得模板出错,如此处 ds1 。

数据集参数,SQL语句查询,定义数据集,定义参数

6)点击「标签控件」,将控件值命名为地区:。

7)将查询按钮往左边拖拽,形成紧凑式布局,让控件面板更加美观。再次点击参数面板的「编辑」按钮,完成参数控件的设置。

3.4 效果预览

保存报表,点击「分页预览」查看报表。

下拉框选择「华东」,点击查询,只查询出报表中华东地区的销售信息。

数据集参数,SQL语句查询,定义数据集,定义参数

这篇关于通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584359

相关文章

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND