20世纪80年代初,ANSI(American National Standard Institute) 数据库标准委员会开始制订相关关系语言的标准,但直到1986年,数据库标准委员会才推出第一个SQL语言标准SQL-86。随着数据库技术的发展,SQL标准也在不断进行扩展和修正,并且数据库标准委员会先后又推出SQL-89,SQL-92以及SQL-99标准。1979年,Relational Software公司(Oracle 前身)首先向市场推出SQL 执行工具,Oracle 完全遵从ANSI的SQL标准,并且将最新的SQL-99标准集成到Oracle 9i/Oracle 10g 数据库中。
SQL(Structured Query Language)是关系数据库的基本操作语言,它是应用程序与数据库进行交互操作的接口。它将数据查询(Data Query)、数据操作(Data Manipulation)、数据定义(Data Definition) 和数据控制(Data Control)功能集于一体,从而使得应用开发人员、数据库管理员、最终用户都可以通过SQL语言访问数据库,并执行相应操作。
1.SQL 语言特点:
a.SQL 语言采用集合操作方式,对数据库的处理是成组进行的,而不是一条一条处理。通过使用集合操作方式,可以加快数据的处理速度。
b.执行SQL语句时,用户只需要知道其逻辑含义,而不需要关心SQL语句的具体执行步骤。例如,使用WHERE子句检索数据时,用户可以取得所需要的记录,而这些记录如何存储、如何检索不需要用户干预,Oracle 会自动优化SQL语句,确定最佳访问途径,执行SQL语句,最终返回世纪数据。
c.执行SQL语句时,既可以采用交互方式执行(例如SQL*plus),也可以将SQL语句嵌入到高级语言中执行(例如PRO*C/C++,PRO*COBOL,SQLJ)。
2.SQL语言分类
a.数据库查询语言(SELECT 语句):用于检索数据库数据。在SQL所有语句中,SELECT语句的功能和语法最复杂、最灵活。
b.数据操纵语言(Data Manipulation Language,DML):用于改变数据库数据,包括INSERT,UPDATE和DELETE 三条语句。其中INSERT 语句用于将数据插入数据库中,UPDATE 语句用于更新已经存在的数据库数据,而DELETE 语句则用于删除已存在的数据库数据。
c.事务控制语言(Transactional Control Language ,TCL):用于维护数据的一致性,包括COMMIT,ROLLBACK 和 SAVEPOINT 三条语句。其中COMMIT 语句用于确认已经进行的数据库改变,ROLBACK 语句用于取消已经进行的数据库改变,而SAVEPOINT语句则用于设置保存点,以取消部分数据库改变。
d.数据定义语言(Data Definition Language,DDL):用于建立、修改和删除数据库对象,例如使用CREATE TABLE 可以建表;使用ALTER TABLE 可以修改表结构;使用DROP TABLE 可以删除表。但是要注意:DDL语句会自动提交事务。
e.数据控制语言(Data Control Language ,DCL):用于执行权限授予和收回操作,包括GRANT 和 REVOKE 两条命令,其中GRANT 命令用于给用户或角色授予权限,而REVOKE 命令则用于收回用户或角色所具有的权限。但是要注意,DCL语句会自动提交事务。
3. SQL 语句编写规则
1). SQL 关键字不区分大小写,既可以使用大写格式,也可以使用小写格式,或者混用大小写格式。
2). 对象名和列名不区分大小写,它们既可以使用大写格式,也可以使用小写格式,或者混用大小写格式。
3). 字符值和日期值区分大小写。当在SQL语句中引用字符值和日期值时,必须要给出正确的大小写数据,否则不能返回正确信息。
4). 在应用程序中编写SQL语句时,如果SQL语句文本很短,可以将语句文本放在一行上;如果SQL语句文本很长,可以将语句文本分布到多行上,并且可以通过使用跳格和缩进提高可读性。另外,在SQL*Plus 中SQL语句要以分号结束。