- Oracle 11g从入门到精通(第2版) (软件开发视频大讲堂)
- 明日科技
- 2665字
- 2020-11-28 15:54:54
4.1 SQL语言简介
视频讲解:光盘\TM\lx\4\ SQL语言简介.mp4
SQL全称是结构化查询语言,英文译作Structured Query Language,它是一种在关系型数据库中定义和操纵数据的标准语言。最早是由IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,当时称为SEQUEL2,也就是目前的SQL语言。
1979年Oracle公司首先提供了商用的SQL语言,同年,IBM公司在DB2和SQL/DS数据库系统中也采用了SQL语言。1986年10月,美国国家标准化组织(ANSI)采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后来SQL语言被国际标准化组织(ISO)采纳为国际标准。
随着数据库技术的发展,SQL标准也在不断地进行扩展和修正,数据库标准委员会先后又推出了SQL-89、SQL-92及SQL-99标准。Oracle在后期的版本中将SQL-99标准集成到了Oracle 9i以后的数据库中。目前,所有主要关系型数据库管理系统都支持某个标准的SQL语言,其中大部分数据库都遵守ANSI SQL-89标准。
4.1.1 SQL语言的特点
SQL是一种非过程化语言,能让用户不用考虑诸如数据的存储格式和数据的存储路径等复杂问题就能按照自己的要求在高层数据结构上操作。SQL语句通常用于完成一些数据库的操作任务,具有增加、删除、修改、数据定义与控制等完整的数据库操作功能。在数据应用程序开发过程中,巧妙地使用SQL语句,可以简化编程,起到事半功倍的效果。
通过SQL语句,程序员或数据库管理员可以进行如下的主要工作。
建立数据库的表格,包括设置表格可以使用的空间。
改变数据库系统环境设置。
针对某个数据库或表格,授予用户存取权限。
对数据库表格建立索引值。
修改数据库表格结构(新建、删除或修改表格字段)。
对数据库进行数据的新建。
对数据库进行数据的删除。
对数据库进行数据的修改。
对数据库进行数据的查询。
SQL语言结构简洁,功能强大,简单易学,自从被国际标准化组织(ISO)采纳为国际标准以后,SQL语言得到了广泛的应用,它主要有以下特点。
(1)综合统一。数据库的主要功能是通过数据库支持的数据语言来实现的。
(2)集合性。SQL运行用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许将一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中用户于要得到的结果。不仅查找可以是集合,插入、删除、更新也可以是元组。
(3)统一性。SQL为许多任务提供了统一的命令,这样方便用户学习和使用,基本的SQL命令只需很少时间就能学会,甚至最高级的命令也可以在几天内掌握。数据库的操作任务通常包括以下几方面。
查询数据。
在表中插入、修改和删除记录。
建立、修改和删除数据对象。
控制对数据和数据对象的读写。
保证数据库一致性和完整性。
(4)高度非过程化。SQL是一个非过程化的语言,不像其他的语言,如C、Pascal等,SQL没有循环结构(比如if-then-else、do-while)以及函数定义等的功能。只提“做什么”,不必指明“怎么做”,用户无须了解存取路径及物理地址,这样减轻用户负担,提高效率。因为它一次处理一个记录,对数据提供自动导航。而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用编程语言的时候创建你自己的数据类型。
存取路径的选择由DBMS的优化机制来完成,用户不必使用循环结构就可以完成数据操作。
(5)语言简单,易学易用。整个SQL语句只用9个命令动词即可以实现对数据库及数据的查询和管理,SQL的命令动词及其功能如表4.1所示。
表4.1 SQL的命令动词及其功能
(6)以同一种语法结构提供两种使用方式。第一种方式是交互式应答使用,即用户在终端命令提示符下输入SQL命令时数据库服务器可以立即执行。第二种方式是通过预编译SQL进行执行,即把SQL命令嵌入到应用程序中执行。
(7)是所有关系数据库的公共语言。由于所有主要的关系数据库管理系统都支持SQL,用户可将使用SQL的部分从一个RDBMS转到另一个,所有用SQL编写的程序都是可移植的。
4.1.2 SQL语言的分类
SQL是关系型数据库的基本操作语言,是数据库管理系统与数据库进行交互的接口。它将数据查询、数据操纵、事务控制、数据定义和数据控制功能集于一身,而这些功能又分别对应着各自的SQL语言,具体如下。
1.数据查询语言(DQL)
用于检索数据库中的数据,主要是SELECT语句,它在操作数据库的过程中使用最为频繁。
2.数据操纵语言(DML)
用于改变数据库中的数据,主要包括INSERT、UPDATE和DELETE3条语句。其中,INSERT语句用于将数据插入到数据库中,UPDATE语句用于更新数据库中已经存在的数据,而DELETE语句则用于删除数据库中已经存在的数据。
3.事务控制语言(TCL)
用于维护数据的一致性,包括COMMIT、ROLLBACK和SAVEPOINT3条语句。其中,COMMIT语句用于提交对数据库的更改,ROLLBACK语句用于取消对数据库的更改,而SAVEPOINT语句则用于设置保存点。
4.数据定义语言(DDL)
用于建立、修改和删除数据库对象。比如,可以使用CREATE TABLE语句创建表;使用ALTER TABLE语句修改表结构;使用DROP TABLE语句删除表。
5.数据控制语言(DCL)
用于执行权限授予和权限收回操作,主要包括GRANT和REVOKE两条命令。其中,GRANT命令用于给用户或角色授予权限,而REVOKE命令则用于收回用户或角色所具有的权限。
4.1.3 SQL语言的编写规则
SQL关键字不区分大小写,既可以使用大写格式,也可以使用小写格式,或者大小写格式混用。
【例4.1】 编写以下3条语句,对关键字(SELECT和FROM)分别使用大写格式、小写格式或大小写混用格式,代码如下(实例位置:光盘\TM\sl\4\1)。
SQL> select empno, ename, sal from scott.emp; SQL> SELECT empno, ename, sal FROM scott.emp; SQL> selECT empno, ename, sal frOM scott.emp;
分别执行这3条SELECT语句,会发现结果完全相同。
对象名和列名不区分大小写,它们既可以使用大写格式,也可以使用小写格式,或者大小写格式混用。
【例4.2】 编写以下3条语句,对表名和列名分别使用大写格式、小写格式或大小写混用格式,代码如下(实例位置:光盘\TM\sl\4\2)。
SQL> select empno, ename, sal from scott.emp; SQL> select EMPNO, ENAME, SAL from SCOTT.EMP; SQL> select emPNO, ename, sAL from scott.EmP;
分别执行这3条SELECT语句,会发现结果完全相同。
字符值区分大小写。当在SQL语句中引用字符值时,必须给出正确的大小写数据,否则不能得到正确的查询结果。
【例4.3】 编写以下两条语句,查询scott.emp表中职位是“销售员”的记录,要求两条语句的查询条件分别为“'SALESMAN'”和“salesman”,代码如下。
SQL> select * from scott.emp where job='SALESMAN'; SQL> select * from scott.emp where job=salesman;
分别执行这两条SELECT语句,会发现结果不相同,因为查询条件是不相同的。
在SQL*Plus环境编写SQL语句时,如果SQL语句较短,则可以将语句放在一行上显示;如果SQL语句很长,为了便于用户阅读,则可以将语句分行显示(并且Oracle会在除第一行之外的每一行前面自动加上行号),当SQL语句输入完毕,要以分号作为结束符。
【例4.4】 检索scott.emp表中职位是SALESMAN(销售员)的记录,并且分行编写SQL语句,代码如下(实例位置:光盘\TM\sl\4\3)。
SQL> select empno, ename, job 2 from scott.emp 3 where job='SALESMAN' 4 order by empno;
说明
在SQL*Plus环境中编写较长的SQL语句时,按Enter键即可实现换行。但要注意,在按Enter键之前不要输入分号,因为分号表示SQL语句的结束。