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查询中是不是禁止使用逗号?的主要内容,如果未能解决你的问题,请参考以下文章