关系数据库标准语言SQL
一、SQL概述
关系数据库SOL语言是介乎于关系代数和元组演算之间的一种语言,广泛应用于商用系统中,是关系数据库的标准语言。SQL是SEQUEL的简称,其前身是SQUARE语言。
SQL数据库的体系结构基本上也是三级结构。在SOL中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”。
SQL数据库的体系结构有六个要点。
SQL主要由数据定义、数据操纵、数据控制和嵌入式SQL的使用规定四部分组成。
二、SQL的数据定义
SOL的数据定义部分也称为“SQLDDL'’,用于定义SQL模式、基本表、视图和索引。该部分包括对SQL模式、基本表、视图和索引的创建和撤消操作。
SQL的数据定义语句有:SQL的模式创建语句和撤消语句,基本表的创建、修改和撤消语句,视图的创建和撤消语句,索引的创建和撤消语句。
SQL提供的数据类型主要有数值型、字符串型、位串型和时间型四种。SQL允许在这四种域上执行比较操作,但算术操作只限于数值型。 SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。
三、数据查询
SQL的数据查询属于SOL的数据操纵部分,即“SQL DML"部分。SOL的数据查询用SE LECT语句来实现。
SELECT语句能表达所有的关系代数表达式。如果一个查询涉及多个基本表,
则SE LECT语句可有多种写法,即嵌套查询、联接查询、使用存在量词的嵌套查询等。
SELECT语句完整的句法如下:
SELECT目标表的列名或列表达式序列
FROM基本表和(或)视图序列
[WHERE行条件表达式]
[GROUPBY列名序列]
[HAVING组条件表达式]
[ORDERBY列名[ASC | DESC]。。。]
其执行过程为:
(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作;
(2)选取满足WHERE子句中给出的行条件表达式的元组;
(3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组;
(4)按SELECT子句中给出的列名或列表达式求值输出;
(5)ORDER子句对输出的目标表进行排列。
四、SOL的数据更新
SQL的数据更新也属于SQL的数据操纵部分,包括数据插入、删除和修改三种操作。基本表的数据更新语句包括:元组值的插入语句,查询结果的插入语句,数据的删除语
句和修改语句。
对于视图元组的更新操作有三条规则:
(1)如果一个视图是从多个基本表使用联接操作导出的,则不允许对这个视图执行更新操作;(2)如果在导出视图的过程中,使用了分组和聚合操作,则不允许对这个视图执行更新操作;(3)如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键或某个
候选键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。
SQL2中,允许更新的视图在定义时,必须加_k"WITH CHECK OPTION”短语。
五、嵌入式SOL
SQL语言有两种方式:一种是在终端交互方式下使用,称为交互式SQL;另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL。嵌入式SQL的实现有两种处理方式:一种是扩充宿主语言的编译程序,使之能处理SQL语句;另一种是采用预处理方式。目前多数系统采用预处理方式。
在嵌入式SQL中,共享变量是SQL和宿主语言的接口。SQL2规定,SQLSTATE是一个特殊的共享变量,起着解释SQL语言执行状况的作用。
在宿主语言的程序中使用SQL语句有以下规定:
(1)在程序中要区分SQL语言与宿主语句。所有SQL语句前必须加上前缀标识"EXEC SQL’,并以"END EXEC"作为语句结束标志。结束标志在不同的宿主语言中是不同的。
(2)允许嵌入的SQL语句引用宿主语言的程序变量,但在引用时,这些变量前必须加昌号“:”作为前缀标识,以示与数据库中变量有区别,而且这些变量必须先由宿主语言的程序定义,并用SQL的DECLARE语句说明。
(3)用游标机制协调SQL的集合处理方式与宿主语言单记录处理方式。与游标有关的SQL语句有四个,即游标定义语句、游标打开语句、游标推进语句、游标关闭语句。
SQLDDL语句,只要加上前缀标识"EXEC SQL"和结束标志"END EXEC"就能嵌入在宿主语言程序中使用。而SQL DML语句在嵌入使用时,还要注意是否使用了游标机制。
(1)若是INSERT,DELETE和UPDATE语言,则不必涉及游标,只要加上前缀标识和结束标志就能嵌入在宿主语言程序中使用。
(2)若是已知查询结果肯定是单元组的SLLECT语句,则不必涉及游标,也可加上前缀标识和结束标志后嵌入在宿主语言程序中使用,但此时应该在SELECT语句中增加一个INTO子句,指出找到的值应送到相应的共享变量中去。
(3)若是已知查询结果为多个元组的SELECT语句,则必须涉及到游标,用游标机制把多个元组一次一个地传送给宿主语言程序处理。
游标在推进时只能沿查询结果中元组顺序从头到尾一行行推进,并且不能返回,这给使用带来不便。为此,SQL2提供了卷游标技术来解决这一问题。卷游标在推进时可以进退自如。
一、SQL概述
关系数据库SOL语言是介乎于关系代数和元组演算之间的一种语言,广泛应用于商用系统中,是关系数据库的标准语言。SQL是SEQUEL的简称,其前身是SQUARE语言。
SQL数据库的体系结构基本上也是三级结构。在SOL中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”。
SQL数据库的体系结构有六个要点。
SQL主要由数据定义、数据操纵、数据控制和嵌入式SQL的使用规定四部分组成。
二、SQL的数据定义
SOL的数据定义部分也称为“SQLDDL'’,用于定义SQL模式、基本表、视图和索引。该部分包括对SQL模式、基本表、视图和索引的创建和撤消操作。
SQL的数据定义语句有:SQL的模式创建语句和撤消语句,基本表的创建、修改和撤消语句,视图的创建和撤消语句,索引的创建和撤消语句。
SQL提供的数据类型主要有数值型、字符串型、位串型和时间型四种。SQL允许在这四种域上执行比较操作,但算术操作只限于数值型。 SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。
三、数据查询
SQL的数据查询属于SOL的数据操纵部分,即“SQL DML"部分。SOL的数据查询用SE LECT语句来实现。
SELECT语句能表达所有的关系代数表达式。如果一个查询涉及多个基本表,
则SE LECT语句可有多种写法,即嵌套查询、联接查询、使用存在量词的嵌套查询等。
SELECT语句完整的句法如下:
SELECT目标表的列名或列表达式序列
FROM基本表和(或)视图序列
[WHERE行条件表达式]
[GROUPBY列名序列]
[HAVING组条件表达式]
[ORDERBY列名[ASC | DESC]。。。]
其执行过程为:
(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作;
(2)选取满足WHERE子句中给出的行条件表达式的元组;
(3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组;
(4)按SELECT子句中给出的列名或列表达式求值输出;
(5)ORDER子句对输出的目标表进行排列。
四、SOL的数据更新
SQL的数据更新也属于SQL的数据操纵部分,包括数据插入、删除和修改三种操作。基本表的数据更新语句包括:元组值的插入语句,查询结果的插入语句,数据的删除语
句和修改语句。
对于视图元组的更新操作有三条规则:
(1)如果一个视图是从多个基本表使用联接操作导出的,则不允许对这个视图执行更新操作;(2)如果在导出视图的过程中,使用了分组和聚合操作,则不允许对这个视图执行更新操作;(3)如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键或某个
候选键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。
SQL2中,允许更新的视图在定义时,必须加_k"WITH CHECK OPTION”短语。
五、嵌入式SOL
SQL语言有两种方式:一种是在终端交互方式下使用,称为交互式SQL;另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL。嵌入式SQL的实现有两种处理方式:一种是扩充宿主语言的编译程序,使之能处理SQL语句;另一种是采用预处理方式。目前多数系统采用预处理方式。
在嵌入式SQL中,共享变量是SQL和宿主语言的接口。SQL2规定,SQLSTATE是一个特殊的共享变量,起着解释SQL语言执行状况的作用。
在宿主语言的程序中使用SQL语句有以下规定:
(1)在程序中要区分SQL语言与宿主语句。所有SQL语句前必须加上前缀标识"EXEC SQL’,并以"END EXEC"作为语句结束标志。结束标志在不同的宿主语言中是不同的。
(2)允许嵌入的SQL语句引用宿主语言的程序变量,但在引用时,这些变量前必须加昌号“:”作为前缀标识,以示与数据库中变量有区别,而且这些变量必须先由宿主语言的程序定义,并用SQL的DECLARE语句说明。
(3)用游标机制协调SQL的集合处理方式与宿主语言单记录处理方式。与游标有关的SQL语句有四个,即游标定义语句、游标打开语句、游标推进语句、游标关闭语句。
SQLDDL语句,只要加上前缀标识"EXEC SQL"和结束标志"END EXEC"就能嵌入在宿主语言程序中使用。而SQL DML语句在嵌入使用时,还要注意是否使用了游标机制。
(1)若是INSERT,DELETE和UPDATE语言,则不必涉及游标,只要加上前缀标识和结束标志就能嵌入在宿主语言程序中使用。
(2)若是已知查询结果肯定是单元组的SLLECT语句,则不必涉及游标,也可加上前缀标识和结束标志后嵌入在宿主语言程序中使用,但此时应该在SELECT语句中增加一个INTO子句,指出找到的值应送到相应的共享变量中去。
(3)若是已知查询结果为多个元组的SELECT语句,则必须涉及到游标,用游标机制把多个元组一次一个地传送给宿主语言程序处理。
游标在推进时只能沿查询结果中元组顺序从头到尾一行行推进,并且不能返回,这给使用带来不便。为此,SQL2提供了卷游标技术来解决这一问题。卷游标在推进时可以进退自如。
编辑推荐:
下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>