第一章关系型数据库—基本概念和操作课后习题:========【注意:每一章后面的课后习题,是作业,也是期末考试主要的题源,期末试卷中约50分的试题就从这些题目中选取】1.各用一句话说明以下概念关系数据库,实例,属性,域,记录(元组),候选键,主键,外键1)一个关系数据库是由若干二维表和表之间的关联组成,这个库也叫一个“实例(instance)”。2)表的第一行是“表头”,它并不是数据,而是说明每一列的数据应该“是什么”,以及取值范围和其它约束条件,“表头”的每个字段叫属性(attribute),属性的取值范围及其他约束条件叫域(field)。属性是描述数据的数据,叫元数据。3)每个表的各个属性不能重名,不同表的属性可以重名。一个表也可以叫一个关系,表中的数据,有的是本表实体的数据,有的是与其它表的联系,比如“表8:选课表”,“课程号”和“学号”列是联系。4)每张表从第二行往后是数据部分、每一行叫一条记录,或一个元组。记录中的每一列可以叫一个字段。6.每张表至少应该有一个,也可以有多个属性,可以唯一的确定一条记录,这种属性叫候选键(candidatekey),比如,表5:“学生表”的“学号”肯定是候选键,而“姓名”如果加上不允许重复的约束条件,也是候选键,否则不是。5)当一个表中有多个候选键,可以从中任选一个作为主键(primekey),当一个表只有一个候选键,它自然就是主键。主键可以是数值,可以是字符串或其它类型,但无论如何主键的值不能为空,不同记录的主键值也不能重复。6)外键(foreignkey):在本表中是主键,而在其它表中可能不是主键,叫外键。比如,“表8:选课表”的“课程号”和“学号”在该表中都不是主键,是可以重复的。而在“表7:课程表”和“表5:学生表”中,却是各自的主键。外键说明了一个表和另一个表的关联,是关系数据库中重要的键。第二章关系型数据库—SQL语言本章习题(1)本章“8小结”表中提到的重点关键词、谓词、句型、概念。(2)本章所有例题(结合上机)阅读理解。实验2:SQL语言(使用MSSQLServer)要求重复本章所有例题,并能加以适当变化,主要是谓词的变化。分类基本句型和关键字其它重要关键字和谓词重要概念数据定义DDLCREATEDADABASE数据库名;CREATETABLE表名(列名类型,…表级约束)NCHAR和CHAR的区别;数据库主文件,次文件,日志文件的概念及其扩展名数据操作DMLINSERTINTO表名(属性列表)VALUES(值列表);UPDATE表名SET列名=表达式,WHERE行选择条件数据查询DQLSELECT*|列名,…FROM表名|视图名,…WHERE行选择条件;例31-33内连接查询句法;LIKE和_,%;SELECT聚集函数名(形参)AS别名FROM表名WHRER行选择条件;列的别名的用途;结果集;脏数据;外键的必要性视图CREATEVIEW视图名ASSELECT语句;视图;视图最重要的作用索引CREATEINDEX索引名ON表名|视图名(列名,…);索引,索引的优点和缺点第二章【附录】关系代数理论本章习题:1用100字左右简述关系数据的三层模型2本章“2.3关系代数的原始运算”“选择”、“投影”、“笛卡尔积”、“并集”、“差集”和“重命名”。请根据课件第二章的例题,猜测一下,这六个原始运算对应SQL语言的那个主句、子句或谓词。3本章“2.4连接和类似连接的运算”给出了几个链接查询结果集的表格样例(比如部门表和雇员表的自然连接),写出相应的SQL语句。1.外模式比如SQL的视图,用户完全可见向上映射概念模式:主要描述数据、类型、关系、约束、用户操作等。比如SQL语句,用户部分可见向上映射内模式:描述数据库的物理存储用户看不到操作系统的文件系统,向上映射有些数据库有独立的文件系统2.“选择”:select“投影”:SELECTtestFROMA“笛卡尔积”:SELECT选课表.*,学生表.*,课程表.*“并集”:WHERE...OR...“差集”:WHERE...AND...“重命名”:EXECsp_rename'表名.原列名','新列名';3.自然连接(⋈)自然连接是写为(R⋈S)的二元运算(相当于C语言的双目运算),这里的R和S是关系。自然连接的结果是在R和S中公共属性名字上相等的所有元组的组合。例如下面是表格“雇员”和“部门”和它们的自然连接:雇员NameEmpIdDeptNameHarry3415财务Sally2241销售George3401财务Harriet2202销售部门DeptNameManager财务George销售Harriet生产Charles雇员⋈部门NameEmpIdDeptNameManagerHarry3415财务GeorgeSally2241销售HarrietGeorge3401财务GeorgeHarrit2202销售HarrietSELECT雇员.*,部门.*from雇员,部门WHERE雇员.DeptName=部门.DeptName;或是SELECT*from雇员NATURALJOIN部门;(SQLSERVER2005不能用)θ-连接(内连接)考虑分别列出车模和船模的价格的表“车”和“船”。假设一个顾客要购买一个车模和一个船模,要求船模比车模便宜。在关系上的θ-连接CarPrice≥BoatPrice生成所有可能选项的一个表,提供给顾客几种购买选择。(请试写出下表的SQL语句)车CarModelCarPriceCarA20'000CarB30'000CarC50'000船BoatModelBoatPriceBoat110'000Boat240'000Boat360'000车船CarModelCarPriceBoatModelBoatPriceCarA20'000Boat110'000CarB30'000Boat110'000CarC50'000Boat110'000CarC50'000Boat240'000SELECT*from车,船车.CarPrice船.BoatPrice除法(÷)除法是写为R÷S的二元关系。其结果是由只在R表的属性列中而不在S表中的属性列的构成,并且S中的元组的所有组合都存在于R中。例如下面的“完成”(R)和“DB项目”(S)和它们的除法:完成StudentTaskFredDatabase1FredDatabase2FredCompiler1EugeneDatabase1EugeneCompiler1SaraDatabase1SaraDatabase2DB项目TaskDatabase1Database2完成÷DB项目StudentFredSaraselect完成.Studentfrom完成,DB项目where完成.Task=DB项目.Task第三章关系型数据库----设计理论及设计方法本章习题1跟文科同学解释什么是关系型数据库,不能用数学术语,也不能举例说明。解释不能超出100字。2跟文科同学,假定他知道什么是关系数据库,知道表、列、行、主键、外键等概念,解释什么是第一范式、第二范式、第三范式,不能用数学术语,也不能举例说明。解释不能超出100字。1.关系数据库的基本内容是若干张二维表格,以及表格之间的关联。表及其关联关系。便构成了一个关系型数据库的模型,将其输入到某种关系数据库系统中,便是个关系型数据库。2.第一范式:表中所有列名(属性)的字段不可以再分。第二范式:第二范式满足第一范式,表的非主键列依赖主键;非主键列之间不能相互依赖;一个表只说明一个事物。第三范式:第三范式满足第二范式且数据库中可变的数据只在一处做修改更新而不波及其它第四章T-SQL程序控制语句本章习题1概念和简答(每个问题的答案不得超出100字,课件全部章节的全部概念和简答题都做如此要求)1)什么是PL\SQL?什么是T-SQL?上网查查它们各自的英文全称。2)对象的完全名字空间有什么用处?3)什么是对象的同义词?4)T-SQL用户自定义类型的特点?5)什么是局部变量?什么是全局变量?6)为什么要分页查询?7)为什么GOTO语句不推荐使用?2本章所有例题(结合上机)阅读理解。1)SQL:StructuredQueryLanguagePL\SQL(ProceduralLanguage/SQL)过程化SQL语言:Oracle数据库对SQL语句的扩展。T-SQL(Transact-SQL)是:SQL在MicrosoftSQLServer上的增强版2)用“..”隔开的对象完全名字空间,可以唯一确定一个对象的名字,不会出现不同的对象重名现象。3)对象的简化引用时的另一个名字4)不仅允许自定义类型,而且允许将其加到数据库内置的完整性约束里。5)局部变量是用户可自定义的变量,其作用范围仅在定义它的程序内有效。局部变量名字前面必需要有@符号,局部变量要先声明后使用,T-SQL的全局变量是系统预定义好的,不允许用户自定义。全局变量名字前面是@@。用户可以在任何时间、用任何程序访问全局变量,直到数据库系统关闭。6)“多批次,小批量”查询,每次只消耗很少的数据库和网络资源,比一次性返回大量结果集优越得多。7)无条件跳转会产生难以阅读和维护的“面条代码”第五章并发和事务本章习题:=========1什么是并发程序?什么是异步并发程序?什么是同步并发程序?2当同步并发程序(1)同时写(2)同时读写(3)同时读共享数据时,那种情况有极小概率发生脏数据(脏读或脏写)?3什么是原子操作?对并发数据为什么要使用原子操作?4什么是事务?5事务的缺点是什么?6GO命令有什么用?7能够读懂本章的例题。本章实验:=========无要求。【本章所有的例题,仅仅为了便于同学们理解相关的概念。期末考试时,不要求写本章例题相关的SQL程序题,只要求读懂例题。】1.在同一个系统下“同时”运行的多个进(线)程,叫并发程序。这些并发程序,有的是相互无关的,这种并发程序叫异步并发程序。但是当并发程序之间有相互关联,比如多个进(线)程有共享数据的时候,这种并发程序叫同步并发程序。2.同步并发程序对共享数据的并发写、并发读写都有可能造成“脏读”或“脏写”。而并发只读不写则不会有脏数据,因为这种情况没有修改共享变量。3.原子操作,是在操作过程中要一气呵成,不允许被打断的操作。因为使用原子操作,可以将并发程序变为串行操作,避免产生脏数据4.事务:一系列是原子操作的操作步骤。当一个进(线)程在开始执行事务后,中途不允许被别进(线)程打断,直到事务结束。5.缺点是把并发操作改串行,一个进程执行事务期间是要锁定相关表不让其它进程访问的,会严重降低效率。6.GO是个“批处理”命令,也就是说一个SQL程序以GO作为批结束的信号,一批一批的发送到系统执行。即用GO来划分语句的批次。第六章游标=========1概念和简答(每题答案不超过100字)1)什么是游标(CURSOR)?游标有什么特点?有什么用途?2)游标的五个操作步骤是什么?3)记住以下游标分类表格:分类分类结果集存储位置编程语言服务器游标T-SQL游标数据库服务器T-SQLAPI游标数据库服务器其它高级语言。比如VC/VC++/C#客户机游标结果集下载到客户机其它高级语言。比如VC/VC++/C#4)要求读懂本章的例题本章实验:无要求【本章所有的例题,仅仅为了便于同学们理解相关的概念,期末考试时,只要求读懂本章例题,不要求编写与例题相关的SQL程序题。】1.1)游标是对查询结果集进行逐行处理的指针。它可以在当前结果集(注意是结果集)中一行一行的移动,对结果集进行以行为单位的细粒度处理(基于游标位置而对表中数据进行删除或更新的能力)。2)声明游标、打开游标、使用游标、关闭游标、删除游标。第七章自定义函数本章习题========1)什么是存储过程?自定义函数?触发器?2)触发器有什么特点?3)读懂本章所有例题本章实验========【本章所有的例题,仅仅为了便于同学们理解相关的概念,期末考试时,只要求读懂本章例题,不要求编写与例题相关的SQL程序题。】