ANSISQL标准和准则
ANSI SQL标准和准则
SQL:ANSI数据库管理标准
结构化查询语⾔(SQL)是⽤于访问和管理数据库的数据库管理员(DBA)的标准语⾔。
多年来,SQL不断发展,许多版本和语⾔开始出现。为了统⼀SQL以获得最佳实践,美国国家标准协会(ANSI)为数据库查询语⾔创建了特定的标准。
SQL时间轴
1970年:为IBM⼯作的计算机Edgar Frank Codd博⼠于1970年6⽉在计算机协会(ACM)期刊上发表了他的着名论⽂“⼤型共享数据库的数据关系模型”。Codd博⼠的模型仍然是关系数据库管理系统(RDBMS)的权威模型。
1978年: IBM公司在其位于加利福尼亚州的圣何塞研究中⼼开发数据库系统System / R以及数据库语⾔结构化英语查询语⾔(SEQUEL)。它们基于Codd博⼠的原始模型,他们称之为SEQUEL。
1979年: Relational Software,Inc。发布了第⼀个关系数据库管理系统,并将其命名为Oracle。他们的RDBMS在⼀台⼩型机上运⾏,使⽤SQL作为主要查询语⾔。该产品变得如此受欢迎,该公司更名为Oracle。
1982年: IBM发布了第⼀个基于SQL的商⽤SQL,它们命名为SQL /数据系统或SQL / DS,并于1985年发布了Database 2系统或DB2。两个系统都在IBM⼤型计算机上运⾏。IBM稍后将DB2移植到其他系统,包括在Windows和UNIX操作系统上运⾏的系统。
ANSI标准逐年
1986: SQL-87最初由ANSI于1986年正式确定。
1989年:美国国家标准协会(ANSI)发布了第⼀套数据库查询语⾔标准,称为SQL-89或FIPS 127-1。
1992年: ANSI发布了修订后的标准ANSI / ISO SQL-92或SQL2,它们⽐SQLI更严格,增加了⼀些新功能。这些标准引⼊了合规⽔平,表明⽅⾔符合ANSI标准的程度。
java类的概念1999: ANSI发布SQL3或ANSI / ISO SQL:1999,具有新功能,如对对象的⽀持。取代了核⼼规范的合规⽔平,以及另外9个封装的附加规格。
2003: ANSI发布SQL:2003,引⼊标准化序列,XML相关功能和标识列。第⼀个RDBMS的创建者EFCodd博⼠于同年4⽉18⽇去世。
2006: ANSI发布SQL:2006,定义如何将SQL与XML结合使⽤,并使应⽤程序能够将XQuery集成到现有的SQL代码中。
2008: ANSI发布SQL:2008,引⼊INSTEAD OF触发器以及TRUNCATE语句。
2011: 发布SQL:2011或ISO / IEC 9075:2011,ISO(1987)的第七个修订版和SQL数据库查询语⾔的ANSI(1986)标准。
他们将新的ANSI SQL标准分为九个部分,包括:
第1部分 - ISO / IEC 9075-1:2011 SQL / Framework,它提供了逻辑概念。
第2部分 - ISO / IEC 9075-2:2011 SQL / Foundation,包括中⼼元素SQL。
第3部分ISO / IEC 9075-3:2008 SQL /调⽤级接⼝(CLI)解释了接⼝组件,例如⽤于以各种编码语⾔(如COBOL和C ++)执⾏SQL语句的过程,结构和变量绑定。
第4部分ISO / IEC 9075-4:2011 SQL /持久存储模块(PSM),概述了SQL的过程扩展标准,包括条件处理和控制流,以及语句条件信号和重新标记,以及局部变量和游标。将表达式分配给参数和变量。解决了持久数据库语⾔例程(如存储过程)的维护问题。
第9部分ISO / IEC 9075-9:2008 SQL /外部数据管理(MED),包括⽤于定义数据链接类型的SQL扩展和允许SQL管理外部数据的外部数据包装器。外部数据是可访问的,但不受基于SQL的DBMS管理。
第10部分ISO / IEC 9075-10:2008 SQL /对象语⾔绑定(OLB)定义了SQLJ的语义和语法。SQLJ是将SQL嵌⼊到Java中。该标准规定了SQLJ应⽤程序的⼆进制可移植性机制。它还定义了⼏个Java包及其包含的类。
第11部分ISO / IEC 9075-11:2011 SQL /信息和定义Schemata,指定信息模式和定义模式,提供使SQL对象和数据库⾃我描述的⼯具。包括SQL对象标识符,安全性和授权规范,以及安全性和完整性约束。⽀持ISO / IEC 9075的功能和包,以及基于SQL的DBMS实现提供的功能。
第13部分 - ISO / IEC 9075-13:2008 ISO / IEC 9075-13:2008:SQL例程和类型使⽤Java编程语⾔(JRT),指定将Java类⽤作SQL结构化⽤户定义类型的能⼒从SQL应⽤程序中调⽤静态Java⽅法作为例程,在数据库中称为Java。
第14部分 - ISO / IEC 9075-14:2011 SQL / XML相关规范,定义了在SQL中使⽤XML时基于SQL的扩展。它概述了XML数据类型,例程和函数。它还描述了在SQL数据库中存储和管理XML的XML到SQL数据类型映射。
ISO / IEC 13249 SQL多媒体和应⽤程序包与ISO / IEC 9075⼀起作为单独但相关的标准,指定基于SQL的各种接⼝和包。
该软件包的⽬标是提供对最常见的数据库应⽤程序的集中访问,例如图⽚,⽂本,空间数据和数据挖掘。
如何查标准副本
由于ISO和ANSI版权限制,SQL标准规范的硬拷贝仅可购买。您可以在到电⼦副本,⽅法是选择“访问标准 - eStandards商店”并搜
索“SQL语⾔”。
每个⽂档有两种变体,但它们是相同的:
1. INCITS / ISO / IEC 9075 - * - 2011
2. ISO / IEC 9075 - *:2011
每个数据库创建者都希望遵守这些标准,从⽽使SQL的各种实现变得相似; 但是,每个实现仍然具有使⽤SQL的独特⽅⾔,包括标准的扩展或添加。
将SQL置于测试中
所有SQL⽅⾔的基本SQL命令和语句都是类似的,因此⼀旦DBA知道如何使⽤它,他们就可以轻松地学习其他⽅法。
虽然⼤多数SQL数据库程序都有⾃⼰的专有扩展,但为了符合ANSI标准,它们必须⾄少以相同的⽅式⽀持这五个主要命令:
1. UPDATE
2. 删除
3. 选择
4. 插
5. 哪⾥
SQL使DBA能够在数据库中执⾏以下操作:
执⾏查询
检索数据
插⼊,更新和删除记录
创建新表和视图
建⽴新的数据库
⽣成存储过程
设置视图,表和过程的权限。
为了⽣成可以从数据库访问数据的⽹站,关系数据库管理系统(RDBMS)数据库程序是必要的。⼀些流⾏的RDBMS程序包括:
SQL Server
MS Access
MySQL的
Postgre SQL
Oracle数据库。
为了创建数据库,数据库管理员还需要使⽤以下内容:
标准的标记语⾔,如CSS / HTML
服务器端脚本语⾔,例如ASP或PHP。
了解如何使⽤SQL检索您请求的数据。
数据库的剖析
关系数据库管理系统(RDBMS)构成了数据库的基础。使⽤RDBMS允许DBA将数据存储在称为表的数据库对象中。表由按部分组织的列和⾏相关数据组成。
识别数据库表
⼤多数数据库包含多个表,因此DBA必须使⽤名称标识每个表。每个表都包含包含信息和数据的记录⾏。
例如,企业将使⽤具有客户表的数据库,该客户表包含每个客户的以下数据:
1. 顾客姓名
2. 联系⼈姓名
3. 客户ID
4. 客户地址 - 街道,城市,和国家
5. 客户联系信息
在这种情况下,该表包含五个记录 - 每个客户⼀个 - 和⼋列,每个数据块⼀个:客户名称,联系⼈姓名,客户ID,包括城市的客户地址,和国家/地区,以及客户联系信息。
与SQL数据库通信
数据库管理员使⽤SQL语句执⾏数据库中所需的所有操作。然后将结果存储在结果表中,称为结果集。
SQL通常不区分⼤⼩写,并且某些数据库系统需要在每个SQL语句的末尾使⽤分号。分号已成为在数据库系统中将SQL语句彼此分离的标准⽅法。
这使DBA能够在⼀次调⽤服务器时执⾏多个SQL语句。
⼀些SQL命令包括:
ALTER TABLE修改表。
ALTER DATABASE修改数据库。
CREATE DATABASE创建新数据库。
CREATE INDEX创建索引/搜索键。
CREATE TABLE创建新表。
DELETE从数据库中删除数据。
DROP INDEX删除索引。
DROP TABLE删除表
INSERT INTO将新数据插⼊数据库。
SELECT从数据库中提取数据。
UPDATE更新数据库中的数据。
Codd的12条规则
当他创建第⼀个关系数据库管理系统时,Codd博⼠包含了13条规则,建议如果数据库管理系统满⾜所有这些规则,那么它就是⼀个真正的关系数据库管理系统。
因为他从0到12编号,他们被称为:
规则零:基础声明基本系统必须满⾜三个基本要求:它必须是关系型的,包括数据库和管理系统。它还必须专门利⽤关系设施来管理数据库,才能被视为真正的RDBMS。
规则⼀:信息表⽰以单数形式表⽰数据库中的所有信息,特别是通过将值放在表⾏内的列位置。
规则⼆:保证访问所有数据都必须是可访问的,就像主键的基本要求⼀样。通过定义包含的表和列的
名称以及包含⾏的主键值,可以合理地寻址数据库中的每个单独标量值。
规则三:处理空值 DBMS必须让每个字段保持为空或为空。这意味着它必须以系统的⽅式⽀持对任何不适⽤或缺失信息的表⽰的操纵,该⽅式不同于所有常规值,并且独⽴于数据类型。
规则四:活动在线⽬录系统必须⽀持使⽤其常规查询语⾔的授权⽤户可访问的内联,联机,关系结构或⽬录。⽤户应该能够使⽤他们⽤于访问数据库内部数据的相同关系模型和查询语⾔来访问数据库的⽬录。
规则五:综合数据⼦语⾔系统必须⽀持⾄少⼀种具有线性语法的关系语⾔。⽤户应该能够在应⽤程序中以交互⽅式利⽤它。它还必须⽀持数据操作操作(如更新和检索)和数据定义操作(如视图定义)以及事务管理操作(如提交,开始和回滚)。它还应该具有完整性和安全性约束。
规则六:更新任何理论上可以更新的视图都必须由系统更新。
规则七:⾼级更新,插⼊和删除系统应该⽀持⼀次更新,插⼊和删除操作符,以便⽤户可以从由多个表和/或⾏的数据构成的集合中检索关系数据库中的数据。应为任何可检索集启⽤更新,插⼊和删除操作,⽽不是单个表中的单⾏。
规则⼋:物理数据独⽴性物理级别的更新不应要求基于结构更新应⽤程序。例如,数据存储⽅式的更
改,例如是否将数据放在数组或链接列表中。
规则九:逻辑数据独⽴性对逻辑级别的更新(例如列,表和⾏)不应要求基于结构更新应⽤程序。实现逻辑数据独⽴性⽐物理数据独⽴性更难。
规则10:完整性独⽴性指定完整性约束必须与应⽤程序和⽬录分开存储。必须可以在适当时更新这些约束⽽不影响任何当前存在的应⽤程序。
规则11:分发独⽴性数据库⽤户不应看到数据库各部分到各个位置的分布。⾯对引⼊DBMS的分布式版本或当前分布式数据在整个系统中重新分配时,所有现有应⽤程序应能够连续有效地运⾏。
规则12:⾮颠覆如果系统提供⼀次⼀个记录或低级别接⼝,则⽆法利⽤它来减少另⼀个系统。这种情况的⼀个例⼦是绕过关系完整性或安全约束的⾏为。
结构化查询语⾔或SQL已经⾛过了漫长的道路,但⽤于创建它的基础仍然很强⼤。随着云计算成为常态,数据库管理员可能会发现更多使⽤它的⽅式和地点; 但是,ANSI将保留⽤于指定统⼀数据库查询语⾔的标准。
资源:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论