SQL


SQL (正體)

Free Web Hosting with Website Builder

SQL 全名是结构化查询语言Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986年10月,美国 ANSI 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL语言不能完全相互通用。

目录

历史

1970年代初,由IBM公司San Jose,California研究实验室的埃德加·科德发表将资料组成表格的应用原则(Codd's Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd's Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976 年 11 月的IBM Journal of R&D上公布新版本的SQL语言(叫SEQUEL/2)。1980年改名为SQL。

1979年ORACLE公司首先提供商用的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标准。

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

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

SQL 语言包含4个部分:

标准化

以 SQL 为基础的其他延伸语言

微软 MS SQL-Server,以及 Sybase Adaptive Server 系列数据库所用的 SQL 语言
  • PL-SQL
Oracle 数据库所使用的 SQL 语言

安全问题

由于 SQL 指令在部份进阶使用时,语法会依照特定条件来变换,而且若是表格中的字段过多时,许多开发人员都会习惯以字串组立的方式建立 SQL 指令,而且又使用系统管理员级的帐户连到数据库,因此让黑客有机会利用 SQL 的组立方式进行攻击,像是在指令中添加部份刺探性或破坏性的指令 (例如 DROP TABLEDROP DATABASE 或是 DELETE * FROM myTable 等具破坏性的指令),让数据库的资料或实体服务器被破坏,导致服务中断或是系统瘫痪等后果,此种攻击手法称为SQL Injection

目前实务上较有效的防御方法,就是全面改用参数化查询,或是检查输入资料,过滤掉可能的危险指令或资料来防范。

外部链接

教学
其他
  • SQL语法比较 - ProgWiki

参见


数据库管理系统(DBMS)查看  讨论  编辑  历史 )

概念
数据库 • 数据库模型 • 资料库储存结构 • 关系模型 • 分布式资料库 • ACID • NULL值
关系数据库 • 关系代数 • 关系演算 • 资料库正规化 • 参照完整性 • 关系数据库管理系统 
主键 • 外来键 • 代理主键 • 超键值 • 候选键 

资料库物件
触发程序 • 检视表 • 资料表 • 指标 • 交易记录档 • 交易 • 数据库索引 
预存程序 • 资料库分割

SQL
分类:资料定义语言 • 资料操纵语言 • 资料控制语言
指令:SELECT • INSERT • UPDATE • MERGE • DELETE • JOIN • UNION • CREATE • DROP • Begin work • COMMIT • ROLLBACK • TRUNCATE • ALTER
安全: SQL Injection • 参数化查询

数据库管理系统的实施

实施类型
关联式资料库 • 档案型资料库 • Deductive • 维度化资料库 • 阶层式 • 对象数据库 • 物件关联式资料库 • Temporal • XML资料库

数据库产品
对象型 (对比) • 关系型 (对比)

数据库成分
查询语言 • 查询优化器 • 查询计划 • ODBC • JDBC • OLE DB








Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History