第三章 关系数据库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语句,则必须涉及到游标,用游标机制把多个元组一次一个地传送给宿主程序处理。
义:
你所写的是C语言在早期利用高级API,在C语言的源代码中用EXEC SQL include 这样的方式嵌入进SQL语句,让SQL语句能在C中被执行与认识,这样能让C来控制逻辑流程地执行SQL语句。而在现在,不推荐这种嵌入式SQL了,虽然在 Microsoft SQL Server 2000 中仍然支持用于 C 语言的嵌入式 SQL API,但在 SQL Server 以后的版本中,不再包含在使用此 API 的应用程序上进行编程工作所需要的文件。在 SQL Server 的下一版本中,仍然支持使用用于 C 语言的嵌入式 SQL 编写的现有应用程序的连接,但在以后的版本中也将不再提供这种支持。编写新的应用程序时,请不要使用用于 C 语言的嵌入式 SQL。修改现有应用程序时,强烈建议删除依赖用于 C 语言的嵌入式 SQL 的内容。可以使用 Microsoft ActiveX Data Objects (ADO)、OLE DB 或 ODBC 来代替用于 C 语言的嵌入式 SQL,对 SQL Server 中的数据进行访问。与 OLE DB 这类 COM API 或 ODBC 这类调用级接口相比,嵌入式 SQL 的语法更简单,因此更易于学习和编程。但嵌入式 SQL 不如 OLE DB 或 ODBC 灵活,在用 OLE DB 或 ODBC 精心编写的应用程序中,只需切换驱动程序或提供程序,即可从一个 DBMS 切换到另一个。在编译应用程序(例如开发按需查询工具时)时不识别SQL 语句的环境中,更适合使用 OLE DB 和 ODBC,而实际上,ODBC都很老了。
所以现在都是用的JDBC,ADO去连接数据库,你看的那些实在是太老掉牙了,不要纠结。不过想了解一下,请参考:
嵌入式SQL语句(C语言版):
其实上面这些都是大学里的教程,很古老的,杯具。看下这个回答:挺好!
2按另一种流传的口头说法:
嵌入式SQL语言 在源代码中用特殊标记 标记SQL代码段,如你说的在方法中string="select from table"这种放在C#代码中的用引号括起来的句子,也有人称之为嵌入式SQL;
非嵌入式SQL是指调用函数库来完成相应的功能;
另外,提下你的提问很有问题,百度上很多问题本来很简单,但是描述不清,无人回答,建议你看下《提问的艺术》
以上就是关于数据库原理第三章关系数据库SQL语言全部的内容,包括:数据库原理第三章关系数据库SQL语言、SQL是嵌入式语言吗、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)