机器智能聊天模拟系统的研发外文翻译资料

 2022-09-15 15:11:18

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


SQL的介绍

有一些数据库查询语言在商业或实验中使用。我们研究最多广泛使用的查询语言SQL。虽然我们参考SQL语言为“查询语言”,它能做多少不仅仅是查询数据库。它可以定义的结构数据,修改数据库中的数据,指定安全约束。这不是我们的意图提供一个完整的SQL用户指南。相反,我们SQL的基本结构和概念。个人实现SQL可能不同的细节,也可能只支持完整的语言的一个子集。

3.1 SQL查询语言的概述

IBM开发了原始版本的SQL,最初叫续集,在1970年代早期系统R项目的一部分。续集语言自那时演变以来,它的名字已经改变成了SQL(结构化查询语言)。现在许多产品支持SQL语言。SQL显然已经成为标准关系数据库语言。

1986年,美国国家标准协会(ANSI)和国际标准化组织(ISO)发表一个SQL标准,sql - 86。ANSI发表一个扩展标准SQL、SQL - 89,在1989年。下一个版本的标准SQL - 92标准,其次是SQL:1999年,SQL:2003年,SQL:2006年,和最近SQL:2008。文献指出提供参考标准。

SQL语言有几个部分:

bull; 数据定义语言(DDL)。提供的SQL DDL命令定义关系模式,删除关系,修改关系模式。

bull; 数据处理语言(DML)。SQL DML提供的能力从数据库中查询信息和元组插入,删除元组和修改数据库中的元组。

bull; 完整。存储在数据库中的数据必须满足,包括SQL DDL命令指定的完整性约束。更新违反完整性约束是不允许的。

bull; 视图定义。包括SQL DDL命令定义视图。

bull; 事务控制。SQL包括指定的命令开始和结束事务。

bull; 嵌入式SQL和动态SQL。嵌入式和动态SQL定义,SQL语句可以嵌入到通用的编程语言,如C、c 和Java。

bull;授权。包括SQL DDL命令指定访问权限关系和视图。

在这一章,我们目前是基本DML ,SQL DDL特性的调查。这里描述特性一直以来SQL标准SQL - 92的一部分。

在第四章中,我们提供一个更详细的SQL查询语言的报道,包括(a)各种连接表达式;(b)视图;(c)交易;(d)的完整性约束;(e)类型系统;(f)授权。

在第五章中,我们将介绍更多的SQL语言的高级功能,包括:(一)机制来允许访问SQL从编程语言;(b)的SQL函数和过程;(c)触发(d)递归查询;(e)先进的聚合功能;和(f)几个功能为数据分析,设计的介绍了SQL:1999,后续版本的SQL。之后,在22章,我们在SQL:1999介绍了SQL大纲面向对象扩展。

尽管大多数SQL实现都支持我们在这里描述的标准特性,您应该意识到实现之间存在差异。大多数实现都支持一些非标准的特性,而省略支持一些更高级的功能。如果你发现这里描述的一些语言特性在你使用的数据库系统不起作用,查询您的数据库系统的用户手册找到它支持什么功能。

3.2 SQL数据定义

数据库系统中必须指定的集合关系的数据定义语言(DDL)。SQL DDL不仅允许规范的关系,而且也有每个关系的信息,包括:

bull; 每个关系模式。

bull; 每个属性相关值的类型

bull; 完整性约束。

bull; 设置指标关系的维护

bull; 关系的安全和授权信息

bull; 每个关系在磁盘上的物理存储结构

我们在这里讨论基本模式的定义和基本类型;我们推迟的讨论其他章节4和5 SQL DDL特性。

3.2.1 基本类型

SQL标准支持各种内置类型,包括:

bull; char(n):一个指定长度n的固定长度的字符串。可以使用的完整的形式,字符

bull; varchar(n):指定的最大长度n的变长字符串,完整的形式,字符不同,是等价的

bull; int:一个整数(有限的子集是依赖于机器的整数)。整数,完整的形式是等价的

bull; smallint:小整数(计算机有关整数类型的子集)。

bull; 数字(p、d):定点数与指定的精度。p位数(加上一个标识),和p数字的右边的d小数点。因此,数字44.5(3,1)允许存储,但是444.5或0.32完全可以存储在一个这种类型的字段

bull; 真正的、双精度浮点数和双精度浮点数字与计算机有关的精度。

bull; 浮动(n):一个至少n位精度的浮点数

包含在4.5节的其他类型。

每种类型可能包括一个特殊的值称为“空值”。空值表明一个可能存在但未知的或可能根本不存在的缺省值。在某些情况下, 很快将看到,我们希望的禁止null值输入。

char数据类型存储固定长度字符串。考虑,例如,一个字符类型长度为10的属性。如果我们存储字符串“Avi”这个属性,7个长度是附加到字符串10个字符长。相比之下,如果属性B的类型为varchar(10),我们存储“Avi”属性,没有容量能被添加进去。当比较两个值类型的字符的时候,如果他们是不同长度的,比较之前,剩余空间更小的自动添加让他们大小相同。

比较一个char类型和varchar类型时,比较之前,你可能期望其他的空间被添加和varchar类型长度相等;然而,这可能是也可能不是,这取决于数据库系统。作为一个结果,即使相同的值“Avi”存储在属性A和B中,比较A = B可能会返回false。我们建议你总是使用varchar类型而不是char的类型来避免这些问题。

SQL还提供了使用Unicode表示的nvarchar类型存储多语言数据。然而, 许多数据库甚至在varchar类型允许双字节字符存储(以 utf – 8为代表)。

3.2.2基本模式定义

我们通过使用create table命令定义一个SQL关系。以下命令创建一个数据库中的关系部门。

create table department

(dept name varchar (20),

building varchar (15),

budget numeric (12,2),

primary key (dept name));

上面创建的关系有三个属性,部门名称,这是最大长度为20的字符串,建筑,它是一个最大长度为15的字符串,预算,这是一个小数点后有两位总共有12位数的数字。create table命令还指定部门名称属性是主键的关系

create table命令的一般形式是:

create table r

(A1 D1,

A2 D2,

. . . ,

An

Dn

,

integrity-constraint1,

. . . ,

integrity-constraintk);

r是关系的名称,每个Ai在关系模式r中是一个属性的名字,Di是属性Ai的域。也就是说,Di指定属性Ai的类型以及可选的约束限制的允许的Ai值。create table语句末尾的分号,以及在本章后面的其他SQL语句,许多SQL实现是可选的。

SQL支持许多不同的完整性约束。在本节中,我们只讨论其中的几个:

bull; 主键(Aj1, Aj2, . . . , Ajm): 主键的规范就是Aj1, Aj2, . . . , Ajm形成关系中的主键。主见的属性是非空的,独一无二的。也就是说,没有元组主键的属性是空值,在关系中没有两个元组,所有的主键属性相等。尽管主键规范是可选的,对于每个关系,指定一个主键是一个很好的想法。

bull; 外键(Ak1, Ak2, . . . , Akn)引用s:外键规范就是,关系中任何元组的属性值(Ak1, Ak2, . . . , Akn)必须对应关系s中元组的主键属性。

图3.1给出了我们用在文本中部分大学数据库的SQL DDL定义。课程表有一个 “外键(dept name)引用department”的描述。这个外键声明指定,对于每一个元组,在主键属性(部门名称)的关系中指定的元组必须存在。没有这个约束,它可能指定一个不存在的部门的名字。图3.1还显示了表中外键约束部分,讲师和教导。

bull; 非空:非空约束的属性指定为该属性不允许空值;换句话说, 域的约束不包括空值的属性。例如,在图3.1中,非空约束名称属性的教练关系确保教练的名称不能为空。

更多细节上的外键约束,以及其他完整性约束,创建表命令在4.4后面的章节可能包括。

SQL可以防止任何违反完整性约束更新到数据库, 例如,如果一个新插入或修改元组关系在主键的属性中有空值,或者如果一个元组和另一个元组的主键属性具有相同的值,SQL会标记错误,防止更新。同样,课程元组的一个插入的部门名称值没有出现在部门关系将违反的外键约束,SQL也会阻止这样的插入。

一个新创建的关系最初是空的。我们可以使用insert命令加载数据到关系。例如,如果我们希望插入这一事实:生物系一个名叫史密斯的教练与教练id 10211和66000美元的工资,我们写:

insert into instructor
values (10211, rsquo;Smithrsquo;, rsquo;Biologyrsquo;, 66000);

在关系模式中,根据指定的值的顺序列出了相应的属性。插入命令有许多有用的特性, 在后面3.9.2会有详细介绍。

我们可以使用“删除”命令来删除关系中的元组,命令delete from student将删除学生关系的所有元组。其他形式的“删除”命令允许特定的元组被删除;“删除”命令在更多细节在后面3.9.1部分介绍。

从一个SQL数据库删除一个关系,我们使用drop table命令。下表的命令删除数据库中所有关系和数据

命令drop table r;比delete from r;是更彻底的方式。后者保留关系r,但删除r中的所有元组,而前者不仅删除关系r,也删除了r的模式。r被删除后,没有元组能插入r中,除非它是使用create table命令重新创建。

我们使用alter table命令在现有的关系中添加属性,关系中的所有元组被分配空值作为新属性的值。表单alter table命令alter table r add A D;r是现有关系的名称,A是被添加的属性的名称,D是添加的属性的类型,我们通过命令alter table r drop A;能够从一个关系中删除属性,r是现有关系的名字,A是关系中属性的名字。许多数据库系统虽然会让整个表被删除,但不支持删除属性。

3.3 SQL查询的基本结构

一个SQL查询的基本结构包括三个子句:select、from、where。,查询需要在from子句中的关系列表作为输入,按照where和select子句中指定进行操作,然后产生一个关系作为结果。通过例子介绍了SQL语法,描述SQL查询的总体结构。

3.3.1 单一关系查询

让我们使用大学的例子思考一个简单的查询,“查找所有教练的名字”,教练名字要在instructor关系中查找,因此我们把这个关系放到from子句中,教练的名字会在name属性中出现,因此我们把它放进select子句中

select name
from instructor;

结果是一个含有姓名的单个属性的关系的组成。Instructor关系如图2.1所示,从先前的查询结果的关系如图3.2所示。

现在考虑另一种查询,“找到所有教练的部门名称”,我们可以这样写:

select dept name
from instructor;

因为很多教练属于同一个部门,部门名称可能不止一次出现在instructor关系中,上面的查询的结果是一个包含部门名称的关系,如图3.3所示。

在正式的、关系模型的数学定义中, 关系是一个集。因此,关系中永远不会出现重复元组,在实际操作中,重复的消除是耗时的。因此,SQL允许在关系中以及SQL表达式的结果重复。因此,前面的SQL查询列表在所查询的instructor关系中每一个元组中每个部门查询一次。

在这种情况下,我们想要消除重复的记录,就要在select后插入关键字distinct。我们可以把前边的查询重新写为:

select distinct dept name
from instructor;

图 3.3 “select dept name fr

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[148754],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。