曾经有一个指向 9075:2003 的 JTC 1/SC 32 工作草案的公共链接,但自从他们在 2003 年之后的修订版中开始使用以来,我一直没有使用该链接。鉴于有许多其他规范的公开副本(例如 11179-1:2004),我想知道是否有人知道合法访问 ISO/IEC 9075 规范的任何方法。也许有一个指向工作草案的链接,或者一个基金会以不到大约 3000 美元的价格提供对它的访问,我从标准机构学习 SQL 而不是依赖于特定于实现的书籍和文档需要花费我。
将数字 1 存储在定义为的字段中是否符合 SQL92 NUMERIC 3,3?
关于什么 DECIMAL 3,3?
这是否意味着精度是浮动小数位或静态的,即使它们都为零也必须有 3 个小数位?
大约一个月前,我刚刚开始了一份新工作,为一家人手不足的软件公司工作。我的任务是对一些旧的非 ansi SQL 代码进行现代化改造,我在尝试破解这个问题时遇到了特别困难的时间。我最近刚毕业,所以我对现代 SQL 标准有点熟悉,并且根据我所做的研究,不推荐使用的部分与非 ansi 连接 *= 相关。我已经尝试了几乎所有我能想到的改变这个烂摊子的方法,但我不知所措。谢谢你的协助。
Select @SQLCmd =
'SELECT ''' + @InvType + ''' AS Inv_Type, ' + @TableName + '_Number AS Item_Number, Alternate_ID, Description1, ' +
'Company_ID, Department_ID, Group_Id, Section_Id, Media_Code, ' +
'Location_Current, Location_Home, Hold_Status, Record_Type, Disposition_Status, ' + @TableName + '.Retention_Code, ' +
'Retn_Disposal_Method, Retn_Authorize_Code, Reservation_Status ' +
'FROM ' + @TableName + ', RETENTION, (SELECT Item_Type, Item_Number, MAX(Reservation_Process_Status) AS ' +
'Reservation_Status FROM RESERVATION GROUP BY Item_Type, Item_Number) AS RESV ' …Run Code Online (Sandbox Code Playgroud) 我最近在 Postgres 中遇到了这种奇怪的行为。我有一张像下面这样的表:
sasdb=# \d emp_manager_rel
表“db3004db.emp_manager_rel”
专栏 | 类型 | 整理 | 可空 | 默认
------------+--------+-----------+------------+----- ----
emp_id | bigint | | |
manager_id | bigint | | |
select * from emp_manager_rel ;
emp_id | manager_id
--------+------------
1 | 123
我执行了以下更新语句:
更新1:
更新 emp_manager_rel 设置 manager_id = manager_id+emp_id , emp_id=emp_id*4;
更新表格如下:
emp_id | manager_id
--------+------------
4 | 124
更新 2:我执行了以下查询(在原始表上,而不是在更新表上)
更新 emp_manager_rel 设置 emp_id=emp_id*4 , manager_id = manager_id+emp_id ;
它更新表格如下:
emp_id | manager_id
--------+------------
4 | 124
我期望 …
在 Oracle 中,我使用
SELECT * FROM table1...JOIN...
Run Code Online (Sandbox Code Playgroud)
其中点表示连接类型或连接条件。
这是 ANSI 89 语法吗?如果没有,那么如果我使用 ANSI 89,我将如何执行连接?
据我所知的基本区别CHAR和VARCHAR数据类型,它CHAR占用的固定长度,而VARCHAR占用空间基于正被存储的内容。
但是如果VARCHAR根据存储的内容动态处理空间管理如此有效,为什么数据库支持CHAR数据类型,所有CHAR(n)字段都可以是VARCHAR(n)字段,对吧?
为什么不同的平台(linux vs windows)不支持相同的命名约定?我对文档使用文件名作为借口这一事实感到震惊。
是的,windows 对文件名不区分大小写,但人们会认为开发人员会适应这一点。我(个人喜好)鄙视 under_score_convention 而更喜欢 camelCaseConvention。
有没有办法在连接到数据库时启用驼峰区分大小写,或者这是否必须在默认配置中完成?
在所有平台上是否有默认支持驼峰命名约定的 MySQL 替代方案?
编辑
好吧,我现在觉得有点傻,我更新到 mysql 5.5 并且现在通过降低整个名称来支持骆驼大小写约定。然而,它并没有保留骆驼案例,这是我正在寻找的一部分。
我正在阅读有关比较运算符的信息。在文档中,比较运算符被 ANY、SOME 或 ALL 修改(强调添加):
引入子查询的比较运算符可以通过关键字 ALL 或 ANY 进行修改。SOME 是 ANY 的等效 ISO 标准。
这是什么意思?
SQL 标准及其主流数据库实现(SQL Server、Oracle、DB2、PostgreSQL、Firebird、MySQL 等)对以下一般情况下的最终顺序有何看法:
SELECT * FROM (SELECT * FROM Table t ORDER BY t.Field)
Run Code Online (Sandbox Code Playgroud)
我可以相信内部顺序也受到外部投影的尊重,还是我需要ORDER BY在外部声明中明确说明?
我理解“明确列出”的建议。但是,在某些情况下,明确列出可能会导致问题。一方面,PostgreSQL 要求 中列出的所有字段也都列在ORDER BY中SELECT DISTINCT。在某些情况下这不好,因为它改变了预期的结果集,根据我感兴趣的单列,它不再是不同的。
sql-standard ×10
datatypes ×2
sql-server ×2
decimal ×1
join ×1
mysql ×1
order-by ×1
postgresql ×1
storage ×1
terminology ×1
update ×1