数据库原理与实践教材练习题答案Word文件下载.docx
《数据库原理与实践教材练习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库原理与实践教材练习题答案Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
(4)监控数据库的利用和运行;
(5)数据库的改良和重组。
五、目前最多见的商用DBMS有:
Oracle、DB二、SQLServer、MySQL等。
DBMS一样有六大功能:
(1)数据概念功能;
(2)数据组织、存储和治理;
(3)数据操纵功能;
(4)数据库的运行治理和事务治理;
(5)数据库的成立和保护功能。
六、模式是数据库中全部数据的逻辑结构和特点的描述,是全部用户数据的最小并集。
数据库模式以某一种数据模型为基础,综合考虑了所有效户的需求,并将这些需求有机地结合成一个逻辑整体。
一个数据库只有一个模式。
外模式是用户的数据视图,是用户可看见和利用的局部数据逻辑结构和特点的描述,是与某一具体应用有关的数据的逻辑表示。
显然,外模式是模式的子集,且能够有多个。
内模式是数据库中数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。
内模式负责概念所有数据的物理存储策略和访问操纵方式。
一个数据库只有一个内模式。
7、
数据库系统采纳外模式、模式、内模式三级模式结构,三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS治理,利用户能逻辑地抽象地处置数据,而没必要关切数据在运算机中的具体表示方式和存储方式,没必要考虑存取途径等细节。
DBMS在这三级模式之间提供了两层映像:
外模式/模式映像、模式/内模式映像。
正是这两层映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性。
另外,外模式是数据库平安性的一个有力方法,模式实现了数据的共享,减少了数据的冗余。
八、程序与数据的逻辑独立性是指当模式改变时,可由数据库治理员改变外模式/模式映像,使得每一个外模式维持不变,而应用程序是依照外模式编写的,从而没必要修改应用程序。
程序与数据的物理独立性是指当内模式改变时,可由数据库治理员改变模式/内模式映像,使得模式维持不变(外模式固然也不变),从而没必要修改应用程序。
第二章
BDACABDCBBABDABDBDAD
一、模拟现实世界
二、数据结构
3、逻辑模型
4、实体
五、多对多
六、网状模型,面向对象模型
7、指针
八、关系
九、候选码
10、实体完整性,参照完整性
一、概念模型具有较强的语义表达能力,能够方便、直接地表达应用所涉及到的现实世界中的各类语义知识,另一方面它概念简单、清楚,易于用户明白得,且不依托于具体的运算机系统。
概念模型要紧用于数据库设计,是用户与数据库设计人员之间进行交流的桥梁。
二、表示概念模型最经常使用的方式是用E-R图来表示概念模型,这种概念模型也称E-R模型。
画E-R图的步骤:
(1)确信实体;
(2)确信各实体的属性;
(3)确信实体之间的联系;
(4)确信各联系的属性。
3、非关系模型中实体之间的联系是通过指针来实现的,因此查询效率较高。
缺点是数据结构复杂,不易明白得,编程也复杂。
关系模型的优势是:
①有严格的理论基础,概念单一;
②数据结构简单、清楚、用户易明白得;
③存取途径对用户透明,程序与数据的独立性高,易于应用程序的编写和保护。
缺点主若是查询效率不如非关系模型,DBMS的开发难度高。
4、在关系模型中的概念单一要紧体此刻数据结构单一(即现实世界中实体和实体之间的各类联系都用关系来表示),而数据结构单一又带来操作符的统一。
操作符的统一体此刻不管是插入(或删除修改)一个实体值仍是插入(或删除修改)一个联系值,操作的命令是相同的(不像DBTG顶用STORE插入实体值,用CONNECT插入联系值),这大大方便了用户的利用。
五、所谓存储途径对用户透明确实是指用户不需要明白数据的物理结构和存储方式。
优势:
因为存取途径对用户透明,从而具有更高的数据独立性,更好的平安保密性,简化了程序员的工作。
缺点:
因为存取途径对用户透明,致使查询效率不如非关系系统,增加了开发DBMS的难度。
六、
关系模型中有三类完整性约束,包括实体完整性、参照完整性和用户概念的完整性。
其中实体完整性和参照完整性是关系模型必需知足的完整性约束条件,被称作是关系的两个不变性,应该由关系数据库系统自动支持。
实体完整性规那么:
假设属性A是大体关系R主码中的属性,那么属性A不能取“空值”。
参照完整性规那么:
假设属性(或属性组)F是大体关系R的外码,它与大体关系S的主码Ks相对应(R和S能够是同一个关系),那么关于R中每一个元组在F上的值必需等于S中某个元组的主码值或取空值(F的每一个属性值均为空值)。
用户概念的完整性是针对某一具体的关系数据库的约束条件,它反映了某一具体应用所涉及的数据必需知足的语义要求。
7、外码不是必然能够取空值的。
当外码是本关系主码中的属性时,外码不能取空值,若是取空值将违背实体完整性规那么。
例如,选修关系中的外码“学号”和“课程号”就不能取空值。
因此只有当外码不是本关系主码中的属性时,外码才能够取空值。
八、用户只要告知系统操作的要求,没必要告知系统如何来完成该操作(即用户只要告知系统“做什么”,而没必要告知“怎么做”)的语言确实是非进程化语言。
九、自然连接是一种特殊的等值连接,它与等值连接的区别表此刻:
被连接的两个关系中进行相等比较的分量必需是相同的属性(组),而且要在结果中把重复的属性(组)去掉。
10、例如,若是要实现查询要求“查询所有学生信息并同时查询他的选课信息”,这时就要做学生关系与选修关系的自然连接,若是有学生尚未选修过课程,那么该学生信息将会在结果关系中消失,不符合查询要求,这时就要用到左外连接。
四、关系代数
一、πGnane,Price(σManufac='
海尔'
(Goods))
二、πGnane,Price(σGtype='
电话'
∧Manufac='
华为'
3、πCno(Customers)-πCno(Sells)
4、πCno,Cname,Mphone(Customers)(πCno(Customers)-πCno(σSdate>
='
2021-01-01'
(Sells)))
五、πSno,Gno(Detail)÷
πGno(σGno='
3'
∨Gno='
4'
(Goods))也能够用自连接做
六、πCno,Gno(SellsDetail)÷
πGno(σGtype='
奶粉'
7、gsum(Quantity)as销售总数量(DetailπGno(σGname='
WR700N无线路由器'
TP-LINK'
(Goods)))
八、Gtypegcount(Gno)as品种数,avg(Price)as平均价钱(Goods)
九、πGtype(σ平均价钱>
'
1000'
(Gtypegavg(Price)as平均价钱(Goods)))
10、πCno,Cname,Mphone,Sdate,IsPay(CustomersSells)
第三章
DACDBADADBBCBABDCDAC
一、主数据,日记
二、查询速度,1
3、1,主
4、字符数据,二进制数据
五、系统,系统,数据字典,系统
六、用户,tempdb
7、拒绝
八、删除
一、数据概念语言(DDL)要紧概念数据库的逻辑结构,包括概念大体表、索引和视图三个部份;
数据操纵语言(DML)包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和修改三种操作;
数据操纵语言(DCL)要紧有对大体表和视图的授权,事务操纵语句等。
二、SQL语言的要紧特点包括:
(1)综合统一,即集DDL、DML和DCL功能于一体;
(2)面向集合的操作方式,即操作的对象和操作的结果都是元组的集合;
(3)高度非进程化,即在完成某项查询要求时,用户无需了解存取途径,只要提出“做什么”,没必要指出“怎么做”;
(4)以同一种语法结构提供两种利用方式,即独立地用于联机交互的利用方式和嵌入到高级语言中这两种不同的利用方式下,语法结构是大体上一致的;
(5)支持三级模式结构。
3、RDBMS的完整性操纵机制都应有完整性概念、完整性检查和违约处置这三方面的功能。
4、列级完整性约束条件中涉及的属性只能是本列中的属性,而表级完整性约束条件中涉及的属性能够是本表中所有列中的属性。
五、SQL语言中,在用CREATETABLE语句创建表时,能够用PRIMARYKEY概念主码,概念主码即实现了实体完整性;
也能够用FOREIGNKEYREFERENCES概念外码,概念外码即实现了参照完整性。
六、用户概念的完整性确实是针对某一具体应用的数据必需知足的语义要求。
在SQLServer中能够在列级或表级用NOTNULL(属性取非空值)、UNIQUE(属性取值唯一)和CHECK(检查属性值是不是知足一个逻辑表达式)三种形式实现用户概念的完整性。
另外,T-SQL语言中的DEFAULT(属性取默许值)也能够明白得为列级用户概念的完整性约束。
7、三种处置方式:
(1)拒绝(NOACTION)执行,即不许诺执行该操作,一样为默许违约处置方式。
(2)级连(CASCADE)操作,表示当删除或修改被参照表的一个元组造成了参照表中某些元组的外码违背了参照完整性约束,那么系统会自动删除或修改参照表中所有违背参照完整性约束的元组。
(3)设置为空值(SETNULL),表示当删除或修改被参照表的一个元组造成了参照表中某些元组的外码违背了参照完整性约束,那么系统会自动将参照表中所有违背参照完整性约束的元组的外码设置为空值。
八、只有一种处置方式,拒绝(NOACTION)执行,即不许诺执行该操作。
四、SQL语言
一、CREATETABLECustomers
(Cnochar(8)PRIMARYKEY,
Cnamechar(12)NOTNULL,
Csexchar
(2)NOTNULLCHECK(CsexIN('
男'
'
女'
)),
CagetinyintNOTNULL,
Caddressvarchar(50),
Mphonechar(11)NOTNULL,
Emailvarchar(30)
)
CREATETABLEGoods
(Gnochar(9)PRIMARYKEY,
Gnamechar(20)NOTNULL,
Gtypechar(8)NOTNULL,
Pricedecimal(9,2)NOTNULLCHECK(PriceBETWEEN1AND100000),
Manufacchar(12)NOTNULL
CREATETABLESells
(Snochar(14)PRIMARYKEY,
SdatedatetimeNOTNULL,
Saddressvarchar(50)NOTNULL,
Cnochar(8)NOTNULLFOREIGNKEYREFERENCESCustomers(Cno),
IsPaychar
(1)NOTNULLCHECK(IsPayIN('
N'
Y'
))
CREATETABLEDetail
(Snochar(14)FOREIGNKEYREFERENCESSells(Sno),
Gnochar(9)FOREIGNKEYREFERENCESGoods(Gno),
QuantitysmallintNOTNULL
CONSTRAINTck_DCHECK(QuantityBETWEEN1AND100),
PRIMARYKEY(Sno,Gno)
二、ALTERTABLECustomersADDCONSTRAINTck1_CCHECK(Cage>
=10)
ALTERTABLECustomersADDCONSTRAINTck2_CUNIQUE(Mphone)
3、ALTERTABLEDetail
DROPCONSTRAINTck_D
ALTERTABLEDetail
ADDCONSTRAINTck_DCHECK(QuantityBETWEEN1AND1000)
4、SELECTGname,PriceFROMGoodsWHEREManufac='
ORDERBYPriceDESC
五、SELECTGname,PriceFROMGoodsWHEREManufac='
ANDGnameLIKE'
%电话%'
六、SELECTCOUNT(*)FROMGoods
7、SELECTGtype,COUNT(*),AVG(Price)FROMGoodsGROUPBYGtype
八、SELECTGtypeFROMGoodsGROUPBYGtypeHAVINGAVG(Price)>
1000
九、SELECTSno,,Cname,MphoneFROMSellsSJOINCustomersCON=WHEREIsPay='
ANDSdateBETWEEN'
2021-05-01'
AND'
2021-05-31'
10、SELECT,Cname,Mphone,Sdate,IsPayFROMCustomersCLEFTJOINSellsSON=
1一、SELECT,Sdate,Cname,SUM(Quantity*Price)FROMSellsS,CustomersC,DetailD,GoodsGWHERE=AND=AND=GROUPBY,Sdate,Cname
1二、SELECTSUM(Quantity)FROMDetailDJOINGoodsGON=WHEREManufac='
ANDGname='
另一种做法:
SELECTSUM(Quantity)FROMDetailWHEREGnoIN(SELECTGnoFROMGoodsWHEREManufac='
)
13、SELECTCnoFROMCustomersWHERECnoNOTIN(SELECTCnoFROMSells)
14、SELECTCno,Cname,MphoneFROMCustomersWHERECnoNOTIN(SELECTCnoFROMSellsWHERESdate>
1五、SELECTGno,Gname,ManufacFROMGoodsGWHEREPrice=(SELECTMIN(Price)FROMGoodsWHEREGtype=
1六、SELECTGname,Price,ManufacFROMGoodsWHEREGnoIN(SELECTGnoFROMDetailGROUPBYGnoHAVINGSUM(Quantity)>
=ALL(SELECTSUM(Quantity)FROMDetailGROUPBYGno))
17、SELECTSnoFROMDetailDWHEREGno='
ANDEXISTS(SELECT*FROMDetailWHERESno=ANDGno='
SELECTSnoFROMDetailWHEREGno='
ORGno='
GROUPBYSnoHAVINGCOUNT(*)=2
1八、SELECTCnoFROMCustomersCWHERENOTEXISTS(SELECT*FROMGoodsGWHEREGtype='
ANDNOTEXISTS(SELECT*FROMSellsSJOINDetailDON=WHERE=AND=)
1九、SELECTGno,Gname,ManufacFROMGoodsG,(SELECTGtype,MIN(Price)ASMinPriceFROMGoodsGROUPBYGtype)ASGtypePriceWHERE=ANDPrice=MinPrice
20、UPDATEGoodsSETPrice=*PriceWHEREGtype='
2一、DELETEFROMGoodsWHEREGno='
1'
2二、INSERTINTOGoodsVALUES('
'
P8电话'
2499,'
第四章
ABADCACCDB
一、搜索码,搜索码值
二、有序
3、稀疏,浓密,1,多
4、249,16
五、CLUSTERED
六、PRIMARYKEY,UNIQUE
7、索引视图
一、模式DDL有CREATETABLE语句,子模式DDL有CREATEVIEW语句,内模式DDL有CREATEINDEX语句。
二、表中每一个搜索码值都有一个索引项,这种索引称为浓密索引。
当表依照搜索码值有序存储时,能够只为搜索码的某些值成立索引项,这种索引称为稀疏索引。
浓密索引能够比稀疏索引更快地定位一条记录,但浓密索引所占用的存储空间比稀疏索引大。
3、所谓聚集索引确实是指表中的元组依照索引中搜索码指定的顺序排序,使得具有相同搜索码值的元组在物理上聚集在一路。
显然,一张表最多只能有一个聚集索引。
聚集索引往往是稀疏索引,能够只存储部份搜索码值。
因为表中的元组是按聚集索引而不是辅助索引的搜索码有序寄存的,因此辅助索引必需是浓密索引,对每一个搜索码值都有一个索引项,包括指向表中每一个元组的指针。
显然,一张表能够创建多个辅助索引。
4、若是索引小到能够放在内存中,那么搜索一个索引项的时刻就能够够忽略。
可是,若是索引过大而不能放在内存中,那么当需要时,就必需从磁盘中读取索引块,于是搜索一个索引项可能需要多次读取磁盘块,是一个相当耗时的进程。
因此不管是聚集索引,仍是辅助索引,当索引项很多,索引专门大时,实际利用的往往都是多级索引。
五、见教材4.1.2末节
六、大体表在数据库中既要寄存它的概念,又要寄存它的数据。
而视图
是从一张或几张大体表(或视图)导出的表。
与大体表不同,视图是一张虚表,在数据库中只寄存视图的概念(即SELECT语句),不寄存视图对应的数据(即SELECT语句的查询结果)。
二者的联系是视图的数据在它对应的大体表中,因此大体表中的数据一旦发生转变,从视图中查询出的数据也就随之改变了。
从那个意义上讲,视图就像一个窗口,通过它用户能够看到数据库中自己感爱好的数据及其转变。
7、若是概念视图的子查询对以下条件都能知足,那么该视图是能够更新的:
(1)FROM子句中只有一个数据库关系;
(2)SELECT子句中只包括关系的属性名,不包括任何表达式、聚集函数或DISTINCT短语;
(3)没有出此刻SELECT子句中的属性能够取空值,也不是主码中的属性;
(4)子查询中没有GROUPBY或HAVING子句。
一、CREATEINDEXIndex_Customers_CnameONCustomers(Cname)
二、CREATEINDEXIndex_Goods_GtypePriceONGoods(Gtype,Price)
3、CREATEINDEXIndex_Sells_CnoSdateONSells(Cno,SdateDESC)
4、CREATEVIEWGoodsPhoneAS
SELECT*FROMGoodsWHEREGtype='
五、CREATEVIEWGoodsPhoneHuaWeiAS
SELECT*FROMGoodsPhoneWHEREManufac='
六、CREATEVIEWSellsQuantity(Gname,Price,Manufac,Squantity)AS
SELECTGname,Price,Manufac,SUM(Quantity)FROMGoodsGJOINDetailDON=GROUPBY,Gname,Price,Manufac
7、SELECTGname,Price,ManufacFROMSellsQuantityWHERESquantity=(SELECTMAX(Squantity)FROMSellsQuantity)
八、CREATEVIEWSellsMoney(Sno,Sdate,Cname,Csex,Cage,Smoney)AS
SELECT,Sdate,Cname,Csex,Cage,SUM(Quantity*Price)FROMSellsS,CustomersC,DetailD,GoodsGWHERE=AND=AND=GROUPBY,Sdate,Cname,Csex,Cage
九、SELECTCname,Csex,CageFROMSellsMoneyWHERESdateBETWEEN'