Oracle从新手到高手
上QQ阅读APP看书,第一时间看更新

4.1 SQL概述

SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作,可以使用相同的结构化查询语言作为数据输入域管理的接口。SQL语言的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索、第四代软件开发工具中嵌入SQL语言等。

4.1.1 SQL简介

SQL是最重要的关系数据库操作语言,由于该语言语句可以嵌套,因此该语言具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持,成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范做了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

1. SQL语句结构

SQL语言基本上独立于数据库本身,是一种交互式查询语言,允许用户直接查询、存储数据。虽然SQL不是完整的程序语言,但它可以嵌入另一种语言,也可以借用VB、C、JAVA等语言,通过调用级接口(CALL LEVEL INTERFACE)直接发送到数据库管理系统。因此,SQL基本上是域关系演算,但它可以实现关系代数操作。

SQL的语句结构包括下列6部分。

※ 数据查询语言:该语句又称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序中给出。

※ 数据操作语言:该语句又称为动作查询语言,包括用于添加、修改和删除表中行的动词INSERT、UPDATE和DELETE。

※ 事务处理语言:该语句能确保被DML语句影响的表的所有行及时得以更新,包括BEGIN TRANSACTION、COMMIT和ROLLBACK。

※ 数据控制语言:该语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。

※ 数据定义语言:该语句属于动作查询的一部分,包括动词CREATE和DROP,主要用于在数据库中创建新表或删除表,以及为表加入索引等。

※ 指针控制语言:该语句包括DECLARE CURSOR、FETCH INTO和UPDATE WHERE CURRENT,用于对一个或多个表单独行的操作。

2. SQL语言特点

SQL语言基本上独立于数据库本身、使用的计算机、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。除此之外,SQL语言还具有下列语言特点。

※ 一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。

※ 使用方式灵活:SQL语言既可以直接以命令方式交互使用,也可以嵌入C、C++、FORTRAN、COBOL、JAVA等主语言中使用。

※ 非过程化:SQL语言只提操作要求,不必描述操作步骤,也不需要导航。

※ 简单易学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。

4.1.2 编写规则

SQL也属于一种语言,在编写过程中拥有自己独特的规则。

1. 大小写规则

一般情况下,SQL语言不区分大小写,既可以使用大写格式和小写格式,也可以使用大小写混合格式。例如,下面的语句:

     SELECT empno,ename,sex,job,deptno FROM employee

又例如,下面的语句:

     select empno,ename,sex,job,deptno from employee

上面的两个语句的区别在于大小写方面,但上面两个语句在功能上完全相同,没有任何区别。

同样的道理,语句中的对象名也可以使用大写或小写,以及大小写混合书写。

但是SQL在检查文本数值时会区分大小写,也就是在检查文本数值是否相等的情况下区分大小写。例如,tony和TONY便表示完全不同的值,其返回的结果也不尽相同。

一般在书写SQL代码时,为了增强其可读性,可以遵循约定的大小写规则。例如,SQL命令和字句使用大写格式,而SQL代码列表使用小写格式等。

2. 语句标识

SQL语言通常放在一行内显示,如果一行内显示不完,可以放置在多行内。此时,为了便于阅读还需要对多行语句进行缩进或跳格。

另外,在SQL*Plus中,SQL语言使用分号标识结束。用户还可以通过下列方法,提高SQL语言的可读性和逻辑性。

※ 使用空格:在编写赋值语句时,在等号两边使用空格分隔,可提供更好的语言标记区分。

※ 使用缩进:对于比较长的语句,可通过使用缩进的方法,提高语句的逻辑层次的表达力。

※ 使用垂直空白:可以使用垂直空白来提高关键字与参数的区分能力。

※ 使用分组:可以使用分组对语句进行段落划分。