编辑“︁
SQL
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 互操作性和標準化 == 供應商之間的SQL實現不兼容,不一定完全遵循標準。各种数据库的SQL方言通常不可移植,特别是在日期时间语法、字符串连接、<code>NULL</code>、比较的大小写敏感方面。只有[[PostgreSQL]]与[[Mimer SQL]]努力遵从标准。 === 標準化歷史 === SQL在1986年被ANSI标准化,1987年被ISO标准化。由{{tsl|en|ISO/IEC JTC 1/SC 32|ISO/IEC JTC 1/SC 32|''ISO/IEC JTC 1, Information technology, Subcommittee SC 32, Data management and interchange''}}维护。标准名称通常为如下模式:''ISO/IEC 9075-n:yyyy Part n: title''。 {| class=wikitable |- ! 年份 ! 名字 ! 别名 ! 注释 |- | 1986 | SQL-86 | SQL-87 | ANSI首次标准化 |- | 1989 | SQL-89 | [[聯邦資料處理標準|FIPS]] 127-1 | 小修改,增加了integrity constraint |- | 1992 | [[SQL-92]] | SQL2, FIPS 127-2 | 大修改,成为现代SQL的基础 |- | 1999 | {{tsl|en|SQL:1999}} | SQL3 | 增加了正则表达式匹配、递归查询(传递闭包)、数据库触发器、过程式与控制流语句、非标量类型(arrays)、面向对象特性。在Java中嵌入SQL([[SQL/OLB]])及其逆([[SQL/JRT]]) |- | 2003 | {{tsl|en|SQL:2003}} | | 增加[[XML]]相关特性([[SQL/XML]])、''window functions''、标准化sequences、自动产生值的列。对SQL:1999的新特性重新描述其内涵。 |- | 2006 | {{tsl|en|SQL:2006}} | | 导入/导出XML数据与SQL数据库。[[XQuery]] |- | 2008 | {{tsl|en|SQL:2008}} | | 在cursor之外的ORDER BY语句。INSTEAD OF触发器。TRUNCATE语句。FETCH子句 |- | 2011 | {{tsl|en|SQL:2011}} | | 增加时态数据(PERIOD FOR)。增强了''window functions''与FETCH子句 |- | 2016 |{{tsl|en|SQL:2016}} | | 增加行模式匹配、多态表函数、[[JSON]]。 |- | 2019 |SQL:2019 | | 增加了第15部分,多维数组(MDarray类型和运算符)。 |} === 当前标准 === 该标准通常用以下模式表示:'''ISO/IEC 9075-n:yyyy 第n部分:标题''',或者简称为'''ISO/IEC 9075'''。 ISO / IEC 9075补充了ISO / IEC 13249:SQL多媒体和应用程序包(SQL/MM),该程序包定义了基于SQL的接口和包,给诸如视频,音频和空间数据之类的广泛的应用程序。感兴趣的各方可以从ISO、IEC或ANSI购买SQL标准文档。SQL:2008的草稿可作为[[ZIP格式|zip]]存档免费获得。 ==== SQL标准剖析 ==== SQL标准包含10部分: * ISO/IEC 9075-1:2016 Part 1: ''Framework'' (SQL/Framework). 提供逻辑概念 * ISO/IEC 9075-2:2016 Part 2: ''Foundation'' (SQL/Foundation). 包含语言的主要内容,强制与可选特性。 * ISO/IEC 9075-3:2016 Part 3: ''Call-Level Interface'' ([[SQL/CLI]]). 定义了接口成分(structures, procedures, variable bindings) 用于编写能执行SQL的应用程序的语言:Ada,C/C++,COBOL,Fortran,MUMPS,Pascal,PL/I。对于Java语言见标准第10部分。[[ODBC]]是一个著名的SQL/CLI的超集。这部分标准主要包含强制的特性。 * ISO/IEC 9075-4:2016 Part 4: ''Persistent stored modules'' ([[SQL/PSM]])。SQL的过程式扩展,包括控制流、条件处理、语句条件signals与resignals、cursors、本地变量、表达式赋值到变量与参数。此外,SQL/PSM形式化声明与维护了持续性(persistent)数据库语言例程(例如存储过程)。这部分标准主要包含可选的特性。 * [http://standards.iso.org/ittf/PubliclyAvailableStandards/c067367_ISO_IEC_TR_19075-6_2017.zip Part-6]{{Wayback|url=http://standards.iso.org/ittf/PubliclyAvailableStandards/c067367_ISO_IEC_TR_19075-6_2017.zip |date=20181020150759 }}: ''Support for JavaScript Object Notation (JSON)''. 2017年首次集成JSON数据类型到SQL标准。 * ISO/IEC 9075-9:2016 Part 9: ''Management of External Data'' ([[SQL/MED]]). 这部分标准主要包含可选的特性。 * ISO/IEC 9075-10:2016 Part 10: ''Object language bindings'' ([[SQL/OLB]])。定义了[[SQLJ]],SQL嵌入到Java,保证了SQLJ应用程序二进制可移植。这部分标准主要包含可选的特性。 * ISO/IEC 9075-11:2016 Part 11: ''Information and definition schemas'' ([[SQL/Schemata]]). 定义了Information Schema与Definition Schema,提供了常用工具集使得SQL数据库与对象自描述。这些工具包括SQL object identifier、structure与integrity constraints、security与authorization specifications, features与packages。这部分标准主要包含强制与可选的特性。 * ISO/IEC 9075-13:2016 Part 13: ''SQL Routines and types using the Java TM programming language'' ([[SQL/JRT]]). SQL应用程序调用静态方法作为子程序的能力('Java-in-the-database');Java类作为SQL结构化用户定义类型。这部分标准主要包含可选的特性。 * ISO/IEC 9075-14:2016 Part 14: ''XML-Related Specifications'' ([[SQL/XML]]). 这部分标准主要包含可选的特性。 * ISO/IEC 9075-15:2019 Part 15: 多维数组(SQL/MDA), 是为SQL指定了多维数组类型(MDarray),以及对MDarray,MDarray切片,MDarray单元和相关功能的操作。 标准的这一部分仅包含可选功能。 ==== ISO / IEC标准的扩展 ==== ''ISO/IEC 9075''被''ISO/IEC 13249: SQL Multimedia and Application Packages'' (SQL/MM)补充。后者定义了基于SQL的音视频、空间数据的界面与包。包括: * ISO/IEC 13249-1:2016 Part 1: ''Framework'' * ISO/IEC 13249-2:2003 Part 2: ''Full-Text'' * ISO/IEC 13249-3:2016 Part 3: ''Spatial'' * ISO/IEC 13249-5:2003 Part 5: ''Still image'' * ISO/IEC 13249-6:2006 Part 6: ''Data mining'' * ISO/IEC 13249-7:2013 Part 7: ''History'' * ISO/IEC 13249-8:xxxx Part 8: ''Metadata Registry Access'' ''[https://web.archive.org/web/20180612143206/https://www.iso.org/standard/73181.html MRA]'' (work in progress)
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息