数据库的语言——SQL

DBMS 是一种系统软件,我们要与它交互的时候就必须使用某种语言,在数据库发展初期每一种DBMS 都有自己的特有的语言,不过逐渐的SQL 成为了所有DBMS 都支持的主流语言。SQL 是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。

SQL的英文全称是Structured Query Language,它是1974 年由Boyce和Chamberlin提出的,并且首先在IBM的关系数据库原型产品R系统(SYSTEM R)上实现。它的前身是1972 提出的SQUARE(Specifying Queries As Relational Expressesion)语言,在1974 年做了修改,并且改名为SEQUEL(Structured English Query Language)语言,后来SEQUEL简化为SQL。

SQL 是高级的非过程化编程语言,允许用户在高层数据结构上工作。使用它,用户无需指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL 语言作为数据输入与管理的接口。它以记录集合作为操纵对象,所有SQL 语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL 语句的输出作为另一条SQL 语句的输入,所以SQL 语言可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单

独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。

SQL 具有下面4个主要的功能:创建数据库并定义表的结构;查询需要的数据;更新或者删除指定的数据;控制数据库的安全。使用SQL我们可以完成和DBMS的几乎所有交互任务。

比如我们要查找年龄小于18 岁的员工信息,那么我们只要执行下面的SQL就可以:

SELECT * from Employees where age<18

比如我们要将所有职位为“名誉总裁”的员工删除,那么就可以执行下面的SQL:

DELETE from Employees where position=’ 名誉总裁’

可以看到我们只是描述了我们要做什么,至于怎么去做则由DBMS 来决定。可以想想如果要是自己编程去实现类似的功能,则需要编写非常复杂的算法才能完成,而且性能也不一定会非常好。

我们可以通过三种方式执行SQL:

1,在工具中执行。各个DBMS几乎都提供了工具用于执行SQL语句,比如Microsoft SQL,Server 的Management Studio、DB2 的命令中心、Oracle的SqlPlus 或者MySQL的Query Browser。在这些工具中我们只要输入要执行的SQL然后点击【执行】按钮就可以得到执行结果。

2,以编译的方式嵌入到语言中。在这种方式中我们可以把SQL 直接写到代码中,在编译的时候由编译器来决定和数据库的交互方式。比如PowerBuild、C等就采用这种方式。

3,以字符串的形式嵌入到语言中。在这种方式中SQL 语句只是以字符串的形式写到代码中,然后由代码将其提交到DBMS,并且分析返回的结果。目前这是大部分支持数据

库操作的语言采用的方式,比如C#、Java、Python、Delphi 和VB等。

由于嵌入到语言中的执行方式是严重依赖宿主语言的,而本书不假定用户使用任何编程语言,为了能够使得使用任何语言的读者都能学习本书中的知识点,本书将主要以在工具中执行的方式来执行SQL语句,读者可以根据自己使用的编程语言来灵活运用这些知识点。

IBM 是SQL 语言的发明者,但是其他的数据库厂商都在IBM 的SQL 基础上提出了自己的扩展语法,因此形成了不同的SQL 语法,对于开发人员来说,使用这些有差异的语法是非常头疼的时候。因此在1986年美国国家标准化协会(ANSI)为SQL 制定了标准,并且在1987年国际标准化组织(ISO)也为SQL 指定了标准,迄今为止已经推出SQL-86、SQL-89、SQL-92、SQL-99、SQL-2003等版本的标准。

虽然已经有了国际标准,但是由于种种原因,各个数据库产品的SQL 语法仍然有着很大差异,在数据库A上能成功执行的SQL放到数据库B上就会执行失败。为了方便使用不同数据库产品的读者都能成功运行本书中的例子,我们会介绍各种数据库SQL 的差异性,并且给出解决方案,而且本书将会安排专门章节讲解跨数据库程序开发的技术。

posted @ 2018-10-20 00:09  尐鱼儿  阅读(630)  评论(0编辑  收藏  举报