标签: sql-standard

JOIN 或 WHERE 子句中的相等性?效率与风格

下面的两个查询中,哪个对 postgresql 来说最有效?并且在可读性等方面具有更好的风格。

区别在于语句的位置doctor.type != 'surgeon'

在 WHERE 子句中:

SELECT practice.name, doctor.name 
FROM doctor 
JOIN practice ON (doctor_code = code) 
WHERE doctor.name LIKE '%son' 
AND (doctor.type != 'surgeon');
Run Code Online (Sandbox Code Playgroud)

或者在 JOIN 子句中:

SELECT practice.name, doctor.name
FROM doctor
JOIN practice ON (doctor_code = code AND doctor.type != 'surgeon')
WHERE doctor.name LIKE '%son';
Run Code Online (Sandbox Code Playgroud)

postgresql join sql-standard

1
推荐指数
1
解决办法
1877
查看次数

不推荐使用 SQL 文本数据类型?

我已经读到 Microsoft SQL Server 已弃用text数据类型而支持varchar(max).

PostGreSQL 已经允许varchar(没有长度)作为text.

问题是,ANSI SQL 标准对弃用text和最佳替代方案有何看法?另外,MySQL/MariaDB 是否也遵循这一点?

谢谢

mysql postgresql sql-server sql-standard

1
推荐指数
1
解决办法
4388
查看次数

Read Commited 标准行为中是否存在重复项?

这是指这个问题:Duplicate records returned from table with no duplicates

“读提交”隔离级别假定一个事务可以以不同的方式读取同一条记录,但并不明确暗示记录可以重复。我同意同一事务中的两个语句可以返回不同的数据集,但返回带有重复记录的相同数据集听起来很疯狂。

据我所知,只有 MS SQL Server 有这种行为。

如果它符合ANSI SQL 标准定义的“Read Committed”隔离级别,请证明或反驳。

sql-server isolation-level sql-standard

1
推荐指数
1
解决办法
634
查看次数

为什么 FROM 多个表默认为笛卡尔积?

当我做这样的查询时,做笛卡尔积(交叉连接)背后的想法是什么 -

SELECT * FROM agents, orders
Run Code Online (Sandbox Code Playgroud)

我认为它们会连接(如pandas)。添加表格而不是乘以表格感觉更自然。

只是好奇,并没有在互联网上找到默认笛卡尔积背后的基本原理。我假设FROM table1, table2根据 SQL 的语法对于交叉连接可能更正确,但为什么呢?

join sql-standard

1
推荐指数
2
解决办法
404
查看次数

Oracle 中的 ANSI 联接

我们正在从 Oracle 12c 执行大量 ETL 负载。Oracle 优化器时不时地决定为之前运行良好的 SQL 语句创建一个新的执行计划。通常这会导致 10 倍的性能下降。当我询问客户 DBA 和 Oracle 顾问(客户是金牌合作伙伴)时,他们通常会要求我们将 ANSI 连接转换为传统的 Oracle 连接。通常这有帮助。我的问题是,Oracle 是否承认对 ANSI 连接的支持不佳?Oracle 是否建议使用传统连接?(我读过 Oracle 的书,说明正好相反。)

sql-standard oracle-12c

0
推荐指数
1
解决办法
924
查看次数

0
推荐指数
1
解决办法
1983
查看次数

什么是 F301:查询表达式中的 CORRESPONDING 子句?

SQL 2011 规范支持CORRESPONDING子句,

功能 F301,“CORRESPONDING在查询表达式中”:

这是什么功能?它是如何使用的?并且,它是否得到任何行业 RDBM 的支持?

select exception union sql-standard

0
推荐指数
1
解决办法
609
查看次数

任何数据库表名都可以支持双引号“吗?

我需要知道是否有数据库支持双引号作为其表名的一部分。我对 JDBC 兼容的数据库特别感兴趣。如果他们这样做了,我能知道怎么做吗?

jdbc naming-convention sql-standard

0
推荐指数
1
解决办法
2333
查看次数

相同的查询,不同的结果(取决于用户的权限)

关于 SQL 的一般问题:

如果两个用户执行同一个sql语句,有没有可能user1和user2得到不同的结果?

想象一下 user1 比 user2 拥有更多的权限。

换句话说:user1 有可能收到 100 行,而 user2 只收到 80 行吗?

我的问题是关于 SQL 标准。

但是可以在评论中随意谈论特定数据库系统的实现。

permissions sql-standard

0
推荐指数
1
解决办法
411
查看次数

SELECT 列如何不在 GROUP BY 子句中列出

查询:

select year,sum(mark),sum(maxmark) 
from table1 
group by parameterno
Run Code Online (Sandbox Code Playgroud)

产生错误消息:

列“table1.year”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

group-by sql-standard

-1
推荐指数
2
解决办法
2万
查看次数