《数据库原理及应用》之FAQ 3

第三章

101. 什么是DDL?
DDL是Data definition Language 的缩写,意为数据定义语言,是SQL语言的四大功能之一。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束。

《数据库原理及应用》之FAQ1

《数据库原理及应用》之FAQ2

《数据库原理及应用》之FAQ3

《数据库原理及应用》之FAQ4

《数据库原理及应用》之FAQ5

《数据库原理及应用》之FAQ6

《数据库原理及应用》之FAQ7

《数据库原理及应用》之faq-8-9-10

102. 什么是DML?
DML:DML是Data Manipulation Language的缩写,意为数据操纵语言,是SQL语言的四大功能之一。由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。 DML分成交互型DML和嵌入型DML两类。依据语言的级别,DML又可分成过程性DML和非过程性DML两种。

103. 什么是DCL?
DCL:DCL是Data Control Language的缩写,意为数据控制语言,是SQL语言的四大功能之一。

104. SQL的组成分成几部分:
SQL主要分成四部分:
(1)数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
(2)数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。
(3)数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
(4)嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。

105. 说明SQL语言支持的关系数据库三级逻辑结构。
(1) SQL语言支持的关系数据库三级逻辑结构由外层、概念层和内存构成。
(2) 在概念层,对应于概念模式的概念记录型的是基本表。基本表是这样的一种表,它本身实际存在。一个基本表就是一个关系,它不是由其他表导出的表。基本表是使用CREATE TABLE语句建立的。
(3) 在外层,用户所看到的可以是基本表,也可以是视图,也可以是基本表+视图。视图是一个虚拟表,它是由一个或几个基本表导出的表,它不直接存在于物理存储器上的表。视图是使用CREATE SQL VIEW语句建立的。
(4) 在内层,每个基本表用一个存储文件来表示,即用一组类型相同的存储记录值来表示。DBA可以对物理存储文件进行操作。

106. 简述SQL语言的主要特点。
(1)SQL语言类似于英语的自然语言,语言简洁,易学易用,初学者经过短期培训就可以使用SQL存取数据。
(2)SQL语言是一种非过程语言,只要用户提出“干什么”,至于“怎么干”则由RDBMS来解决,向用户隐蔽数据的存取路径。
(3)SQL语言是一种面向集合的语言,操作的对象和结果都是关系。
(4)SQL语言既可独立使用,又可嵌入到宿主语言中使用,具有自含型和宿主型两种特点。
(5)SQL语言具有查询、操作、定义和控制四种语言一体化的特点

107. SQL数据库的体系结构要点是什么:
(1) 一个SQL数据库是表(table)的汇集,它用一个或多个SQL模式定义。一个SQL模式是表和授权的表态定义。
(2) 一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。
(3) 一个表或者是一个基本表,或者是一个视图。(视图只保存定义,不保存数据)
(4) 一个基本表可跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储器上一个物理文件对应。
(5) 用户可用SQL语句对视图和基本表进行查询等操作。
(6) SQL用户可以是应用程序,也可以是终端用户。

108. 什么是SQL模式?
SQL模式:SQL模式是表和授权的静态定义。一个SQL模式定义为基本表的集合。 一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。

109. 什么是SQL数据库?
SQL数据库:SQL(Structured Query Language),即‘结构式查询语言’,采用英语单词表示和结构式的语法规则。 一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。

110. SQL数据库的体系结构及术语:
SQL数据库的体系结构也是三级,但术语与传统的关系模型不同。
关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。

111. 什么是查询?
查询:查询是一种数据操作,它不改变数据本身,仅仅是检索数据,是对已经存在的基本表及视图进行数据检索。

112. 什么是相关子查询?
相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值,所以子查询的处理不只一次,要反复求值,以供外层查询使用。

113. 什么是联接查询?
联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接、选择、投影等操作。 联接查询的效率比嵌套查询低。

114. 试阐述普通子查询和相关子查询的概念和区别。
(1) SQL查询语句的WHERE子句中包含的另一个查询块,称为子查询。子查询可分为普通子查询和相关子查询。
(2) 如果子查询的检索条件引用了外部查询的列,并把外部查询的列值作为检索条件的条件值,这种子查询称为相关子查询。
(3) 如果子查询的检索条件不引用了外部查询的列,不把外部查询的列值作为检索条件的条件值,这种子查询称为普通子查询。
(4) 普通子查询的执行顺序是首先执行子查询,然后把子查询的结果集合作为外部查询的检索条件的条件值。
(5) 相关子查询的执行过程是内部的子查询都要根据外部查询的每个候选行中相关列的值来查询结果数据。

115. 比较基本表和视图的定义?
基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table)。 基本表是实际存储在数据库中的表,对应一个关系。
视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表。

116. 比较实表和虚表?
实表:基本表被称为“实表”,它是实际存放在数据库中的表。
虚表:视图被称为“虚表”,创建一个视图时,只把视图的定义存储在数据词典中,而不存储视图所对应的数据。

117. 什么是索引?
给一个基本表根据某个和某些字段建立顺序的方法称为索引。

118. 建立索引的目的是什么?
建立索引的两个主要目的是加快查询速度和保证行的唯一性。

119. 视图与表的区别是什么?
在SQL中,外模式一级数据结构的基本单位是视图,视图是从若干基本表和(或)其他视图构造出来的表。我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,因此,视图被称为“虚表”,这是它与表的主要区别。

120. 对于视图元组的更新操作(INSERT、DELETE、UPDATE)有哪三条规则:
(1) 如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。
(2) 如果在导出视图的过程中,使用了分组和聚合操作,也不允许对这个视图执行更新操作。
(3) 如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键或某个候选键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。
SQL2中,允许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。

121. 为什么要使用视图?(或简述视图的优点或用途)
(1) 能够将对数据库的访问限制在一定的范围内,有利于数据的保密。
(2) 通过为复杂的查询构造视图,能够隐藏数据的复杂性,从而有效地简化查询操作。
(3) 通过构造视图,能够在用户和应用程序与实际的基本表之间提供更好的数据独立性。
122. 为什么要使用索引?
(1) 举例索引是提高数据库系统性能的重要手段之一。
(2) 对于一个基本表,DBA或应用开发人员可根据应用环境的需要建立若干个索引,以提供多个存取路径和提高存取速度,特别是在检索某列中具有某一指定值得行的查询中。当表很大时,索引查询可大大提高查询速度。
(3) 此外,数据库中行的唯一性也是通过建立唯一索引用来维护的。
(4) 因此,加快查询速度和保证行的唯一性是建立索引得两个主要目的。

123. 在SQL数据控制中,权限是什么?
权限是数据库用户操作数据库系统和数据库对象的能力,给用户指定权限,可将用户的操作限定在指定的范围内,以保证数据的安全。

124. 什么是系统权限?
系统权限指的是数据库用户操作数据库系统的权力,由具有DBA特权的用户授予其他用户。

125. 什么是对象权限?
对象权限指的是数据库用户操作数据库对象(基本表、视图)的权力,由DBA或对象所有者授予。

126. 什么是角色?
角色是多种权限的集合,可授予用户或其他角色,用来简化权限的管理。

127. 简述数据库权限的作用。
(1) 权限是数据库用户操作数据库系统和数据库对象的能力。
(2) 权限的作用在于将用户能够进行的数据库操作及其所操作的数据限定在指定的范围内,禁止用户超越权限对数据库进行非法的操作,从而保证数据库中数据的安全性。
(3) 因此,当数据库管理员建立了一个新用户后,还必须授予他一定的权限,否则他仍然无法使用数据库。

128. 试说明角色的概念及其作用。
(1) 角色是多种权限的集合,可授予用户或其他角色,用来简化权限的管理。
(2) 当把某个角色授予用户(和角色)或从用户(或角色)处收回时,就同时授予或收回了该角色代表的全部权限。这样就避免了为每个用户重复授予每一项权限的繁琐工作,可以大大简化管理数据库用户权限的工作。

129. 说明授予和收回系统特权和角色的SQL语法格式,并举例说明。
(1) 授予系统特权和角色的SQL语法格式为:GRANT <系统权限>|<角色>[{,<系统权限>|<角色>}] TO <用户名>|<角色>|PUBLIC [{,<用户名>|<角色>}] [WITH ADMIN OPTION]
(2) 例如,授予CONNECT角色所代表的权限:GRANT CONNECT TO Zhangsan
(3) 收回系统特权和角色的SQL语法格式为:REVOKE <系统权限>|<角色>[{,<系统权限>|<角色>}] FROM <用户名>|<角色>|PUBLIC[{,<用户名>|<角色>}]
(4) 例如,收回Lin用户的CREATE TABLE权限:REVOKE CREATE TABLE FROM Lin

130. 说明授予和收回对象特权和角色的SQL语法格式,并举例说明。
(1) 授予对象权限与角色的SQL语法格式为:GRANT ALL|<对象权限>[(列名[{,列名}])][,<对象权限>[(列名[{,列名}])> ON <数据库对象名> TO <用户名>|<角色>|PUBLIC [{,<用户名>|<角色>}] [WITH GRANT OPTION]
(2) 例如,把查询Student表的权限授予用户U1:GRANT SELECT ON TABLE Student TO U1
(3) 收回对象权限与角色的SQL语法格式为:REVOKE ALL|<对象权限>[{,<对象权限>}] ON <数据库对象名> FROM <用户名>|<角色>|PUBLIC [{,<用户名>|<角色>}]
(4) 例如,收回用户Zhang对表Student的修改权限:REVOKE UPDATE ON TABLE Student FROM Zhang

131. 简述数据定义的语法格式。
(1) 表结构定义:CREATE TABLE student(sno C(8),sname C(10),birthday D,age I,merried L)
(2) 表结构修改:增加字段:ALTER TABLE student ADD COLUMN telphone C(20)
(3) 修改字段类型:ALTER TABLE student ALTER COLUMN name c(20)
(4) 创建视图:CREATE VIEW s_view AS SELECT student.sno,sname,cname,grade FROM student,sc,course WHERE student.sno=sc.sno AND sc.cno=course.cno

132. 简述数据定义的语法格式。
(1) 数据插入:INSERT INTO student(sno,sname,sex,age) VALUES(‘S01’,’张三’,’男’,20)
(2) 数据删除:DELETE FROM student WHERE sex=’男’
(3) 数据修改:UPDATE student SET age=21 WHERE sno=’S01’

133. SQL语言有哪两种使用方式:
一种是在终端交互方式下使用,称为交互式SQL;
另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、PASCAL、COBOL等,称为宿主语言。

134. 嵌入式SQL的实现有哪两种处理方式:
一种是扩充宿主语言的编译程序,使之能处理SQL语句;
另一种是采用预处理方式。目前多数系统采用后一种。

135. 在宿主语言的程序中使用SQL语句有哪些规定:
(1)在程序中要区分SQL语言与宿主语句。所有SQL语句前必须加上前缀标识“EXEC SQL”,并以“END_EXEC”作为语句的结束标志。(结束标志在不同的宿主语言中不同)
(2)允许嵌入的SQL语句引用宿主语言的程序变量(共享变量),但有两条规定:
(3)引用时,这些变量前必须加冒号“:”作为前缀,以示与数据库中变量有区别。
(4)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。

136. SQL提供的基本数据类型有哪些?每种举两个例子:
(1) 数值型:INTEGER长整数、SMALLINT短整数
(2) 字符串型:CHAR(N)长度为N的定长字符串、VARCHAR(N)具有最大长度为N的变长字符串。
(3) 位串型:BIT(N)长度为N的二进制位串、BIT VARYING(N)最大长度为N的变长二进制位串
(4) 时间型:DATE日期、TIME时间
(5) SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。

137. 预处理方式对于嵌入式SQL的实现有什么重要意义?
预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成宿主语言的函数调用形式; 然后再用宿主语言的编译程序把源程序编译成目标程序。这样,不用扩充宿主语言的编译程序, 就能处理SQL语句。

138. 在宿主语言的程序中使用SQL语句有哪些规定?
在宿主语言的程序中使用SLQ语句有以下规定:
(1) 在程序中要区分SQL语句与宿主语言语句
(2) 允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:
1)引用时,这些变量前必须加“:”作为前缀标识,以示与数据库中变量有区别。
2)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。
(3) SQL的集合处理方式与宿主语言单记录处理方式之间要协调。 需要采用游标机制,把集合操作转换成单记录处理方式。

139. 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关
系代数表达式:
(1)πA(R)  (2)σB=’17′(R)   (3)R×S  (4))πA,F(σC=D(R×S))
(1)SELECT A FROM R
(2)SELECT * FROM R WHERE B=’17′
(3)SELECT A,B,C,D,E,F FROM R,S
(4)SELECT A,F FROM R,S WHERE R.C=S.D

140. 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关
系代数表达式:
(1)R∪S  (2)R∩S  (3)R-S  (4)πA,B(R)πB,C(S)
(1)SELECT A,B,C
FROM R
UNION
SELECT A,B,C
FROM S

(2)SELECT A,B,C
FROM R
INTERSECT
SELECT A,B,C
FROM S
(3)SELECT A,B,C
FROM R
WHERE NOT EXISTS
(SELECT A,B,C
FROM S
WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)
(4)SELECT R.A,R.B,S.C
FROM R,S
WHERE R.B=S.B

141. 对于教学数据库的三个基本表
学生 S(S#,SNAME,AGE,SEX)
学习 SC(S#,C#,GRADE)
课程 C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
(1)检索LIU老师所授课程的课程号和课程名。
SELECT C#,CNAME
FROM C
WHERE TEACHER=‘LIU’
(2)检索年龄大于23岁的男学生的学号和姓名。
SELECT S#,SNAME
FROM S
WHERE (AGE>23) AND (SEX=‘M’)
(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。
SELECT SNAME
FROM S
WHERE SEX=‘F’ AND S# IN
(SELECT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE TEACHER=‘LIU’)

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>