现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSⅠSQL委员会的规定,其正式发音应该是“ess cue ell”。随着SQL语言的颁布,各数据库厂商纷纷在他们的产品中引入并支持SQL语言,但尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间也存在着一定的差异,这些差异不利于初学者的学习。因此,本章主要介绍标准的SQL语言,即基本SQL。尽管如此,SQL-89仍有许多不足或不能满足应用需求的地方。......
2023-11-24
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语句来说明要存取元组的集合,规定元组的选择及顺序,这些元组由命名的游标控制。移动游标,可将元组逐个送给应用程序处理。
有关分布式数据库技术的文章
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSⅠSQL委员会的规定,其正式发音应该是“ess cue ell”。随着SQL语言的颁布,各数据库厂商纷纷在他们的产品中引入并支持SQL语言,但尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间也存在着一定的差异,这些差异不利于初学者的学习。因此,本章主要介绍标准的SQL语言,即基本SQL。尽管如此,SQL-89仍有许多不足或不能满足应用需求的地方。......
2023-11-24
ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。要执行模块中的SQL语句,必须对授权标识授予必要的权限。1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。......
2023-10-28
SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2023-10-28
图18.8传统数据库上的SQL引擎传统数据库上的SQL引擎如图18.8所示。数据修改成为HDFS的固有局限。简单来说,SQL大数据引擎必须应对这些挑战。概括起来,大数据上的SQL引擎主要包含四种不同的方案。这种Hadoop引擎上的SQL优势在于执行特定SQL查询和实施数据调查与发现,可以直接用于数据分析,在BI工具上自动生成SQL代码。图18.9在Hadoop上构建SQL引擎的方法3.减少SQL查询延迟的方法数据规模和I/O开销越大,查询所需要花费的时间越长。......
2023-10-28
在Model模型中,有3种方式可以使用原生的SQL语言,下面分别进行介绍。这里所说的SQL语句是带完整数据表名的查询语言。原生的SQL语句建议只用于一些特殊的操作,因为原生的SQL语句是有一定的局限性的,比如部署多数据库应用时,需要处理各种数据库SQL语言之间的差异。此外,使用原生的SQL查询需要读者手动进行查询缓存。......
2023-11-04
“Semantic Web”这个词出自万维网的发明者Tim Berners-Lee爵士2001年的文章中:The Semantic Web is an extension of the current Web in which information is given well-defined meaning,better enabling computers and people to work in cooperation.W3C的专门小组将标准化语义Web的概念定义为:The Semantic Web provides a common framework that allows data to be shared and reused across application,enterprise,and community boundaries.可以说,语义Web是一组技术和标准,能让机器理解Web上信息的意义(语义)。图5.10语义Web栈在这个栈的底部定义了标识符URI和字符集Unicode。RDF是一种描述Web资源的简单而又强大的数据模型和语言。语义Web的骨干是本体。......
2023-10-28
Hadoop[1]是Lambda架构中聚焦于批处理层的软件系统。Hadoop是一个开源软件框架,使用Java语言开发,针对超大数据集的分布存储和处理,运行在常规硬件构建的计算集群上。Hadoop起源于Apache Nutch,是一个开源的网络搜索引擎,它本身也是Lucene项目的一部分。Hadoop这个名字不是一个缩写,它是一个虚构的名字。Hadoop中的计算节点分为两类:NameNode和DataNode。YARN是yet another resource negotiator的缩写,是Hadoop第二版的主要特征。......
2023-10-28
1988年,该委员会推出2.0版本,到1993年发布的DICOM标准3.0,已发展成为医学影像信息学领域的国际通用标准。DICOM标准3.0包括以下内容。按照标准描述,DICOM数据结构中的基本元素可以简述如下。图22.1DICOM数据集和数据元素结构图22.1中,数据集由多个数据元素构成,传输时是将一个个有序的数据元素字段进行传输。......
2023-10-28
相关推荐