问题标签 [ansi-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 在 Oracle 脚本中使用变量
有一个生成报告的复杂查询。该查询有几个子查询,它们为不同的产品生成 3 列的表。每个子查询返回一行。然后需要合并所有返回的行。但是有一个要求。如果子查询没有结果行,我们无论如何都需要将相应的产品包含到最终报告中,但指定 Trades_Count 等于 0。
我可以使用一组变量来实现这一点。以下代码将在 MS SQL Server 中完美运行:
我认为我没有使用任何特定于 T-SQL 的东西,而是使用纯 ANSI-SQL(虽然我不是 100% 确定)。
所以这在 Oracle 中不起作用。
首先,它只需要一个 DECLARE 关键字。然后它迫使我使用 Begin ... End 执行范围。然后它不允许我像我一样分配变量(参见上面的示例)——我需要使用“Select INTO”语句来代替。完成所有计算后,它不允许我从局部变量中选择值。见鬼。
有谁知道如何使它在 Oracle 中工作?
谢谢!
sql - SELECT 和 FROM 子句中的子 SELECT 是否符合标准?
标题基本概括了所有内容。在“符合标准”的 SQL 下,我指的是任何 SQL 标准中允许的 SQL 构造。
我浏览了“理解 SQL”一书,但它只在 , 等子句中提到了子查询WHERE
,而不是GROUP BY
and (或者我可能遗漏了一些东西)。HAVING
SELECT
FROM
我知道 MS SQL 允许子 SELECTSELECT
和FROM
. 我想知道这是否是标准行为。或者它可能不是标准的,但现在已在主要的 SQL 数据库中实现(除了 MS SQL,我对 DB 的经验很少)?
sql - Oracle 10g 是否符合 ANSI SQL-1992 子字符串函数标准?
根据ANSI SQL-1992 标准,第 132 页,这是 ANSI 子字符串函数的语法:
SQL 开发人员对 oracle 10g 模式的快速测试:
结果是:
这是否意味着 Oracle 10g 不符合这个特定的 ANSI 标准?
我只是想使用 ANSI 标准子字符串函数而不是供应商特定的函数。
mysql - MySQL 应用程序中的安全多租户
我有一个 JSP/MySQL Web 服务,用户可以在其中与“进程”交互——他们可以为给定进程上传数据、配置、查看报告等。他们还可以创建新流程或运行比较多个流程的报告。
目前,进程 ID 在 URL(GET 参数)中指定,因此任何用户都可以与任何进程交互。 我被要求为该服务添加安全性和多租户。 为简单起见,假设每个租户都可以完全访问一组流程,但多个租户可能可以访问流程。
我的首选方法:
- 添加用户表(PK_User_Id、password_hash、name 等)
- 添加访问表(FK_User_Id、FK_Process_Id)
- 将 Tenant_Id 存储在 Session 中的 SSL 登录页面
- 一个流程选择页面,可让您选择您有权访问的 Process_Id,并将其存储在 Session 中
- 几乎每个页面都会根据 Session 的 Process_Id 创建其 SQL 查询
- “跨进程”页面(如创建、选择和比较)将使用会话的 User_Id 代替
我的老板认为这不足以满足外部代码审计的要求。他担心一个任性的开发人员仍然可以编写一个查询,将一个客户的数据暴露给另一个客户,或者其他东西。
他希望我也使用 ANSI SQL 的内置 ROLES(应用程序必须与 DB 无关)为每个用户创建一个 db 角色。该角色将详细说明该角色可以访问哪些表,共享表中的哪些行等。这样,在登录时,连接将是“安全的”,并且开发人员的错误不会导致问题。
- 这可能吗?
- 是否存在与 MySQL 一起使用的与 DB 无关的“角色”?
- 如果主键是“foo”,角色是否可以指定允许您向表中添加行?
- 按照行业标准,我的系统是否“足够安全”?
php - 将数据从一个 MySQL 数据库导入另一个 MySQL 数据库?
你能告诉我如何将数据从一个 MySQL Db 导入另一个 MySQL DB。两个数据库的数据模式完全不同,第二个数据库是第一个数据库的规范化版本。
提前致谢
sql - Oracle 专有连接 - 在多个条件下连接
我有以下 2 个版本的 ANSI 兼容 SQL(更改列/表名称以保护机密数据),其中一个通过遵循正确的逻辑满足我的要求,而另一个不满足。
1)ANSI Join 1-Works
1)给出这样的输出:
2)ANSI Join 2-不起作用
3)Oracle专有的join-不起作用
2) & 3) 给出如下输出:
我理解 (2,ANSI) & (3,PROPRIETARY) 是等价的。但是(1,ANSI)是否有任何等效的专有SQL?。任何帮助都将受到欢迎。谢谢。编辑:我已经用示例输出更新了问题。
sql - SQL - 仅选择处于非活动状态的记录
我有以下要求。
我想选择所有 BS = 0 的所有 CustID。所以在上述情况下,只应选择 CustID_3。CustID_1、CustID_2 至少具有 S=1,因此它们不应出现在结果中。
感谢任何帮助。
谢谢!
sql - 如何在 ANSI SQL 中进行 EXISTS 选择
是否有一种跨数据库(至少 SQL Server、Oracle、Postgre、MySQL、SQLite)的方式来做我在 T-SQL 中所做的事情
这似乎不是有效的 ANSI SQL 语法,因为没有 FROM 子句。目前我正在使用 COUNT(*) 来执行此操作,但我认为这不是最佳选择。
sql - 仅当 ANSI sql 不存在表时才创建表
我正在尝试仅在 SQL 表不存在的情况下动态创建它。我在互联网上看到了很多解决方案,但它们通常依赖于特定的数据库,而我正在尝试找到最通用的解决方案。
我一直在考虑始终运行 CREATE 命令,然后假设如果它失败则表存在并且我可以开始向其中插入数据。我看不出这种推理有任何缺陷(不包括性能问题),但我可能错了。
这是可接受的方法吗?
您能否建议其他独立于数据库的方法,或者使用所有 RDBMS 都接受的 ANSI SQL 的方法?
sql - “左连接”与“左外连接”
我知道真的没有区别,但是'LEFT JOIN'是ANSI形式还是有任何RDBMS会失败'LEFT JOIN'并需要'LEFT OUTER JOIN'。[我在这里问,这样我就可以节省一些点击、表格填充等,以获得正确的 ANSI 标准!]