sql select查询中是不是禁止使用逗号?

Posted

技术标签:

【中文标题】sql select查询中是不是禁止使用逗号?【英文标题】:Is comma forbidden in sql select query?sql select查询中是否禁止使用逗号? 【发布时间】:2021-07-03 13:00:07 【问题描述】:

在我们的产品中,我们为客户提供 cli 选项以获取必要的详细信息。

我们有一个脚本,它调用 java 类,该类执行提供的查询并将数据返回给客户。脚本名称是执行 ./execute query "select name, address from exposedSchema.employee_view"

我想从安全的角度知道在选择查询中是否禁止使用逗号(,)?

我们的计划应该是 允许: ./执行查询“从暴露Schema.employee_view中选择*” 不允许 ./execute query "select name, address from exposedSchema.employee_view"

【问题讨论】:

SQL 中有很多地方需要逗号。没有安全理由避免使用我听说过的逗号。 您要防止发生什么? select 中的逗号是语法的一部分,绝对不要使用select * 【参考方案1】:

其实我想建议你使用

select name, address from exposedSchema.employee_view

而不是

select * from exposedSchema.employee_view

有很多原因。以下是链接的一些关键原因:

在 SQL Server 和任何常见的 SQL 语言中,星号 ( * ) 告诉数据库引擎返回表中的所有列。使用 查询中的“SELECT *”是一个坏主意,以及我们不这样做的原因 推荐这个是:

安全性 – 如果未经授权的用户可以访问您的查询并且 返回 *(表示所有列)它可以使每一列都可用 误用。

性能 – 应该总是更快地返回 数据只是您需要的列,而不是所有可用列。什么时候 使用“SELECT *”,每次运行时都会解析列列表 声明,因此返回更快几乎总是正确的 只是您需要的列,而不是所有列。

混乱 – 作为 事情会随着时间而改变,你真的不能确定一个查询是写的 今天使用“SELECT *”将返回易于理解的结果 将来必须使用数据的程序或报告。列 可能会随着时间的推移添加或删除到表中,并且如果您指定 您的 SELECT 查询中的列,您确切知道哪些将是 返回。

https://seniordba.wordpress.com/2018/06/11/list-table-columns-names-instead-of-using-select/

【讨论】:

以上是关于sql select查询中是不是禁止使用逗号?的主要内容,如果未能解决你的问题,请参考以下文章

sql字段里有逗号隔开的数据,怎么取值

sql语句怎样将查询结果逗号分开

MySQL查询中的逗号

如何将 PHP 逗号分隔的字符串集成到 SQL 查询中?

此查询对创建逗号分隔列表 SQL Server 做了啥?

如何在光标的 select 语句 where 子句中传递逗号分隔值