数据库原理第三章关系数据库SQL语言

如题所述

第1个回答  2023-02-17
第三章 关系数据库SQL语言
32. SQL数据库的体系结构及术语:
SQL数据库的体系结构也是三级,但术语与传统的关系模型不同。
关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。
33. SQL数据库的体系结构要点是什么:
(1) 一个SQL数据库是表(table)的汇集,它用一个或多个SQL模式定义。一个SQL模式是表和授权的表态定义。
(2) 一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。
(3) 一个表或者是一个基本表,或者是一个视图。(视图只保存定义,不保存数据)
(4) 一个基本表可跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储器上一个物理文件对应。
(5) 用户可用SQL语句对视图和基本表进行查询等操作。
(6) SQL用户可以是应用程序,也可以是终端用户。
34. SQL的组成分成几部分:
SQL主要分成四部分:
(1) 数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
(2) 数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。
(3) 数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
(4) 嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。
35. SQL模式的撤消有哪两种方式:
CASCADE(连锁式)方式:执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消。
RESTRICT(约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤消SQL模式,否则拒绝执行DROP语句。
36. SQL提供的基本数据类型有哪些?每种举两个例子:
(1) 数值型:INTEGER长整数、SMALLINT短整数
(2) 字符串型:CHAR(N)长度为N的定长字符串、VARCHAR(N)具有长度为N的变长字符串。
(3) 位串型:BIT(N)长度为N的二进制位串、BIT VARYING(N)长度为N的变长二进制位串
(4) 时间型:DATE日期、TIME时间
SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。
37. 完整性约束主要有哪三种子句:
完整性约束主要有三种子句:主键子句(PRIMARY KEY),检查子句(CHECK)和外键子句(FOREIGN KEY)
38. 什么是视图,它与表的区别是什么:
在SQL中,外模式一级数据结构的基本单位是视图,视图是从若干基本表和(或)其他视图构造出来的表。我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,因此,视图被称为“虚表”,这是它与表的主要区别。
39. 对于视图元组的更新操作(INSERT、DELETE、UPDATE)有哪三条规则:
(1) 如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。
(2) 如果在导出视图的过程中,使用了分组和聚合操作,也不允许对这个视图执行更新操作。
(3) 如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键或某个候选键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。
SQL2中,允许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。
40. SQL语言有哪两种使用方式:
一种是在终端交互方式下使用,称为交互式SQL;
另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、PASCAL、COBOL等,称为宿主语言。

41. 嵌入式SQL的实现有哪两种处理方式:
一种是扩充宿主语言的编译程序,使之能处理SQL语句;
另一种是采用预处理方式。目前多数系统采用后一种。
42. 在宿主语言的程序中使用SQL语句有哪些规定:
(1) 在程序中要区分SQL语言与宿主语句。所有SQL语句前必须加上前缀标识“EXEC SQL”,并以“END_EXEC”作为语句的结束标志。(结束标志在不同的宿主语言中不同)
(2) 允许嵌入的SQL语句引用宿主语言的程序变量(共享变量),但有两条规定:
1) 引用时,这些变量前必须加冒号“:”作为前缀,以示与数据库中变量有区别。
2) 这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。
43. 用游标机制协调SQL的集合处理方式所用的SQL语句有哪些:
与游标有关的SQL语句有下列四个:
(1) 游标定义语句(DECLARE)
(2) 游标打开语句(OPEN)
(3) 游标推进语句(FETCH)
(4) 游标关闭语句(CLOSE)
44. SQL DML的嵌入使用技术:
(1) 若是INSERT、DELETE、UPDATE语句,则不必涉及游标,只要加上前缀标识和结束标志就能嵌入宿主语言程序中使用。
(2) 若是已知查询结果肯定是单元组的SELECT语句,则不必涉及游标,也可加上前缀标识和结束标志后嵌入宿主语言程序中使用,但此时应该在SELECT语句中增加一个INTO子句,指出找到的值应送到相应的共享变量中去。
(3) 若是已知查询结果为多个元组的SELECT语句,则必须涉及到游标,用游标机制把多个元组一次一个地传送给宿主程序处理。