首页 理论教育SQL语言的应用于分布式数据库技术

SQL语言的应用于分布式数据库技术

【摘要】:SQL语言是关系数据库的国际标准语言。1992年通过的SQL标准称为SQL2,于1999年再次更新为SQL99或SQL3标准。将SQL嵌入宿主语言,还需要提供对选出的数据进行面向逐个

SQL语言起源于SEQUEL语言[3],是一种描述性语言,一种非过程性语言,能达到一阶谓词演算的功能。SQL语言是关系数据库的国际标准语言。1992年通过的SQL标准称为SQL2(或SQL92),于1999年再次更新为SQL99或SQL3标准。下面进行较为详细的描述。

1.数据定义

(1)定义表。

定义表的一般格式如下:

CREATE TABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]…][,表级完整性约束条件]);其中:表名为所要定义的表的名字,它可以由一个或多个属性(列)组成。

构建表的同时,通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中。当用户操作表中的数据时,由DBMS自动检查该操作是否违背这些完整性约束条件。

(2)修改表。

SQL语言使用ALTER TABLE语句修改基本表,其一般格式如下:

ALTER TABLE表名[ADD新列名数据类型[完整性约束条件]][DROP完整性约束名][MODIFY列名数据类型];其中:表名用于指定需要修改的表;ADD子句用于增加新列和新的完整性约束条件;DROP子句用于删除指定的完整性约束条件;MODIFY子句用于修改原有列的数据类型。

(3)删除表。

当某个基本表不再被需要时,可以使用SQL语句DROP TABLE进行删除。其一般格式如下:

DROP TABLE表名;

一旦删除基本表定义,表中的数据和在此表上建立的索引都将被自动删除,而建立在此表上的视图虽仍然保留,但已无法引用。因此,执行删除表操作一定要格外小心。

(4)建立索引。

在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式如下:

CREATE UNIQUE CLUSTER INDEX索引名ON表名(列名[次序][,列名[次序]]…);其中:表名用于指定要建立索引的表的名字。索引可以构建在该表的一列或多列上,各列名之间要用逗号分隔。每个列名后面还可以使用次序指定索引值的排列次序,包括ASC(升序)和DESC(降序)两种,默认为ASC。UNIQUE表示此索引的每一个索引值对应唯一的数据记录。

2.数据查询

SQL语言使用SELECT语句对数据库进行查询,该语句具有灵活的使用方式和丰富的功能。其一般格式如下:

SELECT[ALL|DISTINCT]目标列表达式[,目标列表达式]…

FROM表名或视图名[,表名或视图名]…

[WHERE条件表达式][GROUP BY列名1][HAVING条件表达式][ORDER BY列名2[ASC|DESC]]

整条SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的表或视图中找出满足条件的元组,再按SELECT子句的目标列表达式选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按列名1的值进行分组,该属性列值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中作用聚集函数。

如果GROUP子句带HAVING短语,则只有满足指定条件的组才给予输出。如果有ORDER子句,则结果表还要按列名2的值的升序(ASC)或降序(DESC)进行排序。

SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。

3.数据更新

SQL中的数据更新包括插入数据、修改数据和删除数据。

1)插入数据

(1)插入单个元组,其格式如下:

INSERET INTO表名[(列名1[,列名2]…)]

VALUES(常量1[,常量2]…);

其功能是将新元组插入指定表中。其中新元组属性列1的值为常量1,属性列2的值为常量2……如果某些属性列在INTO子句中没有出现,则新元组在这些列上将取空值。如果INTO子句中没有指明任何列名,则新插入的记录必须在每个属性列上均有值。

(2)插入查询结果,其格式如下:

INSERET INTO表名[(列名1[,列名2]…)](www.chuimin.cn)

查询子句;

其功能是以批量插入的方式一次将查询子句的查询结果全部插入指定表中。

2)修改数据

修改数据的格式如下:

UPDATE表名

SET列名=表达式[,列名=表达式]…

[WHERE条件];

其功能是修改指定表中满足WHERE条件的元组。其中,SET子句用于指定修改值,即用表达式的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。

3)删除数据

删除数据的格式如下:

DELETE

FROM表名

[WHERE条件];

其功能是从指定表中删除满足WHERE条件的所有元组。如果省略WHERE子句,则表示删除表中的全部元组。

4.数据控制

SQL语言的数据控制功能是指控制用户对数据的存取权利,包括授权和权限收回。

1)授权

SQL语言使用GRANT语句向用户授予操作权限,GRANT语句的一般格式如下:

GRANT权限[,权限]…

[ON对象类型对象名]

TO用户[,用户]…

[WITH GRANT OPTION];

其语义为将指定操作对象的指定操作权限授予指定的用户。不同类型的操作对象有不同的操作权限,我们将在后面章节深入讨论。

接受权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户。

如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予别的用户;否则,获得某种权限的用户只能使用该权限,但不能传播该权限。

2)权限收回

授予的权限可以使用REVOKE语句收回,REVOKE语句的一般格式如下:

REVOKE权限[,权限]…

[ON对象类型对象名]

FROM用户[,用户]…;

通用的数据库语言一方面可作为一种独立语言为终端交互式用户使用,另一方面也可作为PL/I、COBOL、PASCAL、C、C++等语言的扩充而将数据库语句插入应用程序。非独立的数据库语言常被称为数据库子语言,PL/I、COBOL、PASCAL、C、C++等语言则被称为宿主语言(host languages),宿主语言扩展了数据库语言的使用范围。

面向集合的询问功能偏重于交互用户,而过程型程序设计语言只适宜以记录为单位的处理。将SQL嵌入宿主语言,还需要提供对选出的数据进行面向逐个记录处理的语言成分。也就是说,我们既要保持描述型语言的特点,又不排除现有存取路径与记录式导航的切换,这个问题通过游标(cursor)方法可以解决。用户可以使用适当的SELECT语句来说明要存取元组的集合,规定元组的选择及顺序,这些元组由命名的游标控制。移动游标,可将元组逐个送给应用程序处理。