fbpx
维基百科

SQL

SQLi/ˈɛs kjuː ˈɛl/[5]i/ˈskwəl/[6]Structured Query Language结构化查询语言[7][8][9][10])是一种特定目的程式语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。

SQL
编程范型声明式
設計者Donald D. Chamberlin英语Donald D. Chamberlin
Raymond F. Boyce英语Raymond F. Boyce
實作者國際標準化組織/国际电工委员会
发行时间1974
目前版本
  • SQL:2023 (2023年6月1日)[1]
型態系統類型系統, 強型別
操作系统跨平台
網站www.iso.org/standard/76583.html
主要實作產品
詳見資料庫系統列表英语List of relational database management systems
衍生副語言
SQL-86, SQL-89, SQL-92, SQL:1999英语SQL:1999, SQL:2003英语SQL:2003, SQL:2006英语SQL:2006, SQL:2008英语SQL:2008, SQL:2011英语SQL:2011
啟發語言
Datalog
影響語言
CQL英语Common Query Language, 语言集成查询, SOQL英语Salesforce Object Query Language, Windows PowerShell,[2] JPQL英语Java Persistence Query Language, 面向Java对象查询
SQL (file format)
扩展名.sql
互联网媒体类型application/sql[3][4]
开发者ISO/IEC
初始版本1986年 (1986)
最新版本
SQL:2016英语SQL:2016
2016年,​6年前​(2016
格式类型Database
标准ISO/IEC 9075
免费格式?
网站www.iso.org/standard/63555.html

SQL基于关系代数元组关系演算,包括一个数据定义语言数据操纵语言。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。尽管SQL经常被描述为,而且很大程度上是一种声明式编程4GL),但是其也含有过程式编程的元素。

SQL是对埃德加·科德关系模型的第一个商业化语言实现,这一模型在其1970年的一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》[11]中被描述。尽管SQL并非完全按照科德的关系模型设计,但其依然成为最为广泛运用的数据库语言。 [12][13]

SQL在1986年成为美国国家标准学会(ANSI)的一项标准,在1987年成为国际标准化组织(ISO)标准[14]。此后,这一标准经过了一系列的增订,加入了大量新特性。虽然有这一标准的存在,但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性。

歷史

在1970年代初,由IBM公司San Jose,California研究實驗室法语IBM Almaden Research CenterIBM San Jose Research Laboratory)的埃德加·科德發表將資料組成表格的應用原則(Codd's Relational Algebra)。1974年,同一實驗室的D.D.Chamberlin英语Donald D. ChamberlinR.F. Boyce英语Raymond F. BoyceCodd's Relational Algebra在研制关系数据库管理系统System R英语IBM System R中,研制出一套規範語言-SEQUELStructured English Query Language),並在1976年11月的IBM Journal of R&D英语IBM Journal of Research and Development上公布新版本的SQL(叫SEQUEL/2)。1980年改名為SQL

1979年甲骨文公司首先提供商用的SQL,IBM公司在DB2SQL/DS数据库系统中也实现了SQL

1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。

1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:

  • 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement
  • 美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127

目前,所有主要的关系数据库管理系统支持某些形式的SQL,大部分数据库至少遵守ANSI SQL89标准。

ANSI SQL92标准在交叉连接(cross join)和内部连接之上,新增加了外部连接,并支持在FROM子句中写连接表达式。支持集合的并运算、交运算。支持Case (SQL)表达式。支持CHECK约束。创建临时表。支持cursor。支持事务隔离

语法

 
图表显示了SQL语言元素组成的一个语句

SQL语言分成了几种要素,包括:

  • 子句,是语句和查询的组成成分。(在某些情况下,这些都是可选的。)[15]
  • 表达式,可以产生任何标量值,或由组成的数据库表
  • 谓词,给需要评估的SQL三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程。
  • 查询,基于特定条件检索数据。这是SQL的一个重要组成部分。
  • 语句,可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
    • SQL语句也包括分號(";")语句终结符。尽管并不是每个平台都必需,但它是作为SQL语法的标准部分定义的。
  • 无意义的空白在SQL语句和查询中一般会被忽略,更容易格式化SQL代码便于阅读。

语言特点

SQL是高级的非過程化編程語言,它允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解其具体的数据存放方式。而它的界面,能使具有底层结构完全不同的数据库系统和不同数据库之间,使用相同的SQL作为数据的输入与管理。它以记录项目〔records〕的合集(set)〔项集,record set〕作为操纵对象,所有SQL语句接受项集作为输入,回送出的项集作为输出,这种项集特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他編程語言中需要用一大段程序才可实践的一个单独事件,而其在SQL上只需要一个语句就可以被表达出来。这也意味着用SQL可以写出非常复杂的语句,在不特別考慮效能下。

SQL同時也是数据库文件格式扩展名

SQL包含四个部分:

SQL函数

函数 描述
AVG 平均值
COUNT 计数(不含Null)
FIRST 第一个记录的值
MAX 最大值
MIN 最小值
STDEV 样本标准差
STDEVP 总体标准差
SUM 求和
VAR 样本方差
VARP 总体方差
UCASE 转化为全大写字母
LCASE 转化为全小写字母
MID 取中值
LEN 计算字符串长度
INSTR 获得子字符串在母字符串的起始位置
LEFT 取字符串左邊子串
RIGHT 取字符串右边子串
ROUND 数值四舍五入取整
MOD 取余
NOW 获得当前时间的值
FORMAT 字符串格式化
DATEDIFF 获得两个时间的差值

互操作性和標準化

供應商之間的SQL實現不兼容,不一定完全遵循標準。各种数据库的SQL方言通常不可移植,特别是在日期时间语法、字符串连接、NULL、比较的大小写敏感方面。只有PostgreSQL与Mimer SQL努力遵从标准。

標準化歷史

SQL在1986年被ANSI标准化,1987年被ISO标准化。由ISO/IEC JTC 1, Information technology, Subcommittee SC 32, Data management and interchange英语ISO/IEC JTC 1/SC 32维护。标准名称通常为如下模式:ISO/IEC 9075-n:yyyy Part n: title

年份 名字 别名 注释
1986 SQL-86 SQL-87 ANSI首次标准化
1989 SQL-89 FIPS 127-1 小修改,增加了integrity constraint
1992 SQL-92 SQL2, FIPS 127-2 大修改,成为现代SQL的基础
1999 SQL:1999英语SQL:1999 SQL3 增加了正则表达式匹配、递归查询(传递闭包)、数据库触发器、过程式与控制流语句、非标量类型(arrays)、面向对象特性。在Java中嵌入SQL(SQL/OLB)及其逆(SQL/JRT)
2003 SQL:2003英语SQL:2003 增加XML相关特性(SQL/XML)、window functions、标准化sequences、自动产生值的列。对SQL:1999的新特性重新描述其内涵。
2006 SQL:2006英语SQL:2006 导入/导出XML数据与SQL数据库。XQuery
2008 SQL:2008英语SQL:2008 在cursor之外的ORDER BY语句。INSTEAD OF触发器。TRUNCATE语句。FETCH子句
2011 SQL:2011英语SQL:2011 增加时态数据(PERIOD FOR)。增强了window functions与FETCH子句
2016 SQL:2016英语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存档免费获得。

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)数据库语言例程(例如存储过程)。这部分标准主要包含可选的特性。
  • Part-6(页面存档备份,存于互联网档案馆): 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 9075ISO/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 (work in progress)

以SQL為基礎的其他延伸語言

微軟MS SQL-Server,以及Sybase Adaptive Server英语Sybase Adaptive Server系列資料庫所用的SQL
Oracle 資料庫所使用的SQL

安全問題

由於SQL指令在部份進階使用時,語法會依照特定條件來變換,而且若是表格中的欄位過多時,許多開發人員都會習慣以字串組立的方式建立SQL指令,而且又使用系統管理員級的帳戶連到資料庫,因此讓駭客有機會利用SQL的組立方式進行攻擊,像是在指令中添加部份刺探性或破壞性的指令(例如DROP TABLEDROP DATABASE或是DELETE * FROM myTable等具破壞性的指令),讓資料庫的資料或實體伺服器被破壞,導致服務中斷或是系統癱瘓等後果,或是以邏輯的漏洞,在密碼欄寫入特殊字串(例如' or '1'='1),讓該字串形成的邏輯判斷永遠為真,或直接取得非查詢條件的資料,而不需要知道密碼,以達成非法登入系統的目的,此種攻擊手法稱為SQL注入(SQL injection)。

目前實務上較有效的防禦方法,就是全面改用參數化查詢

参考文献

  1. ^ SQL:2023 is out. 2023年6月1日 [2023年6月26日]. 
  2. ^ Paul, Ryan. A guided tour of the Microsoft Command Shell. Ars Technica. [10 April 2011]. (原始内容于2018-12-25). 
  3. ^ Media Type registration for application/sql. Internet Assigned Numbers Authority. 10 April 2013 [10 April 2013]. (原始内容于2018-01-24). 
  4. ^ The application/sql Media Type, RFC 6922. Internet Engineering Task Force: 3. April 2013 [10 April 2013]. (原始内容于2016-10-18). 
  5. ^ Beaulieu, Alan. Mary E Treseler , 编. Learning SQL 2nd. Sebastapol, CA, USA: O'Reilly. April 2009. ISBN 978-0-596-52083-0. 
  6. ^ SQL, n.. Oxford English Dictionary. Oxford University Press. [2014-11-27]. 
  7. ^ Encyclopedia Britannica. SQL. [2013-04-02]. (原始内容于2018-12-25). 
  8. ^ From Oxford Dictionaries: "Definition of SQL - abbreviation, Structured Query Language, an international standard for database manipulation." Oxford Dictionaries. SQL. [2017-10-10]. (原始内容于2016-08-03). 
  9. ^ IBM. SQL Guide. [永久失效連結]
  10. ^ From Microsoft: "Structured Query Language, invented at IBM in the 1970s. It is more commonly known by its acronym, SQL .." Microsoft. Structured Query Language (SQL). [2017-10-10]. (原始内容于2016-03-12). 
  11. ^ Codd, Edgar F. . Communications of the ACM (Association for Computing Machinery). June 1970, 13 (6): 377–87 [2007-06-09]. doi:10.1145/362384.362685. (原始内容存档于2007-06-12). 
  12. ^ Chapple, Mike. SQL Fundamentals. Databases. About.com. [2009-01-28]. (原始内容于2009-02-22). 
  13. ^ Structured Query Language (SQL). International Business Machines. October 27, 2006 [2007-06-10]. 
  14. ^ ISO/IEC 9075-1:2008: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework). [2017-10-10]. (原始内容存档于2012-02-03). 
  15. ^ ANSI/ISO/IEC International Standard (IS). Database Language SQL—Part 2: Foundation (SQL/Foundation). 1999.

参见

外部連結

  • Comparison of different SQL implementations (页面存档备份,存于互联网档案馆

juː, 或i, structured, query, language, 结构化查询语言, 是一种特定目的程式语言, 用于管理关系数据库管理系统, rdbms, 或在关系流数据管理系统, rdsms, 中进行流处理, 编程范型声明式設計者donald, chamberlin, 英语, donald, chamberlin, raymond, boyce, 英语, raymond, boyce, 實作者國際標準化組織, 国际电工委员会发行时间1974目前版本, 2023, 2023年6月1日, 型態系統類型系統, . SQL i ˈ ɛ s k juː ˈ ɛ l 5 或i ˈ s iː k w e l 6 Structured Query Language 结构化查询语言 7 8 9 10 是一种特定目的程式语言 用于管理关系数据库管理系统 RDBMS 或在关系流数据管理系统 RDSMS 中进行流处理 SQL编程范型声明式設計者Donald D Chamberlin 英语 Donald D Chamberlin Raymond F Boyce 英语 Raymond F Boyce 實作者國際標準化組織 国际电工委员会发行时间1974目前版本SQL 2023 2023年6月1日 1 型態系統類型系統 強型別操作系统跨平台網站www wbr iso wbr org wbr standard wbr 76583 wbr html主要實作產品詳見資料庫系統列表 英语 List of relational database management systems 衍生副語言SQL 86 SQL 89 SQL 92 SQL 1999 英语 SQL 1999 SQL 2003 英语 SQL 2003 SQL 2006 英语 SQL 2006 SQL 2008 英语 SQL 2008 SQL 2011 英语 SQL 2011 啟發語言Datalog影響語言CQL 英语 Common Query Language 语言集成查询 SOQL 英语 Salesforce Object Query Language Windows PowerShell 2 JPQL 英语 Java Persistence Query Language 面向Java对象查询維基教科書中有關Structured Query Language的文本SQL file format 扩展名 sql互联网 媒体类型application sql sup id cite ref 3 class reference a href cite note 3 3 a sup sup id cite ref 4 class reference a href cite note 4 4 a sup 开发者ISO IEC初始版本1986年 1986 最新版本SQL 2016 英语 SQL 2016 2016年 6年前 2016 格式类型Database标准ISO IEC 9075免费格式 是网站www wbr iso wbr org wbr standard wbr 63555 wbr htmlSQL基于关系代数和元组关系演算 包括一个数据定义语言和数据操纵语言 SQL的范围包括数据插入 查询 更新和删除 数据库模式创建和修改 以及数据访问控制 尽管SQL经常被描述为 而且很大程度上是一种声明式编程 4GL 但是其也含有过程式编程的元素 SQL是对埃德加 科德的关系模型的第一个商业化语言实现 这一模型在其1970年的一篇具有影响力的论文 一个对于大型共享型数据库的关系模型 11 中被描述 尽管SQL并非完全按照科德的关系模型设计 但其依然成为最为广泛运用的数据库语言 12 13 SQL在1986年成为美国国家标准学会 ANSI 的一项标准 在1987年成为国际标准化组织 ISO 标准 14 此后 这一标准经过了一系列的增订 加入了大量新特性 虽然有这一标准的存在 但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性 目录 1 歷史 2 语法 3 语言特点 3 1 SQL函数 4 互操作性和標準化 4 1 標準化歷史 4 2 当前标准 4 2 1 SQL标准剖析 4 2 2 ISO IEC标准的扩展 5 以SQL為基礎的其他延伸語言 6 安全問題 7 参考文献 8 参见 9 外部連結歷史 编辑在1970年代初 由IBM 公司San Jose California研究實驗室 法语 IBM Almaden Research Center IBM San Jose Research Laboratory 的埃德加 科德發表將資料組成表格的應用原則 Codd s Relational Algebra 1974年 同一實驗室的D D Chamberlin 英语 Donald D Chamberlin 和R F Boyce 英语 Raymond F Boyce 對Codd s Relational Algebra 在研制关系数据库管理系统System R 英语 IBM System R 中 研制出一套規範語言 SEQUEL Structured English Query Language 並在1976年11月的IBM Journal of R amp D 英语 IBM Journal of Research and Development 上公布新版本的SQL 叫SEQUEL 2 1980年改名為SQL 1979年甲骨文公司首先提供商用的SQL IBM公司在DB2和SQL DS 数据库系统中也实现了SQL 1986年10月 美国ANSI 采用SQL 作为关系数据库管理系统的标准语言 ANSI X3 135 1986 后为国际标准化组织 ISO 采纳为国际标准 1989年 美国ANSI 采纳在ANSI X3 135 1989 报告中定义的关系数据库管理系统的SQL 标准语言 称为ANSI SQL 89 该标准替代ANSI X3 135 1986 版本 该标准为下列组织所采纳 国际标准化组织 ISO 为ISO 9075 1989 报告 Database Language SQL With Integrity Enhancement 美国联邦政府 发布在The Federal Information Processing Standard Publication FIPS PUB 127目前 所有主要的关系数据库管理系统支持某些形式的SQL 大部分数据库至少遵守ANSI SQL89 标准 ANSI SQL92 标准在交叉连接 cross join 和内部连接之上 新增加了外部连接 并支持在FROM 子句中写连接表达式 支持集合的并运算 交运算 支持Case SQL 表达式 支持CHECK 约束 创建临时表 支持cursor 支持事务隔离 语法 编辑主条目 SQL语法 图表显示了SQL语言元素组成的一个语句SQL语言分成了几种要素 包括 子句 是语句和查询的组成成分 在某些情况下 这些都是可选的 15 表达式 可以产生任何标量值 或由列和行组成的数据库表 谓词 给需要评估的SQL三值逻辑 3VL true false unknown 或布尔真值指定条件 并限制语句和查询的效果 或改变程序流程 查询 基于特定条件检索数据 这是SQL的一个重要组成部分 语句 可以持久地影响纲要和数据 也可以控制数据库事务 程序流程 连接 会话或诊断 SQL语句也包括分號 语句终结符 尽管并不是每个平台都必需 但它是作为SQL语法的标准部分定义的 无意义的空白在SQL语句和查询中一般会被忽略 更容易格式化SQL代码便于阅读 语言特点 编辑SQL是高级的非過程化編程語言 它允许用户在高层数据结构上工作 它不要求用户指定对数据的存放方法 也不需要用户了解其具体的数据存放方式 而它的界面 能使具有底层结构完全不同的数据库系统和不同数据库之间 使用相同的SQL作为数据的输入与管理 它以记录项目 records 的合集 set 项集 record set 作为操纵对象 所有SQL语句接受项集作为输入 回送出的项集作为输出 这种项集特性允许一条SQL语句的输出作为另一条SQL语句的输入 所以SQL语句可以嵌套 这使它拥有极大的灵活性和强大的功能 在多数情况下 在其他編程語言中需要用一大段程序才可实践的一个单独事件 而其在SQL上只需要一个语句就可以被表达出来 这也意味着用SQL可以写出非常复杂的语句 在不特別考慮效能下 SQL同時也是数据库文件格式的扩展名 SQL包含四个部分 資料定義語言 資料操縱語言 資料控制語言 事务控制語言SQL函数 编辑 函数 描述AVG 平均值COUNT 计数 不含Null FIRST 第一个记录的值MAX 最大值MIN 最小值STDEV 样本标准差STDEVP 总体标准差SUM 求和VAR 样本方差VARP 总体方差UCASE 转化为全大写字母LCASE 转化为全小写字母MID 取中值LEN 计算字符串长度INSTR 获得子字符串在母字符串的起始位置LEFT 取字符串左邊子串RIGHT 取字符串右边子串ROUND 数值四舍五入取整MOD 取余NOW 获得当前时间的值FORMAT 字符串格式化DATEDIFF 获得两个时间的差值互操作性和標準化 编辑供應商之間的SQL實現不兼容 不一定完全遵循標準 各种数据库的SQL方言通常不可移植 特别是在日期时间语法 字符串连接 NULL 比较的大小写敏感方面 只有PostgreSQL与Mimer SQL努力遵从标准 標準化歷史 编辑 SQL在1986年被ANSI标准化 1987年被ISO标准化 由ISO IEC JTC 1 Information technology Subcommittee SC 32 Data management and interchange 英语 ISO IEC JTC 1 SC 32 维护 标准名称通常为如下模式 ISO IEC 9075 n yyyy Part n title 年份 名字 别名 注释1986 SQL 86 SQL 87 ANSI首次标准化1989 SQL 89 FIPS 127 1 小修改 增加了integrity constraint1992 SQL 92 SQL2 FIPS 127 2 大修改 成为现代SQL的基础1999 SQL 1999 英语 SQL 1999 SQL3 增加了正则表达式匹配 递归查询 传递闭包 数据库触发器 过程式与控制流语句 非标量类型 arrays 面向对象特性 在Java中嵌入SQL SQL OLB 及其逆 SQL JRT 2003 SQL 2003 英语 SQL 2003 增加XML相关特性 SQL XML window functions 标准化sequences 自动产生值的列 对SQL 1999的新特性重新描述其内涵 2006 SQL 2006 英语 SQL 2006 导入 导出XML数据与SQL数据库 XQuery2008 SQL 2008 英语 SQL 2008 在cursor之外的ORDER BY语句 INSTEAD OF触发器 TRUNCATE语句 FETCH子句2011 SQL 2011 英语 SQL 2011 增加时态数据 PERIOD FOR 增强了window functions与FETCH子句2016 SQL 2016 英语 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存档免费获得 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 数据库语言例程 例如存储过程 这部分标准主要包含可选的特性 Part 6 页面存档备份 存于互联网档案馆 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 MRA work in progress 以SQL為基礎的其他延伸語言 编辑Transact SQL微軟MS SQL Server 以及Sybase Adaptive Server 英语 Sybase Adaptive Server 系列資料庫所用的SQLPL SQLOracle 資料庫所使用的SQL安全問題 编辑主条目 SQL注入攻击和參數化查詢 由於SQL指令在部份進階使用時 語法會依照特定條件來變換 而且若是表格中的欄位過多時 許多開發人員都會習慣以字串組立的方式建立SQL指令 而且又使用系統管理員級的帳戶連到資料庫 因此讓駭客有機會利用SQL的組立方式進行攻擊 像是在指令中添加部份刺探性或破壞性的指令 例如DROP TABLE DROP DATABASE或是DELETE FROM myTable等具破壞性的指令 讓資料庫的資料或實體伺服器被破壞 導致服務中斷或是系統癱瘓等後果 或是以邏輯的漏洞 在密碼欄寫入特殊字串 例如 or 1 1 讓該字串形成的邏輯判斷永遠為真 或直接取得非查詢條件的資料 而不需要知道密碼 以達成非法登入系統的目的 此種攻擊手法稱為SQL注入 SQL injection 目前實務上較有效的防禦方法 就是全面改用參數化查詢 参考文献 编辑 SQL 2023 is out 2023年6月1日 2023年6月26日 Paul Ryan A guided tour of the Microsoft Command Shell Ars Technica 10 April 2011 原始内容存档于2018 12 25 Media Type registration for application sql Internet Assigned Numbers Authority 10 April 2013 10 April 2013 原始内容存档于2018 01 24 The application sql Media Type RFC 6922 Internet Engineering Task Force 3 April 2013 10 April 2013 原始内容存档于2016 10 18 Beaulieu Alan Mary E Treseler 编 Learning SQL 2nd Sebastapol CA USA O Reilly April 2009 ISBN 978 0 596 52083 0 SQL n Oxford English Dictionary Oxford University Press 2014 11 27 Encyclopedia Britannica SQL 2013 04 02 原始内容存档于2018 12 25 From Oxford Dictionaries Definition of SQL abbreviation Structured Query Language an international standard for database manipulation Oxford Dictionaries SQL 2017 10 10 原始内容存档于2016 08 03 IBM SQL Guide 永久失效連結 From Microsoft Structured Query Language invented at IBM in the 1970s It is more commonly known by its acronym SQL Microsoft Structured Query Language SQL 2017 10 10 原始内容存档于2016 03 12 Codd Edgar F A Relational Model of Data for Large Shared Data Banks Communications of the ACM Association for Computing Machinery June 1970 13 6 377 87 2007 06 09 doi 10 1145 362384 362685 原始内容存档于2007 06 12 Chapple Mike SQL Fundamentals Databases About com 2009 01 28 原始内容存档于2009 02 22 Structured Query Language SQL International Business Machines October 27 2006 2007 06 10 ISO IEC 9075 1 2008 Information technology Database languages SQL Part 1 Framework SQL Framework 2017 10 10 原始内容存档于2012 02 03 ANSI ISO IEC International Standard IS Database Language SQL Part 2 Foundation SQL Foundation 1999 参见 编辑关系数据库 语言集成查询外部連結 编辑維基教科書中的相關電子教程 en SQL Dialects ReferenceComparison of different SQL implementations 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title SQL amp oldid 74679475, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。