《sql server 2008 习题 实验.doc》由会员分享,可在线阅读,更多相关《sql server 2008 习题 实验.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流sql server 2008 习题 实验【精品文档】第 13 页第九周【20110420/21,3节*2】复习及作业实验一、 填空或改错或判断1、 P12(1)也是一种模型,它是对现实世界(2)的抽象。也就是说数据模型是用来(3)、(4)和(5)的。(答案:1、数据模型;2、数据特征;3、描述数据;4、组织数据;5)对数据进行操作) 2、 P12通俗地讲,(1)就是现实世界的模拟。(数据模型)3、 P12在开发实施数据库应用系统时需要使用不同的数据模型:第一类为(1),第二类为(2)。(1、概念模型;2、逻辑模型、物理模型)4、 P12概念模型(Con
2、ceptual Model)也称信息模型,它是按用户观点来对数据和信息建模,主要用于(数据库设计)。(问题:E-R图是概念数据模型?)5、 P12(1)是按计算机系统的观点对数据建模,主要用于数据库管理系统(DBMS)的实现。主要包括:层次模型、网状模型、(2)(Relational Model)、面向对象模型和对象关系模型。(答:1、逻辑模型;2、关系模型)6、 P12(1)是对数据最低层的抽象,它描述数据在系统内部的(2),在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。物理模型的具体实现是DBMS的任务,数据库设计人员需要了解和选择(3),一般用户不必考虑物理级的细节。(1、物理
3、模型;2、表示方式和存取方法;3、物理模型)7、 P13(1)数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型或者说是支持某种数据模型的。(问题:SQL Server 2008是基于关系数据模型,或者说是支持关系数据模型的?)8、 P13为了将现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,人们常常首先将现实世界抽象为(1)信息世界,然后将(1)信息世界转换为(2)机器世界。也就是说将,首先把现实世界的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,而是概念级的模型(如E-R图);然后再把概念
4、模型转换为计算机上某一DBMS支持的数据模型。9、 P13从现实世界到(1)概念模型的转换是由数据库设计人员完成的,从(1)概念模型到(2)逻辑模型的转换可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成,从逻辑模型到物理模型的转换一般由(3)DBMS完成的。10、 P13一般来讲,(1)数据模型是严格定义的一组概念的集合。这些概念精确描述了系统的静态特性、动态特性和完整性约束条件(integrity constraints)。因此数据模型通常由(2)数据结构、数据操作和完整性约束条件三部分组成。11、 P13数据结构描述数据库的组成对象以及对象之间的联系12、 P13(1)数据
5、结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按照(1)数据结构的类型来命名数据模型。13、 P14数据操作是指对数据库中各种(1)对象(型)的(2)实例(值)允许执行的操作的集合,包括(3)操作及有关(4)操作规则。14、 P14数据库主要有(1)查询和(2)更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切定义、操作符号、操作规则(优先级以及实现操作的语言)15、 P15概念模型用于信息世界建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员与用户之间进行交流的语言,因此概念模型一方面应该具有较强的语
6、义表达能力,能够方便直观地表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。16、 *P14-15信息世界涉及的概念有* P14(1)实体是客观存在并可相互区别的事物* P14(2)属性是实体所具有的某一特性*P15(3)码是唯一标识实体的属性集* P15(4)域是一组具有相同类型值的集合* P15(5)实体型是具有相同属性的实体必须具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体称为(5)实体型。* P15(6)实体集是同一类实体的集合称为实体集*P15在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为(7)实体(型)内部的联系和(8)
7、实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指实体集之间的联系。*P15两个实体型之间的联系(1:1,1:n,m:n)*P16两个以上实体型之间的联系*P16单个实体型内的联系(同一个实体集内部实体之间的1:1,1:n,m:n联系)17、 P17概念模型的一种最著名最常用表示方法是实体-联系方法关系术语一般表格术语1关系名表名2关系模式表头(表格的描述)3关系(一张)二维表4元组记录或行5属性列6属性名列名7属性值列值8分量(元组中的一个属性值)一条记录中的列值9非规范关系(关系模型要求关系必须是规范化的P29)表中有表(大表中套小表)18、 P
8、30把关系和现实生活中的表格所使用的术语做一个初略的对比19、 P21工资表关系是否是一个规范化关系?工资(职工号,姓名,职称,工资包括基本工资津贴职务工资,扣除房租与水电,实发)学生表中的列“入校毕业年份”?20、 P30关系数据模型的操作(查询、插入、删除、修改)(对照P14)。这些操作必须满足关系的完整性约束条件。21、 P30在关系数据模型中实体与实体间的联系都用表(即关系)来表示22、 P30在关系数据库的物理组织中,有的DBMS一个表对应一个操作系统文件,有的DBMS从操作系统获得若干个大的文件,自己设计表索引等存储结构。(对于SQL Server2008来说是否是一个表对应一个操
9、作系统文件?)23、 P31在数据模型中有型和值的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。24、 P31模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。模式的一个具体值称为模式的一个实例。同一个模式可以有很多实例。25、 P47在一个给定的应用领域中,所有实体以及实体之间联系的关系的集合构成一个关系数据库。26、 P47关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库模式包括:若干域的定义;在这些域上定义的若干关系模式。27、 P48关系数据库的值是这些关系模式在某一时刻对应的关系的集
10、合,通常称为关系数据库。28、 P44关系可以有三种类型:基本关系(又称为基本表或基表)、查询表和是图标*基本表是实际存在的表,它是实际存储数据的逻辑表示*查询表是查询结果对应的表*视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。29、 P45关系的分量必须取原子值,即每个分量都必须是不可分割的数据项。30、 P45任意两个元组的候选码不能相同(有些关系数据库产品中允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件)31、 P51任何关系数据库系统都应该支持实体完整性和参照完整性。这是关系模型所要求的。用户自定义的完整性就是针对某一具体关系数据库的约束条件
11、。它反映某一具体应用所涉及的数据必须满足的语义要求。32、 P85建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存放入系统的数据字典中。当用户操作表中的数据时,由DBMS自动检查该操作是否违背这些完整性约束条件33、 P85系统执行建表语句后,就在数据库中建立一个新的空的学生表,并将有关表的定义及有关约束条件存放在数据字典中。34、 P86在SQL中域的概念用数据类型来实现35、 P224)E-R图向关系模型的转换要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。36、 将实体型、实体的属性和实体间的联系转换为关系模式的主转换原则
12、(P225):一个实体型转换为一个关系模式;联系转换(1:1,1:n,m:n)?二、 数据库设计(E-R图设计,将E-R图转换为关系模式)1、 P17概念模型一个实例:工厂物资管理概念模型,P19两种ER图的表示法。将P19图1.14(c)转换为关系模式。2、 实验三(E-R图设计):P38第12、13,P74第53、 P195第2题E-R图4、 补充根据以下需求,回答后述问题。(1)医院里只有医生可以开处方单,每个医生可以开多张处方,每张处方只能由一个医生开。处方单的属性有:处方单号(为主码)、开单日期。医生的属性有:职工号(为主码)、姓名、性别、年龄。(2)一张处方单对应一个病人,但每个病
13、人可能有多张处方单。病人的属性有:病历号、姓名、性别、年龄、主要疾病(一种)。(3)一张处方单包含很多明细行,每行描述了客户使用的一种药品,一种药品可以出现在一张处方的多个明细行中。明细行的属性有:行号、药品代码、药品名称、摘要、数量、剂量。(4)药品的属性有:药品代码、药品名称、用途。(5)每种药品有多个供应商,每个供应商可能供应多种药品。供应商的属性有:供应商编号、供应商名称、地址。问题:1)创建该系统的ER图;(8分)答:职工号年龄姓名供应商编号性别 1病历号 供应商名称姓名开单日期 n 供应商对应2病人 1 n 处方单号地址 性别开1处方单医生 1 m 主要疾病年龄供应5包含3摘要 n
14、 n 用途药品明细行 n 1数量包含4药品名称剂量药品代码行号 2) 给出相应的关系模式;(8分)答:医 生(职工号、姓名、性别、年龄)处方单(处方单号、开单日期、病历号、职工号)(1、2)病 人(病历号、姓名、性别、年龄、主要疾病)明细行(行号、摘要、数量、剂量、药品代码、处方单号)(3、4)药 品(药品代码、药品名称、用途)供应商(供应商编号、供应商名称、地址)供应(药品代码、供应商编号)(5)(少一联系描述扣一分,少一实体描述扣一分)5、 补充根据以下需求,回答后述问题。(1)发货单由销售代表填写,每名销售代表都可以填写多个发货单,但每个发货单只能由单独的一名销售代表来填写。发货单中的属
15、性有:发货单号(为主码)、发货日期、发货方式。销售代表的属性有:代表编号(为主码)、姓名、性别、年龄、分管区。(2)一个发货单对应一名客户,但是,每名客户可能有多个发货单。客户的属性有:客户编号、姓名、性别、年龄、爱好、地区。(3)一个发货单包含很多明细行,每行描述了客户所购买的一种产品,一种产品可以出现在一个发货单的多个明细行中。明细行的属性有:行号、产品代码、产品名称、摘要、数量、销售单价、金额。(4)产品信息保存在一个称为产品的实体中。产品的属性有:产品代码、产品名称、颜色(每种产品的颜色只有一种)。(5)每个产品只有一个供应商,每个供应商可能供应多种产品。供应商的属性有:供应商编号、供
16、应商名称、地址。问题:1)创建该系统的ER图;(8分)年龄代表编号分管区姓名答:供应商编号性别 1客户编号 供应商名称姓名发货日期 n 供应商对应2客户 1 n 地址 性别发货方式填写1发货单销售代表 地区 1 1 发货单号年龄爱好包含5包含3摘要 n n 颜色产品明细行 n 1数量包含4产品代码行号 销售单价产品名称金额评分标准:每一个实体或联系错误扣0.5分;错误比较多的:明细行中包括产品代码、产品名称2)给出相应的关系模式;(8分)答:发 货 单(发货单号、发货日期、发货方式、代表编号、客户编号)(1、2)销售代表(代表编号、姓名、性别、年龄、分管区)客 户(客户编号、姓名、性别、年龄、
17、爱好、地区)明 细 行(行号、摘要、数量、销售单价、金额、发货单号、产品代码)(3、4)产 品(产品代码、产品名称、颜色、供应商编号)(5)供 应 商(供应商编号、供应商名称、地址)三、 基于3-7周四、 基于第8周1、 在E盘的db目录下建立名为test数据库,要求文件的大小为5M,当文件被写满时能自动增长20%,请完善下面的语句以便在SQLServer2008中实现建表test数据库功能CREATE DATABASE test ON (NAME = FILENAME = SIZE = FILEGROWTH = ) LOG ON (NAME = FILENAME = , SIZE = FIL
18、EGROWTH = ) COLLATE Chinese_PRC_CI_AS -指定数据库的默认排序规则2、 在test数据库中创建表s【加完整性】create table s sno char(8) ,-primary key, sname char(20) unique, ssex char(2), sage int check(sage=15 and sage=36), sdept char(20) not null, constraint PK_S primary key (sno) 显式定义约束名1) constraint PK_S的作用是什么2) 对主键约束来说,如果不显式定义约束名
19、,是否意味系统没有约束名?3) 指出此建表语句有哪些完整性约束条件定义,并说明哪些是表级约束哪些是列级约束4) 如果向空的s表中插入两条记录,其SQL命令为:insert into s values(1002,n1,f,20,信电系)insert into s values(1002,n2,f,40,信电系)此两语句是否能执行成功?如不成功说明违背了什么完整性约束条件3、 学生选课信息管理系统的数据库设计结果有以下两个方案,请比较两个方案的优劣方案一:三个关系模式学生(学号,姓名,性别,年龄,系,)课程表(课程号,课程名,先修课,学分)选课(学号,课程号,成绩)方案二:一个关系模式学生选课(学
20、号,姓名,性别,年龄,系,课程号,课程名,先修课,学分,成绩)4、 如果学生选课管理系统中有如下一组关系模式学生(学号,姓名,性别,年龄,系,班号)课程表(课程号,课程名,先修课,学分) 选课(学号,课程号,成绩) 班级(班号,班名,人数) 请问哪些表只描述了实体,哪些表只描述了联系,哪些表既描述了实体也描述了实体之间的联系?指出这些表的外码并说明其语义以及是否能取空值?班级表中的人数是否一定需要描述?为什么?5、 课程表C学生表S与学生选课表SC的内容为及建表语句为:S表: SC表:use jsj/* Table: course */create table c ( cno char(8)
21、constraint PK_C primary key,-列级显式定义约束名 cname char(20) , cpno char(8) constraint fk_c_cpno references c(cno),-列级显式定义约束名 ccredit int /* Table: student */create table s ( sno char(8) primary key, -未给出约束名,DBMS自动命名 sname char(10) null, ssex char(2), sage int, sdept char(20)/* Table: sc */create table sc
22、( sno char(8) , cno char(8) , grade integer null, primary key (sno, cno),- 问题:是否可以定义在列级?(不可以) foreign key (sno) references s(sno), foreign key (cno) references c(cno) - 问题:是否可以定义在列级?请问以下语句是否能执行成功?为什么?- 增加SC表记录(外码取值约束)use jsjinsert into sc values(98001,1,null);-出错原因?sno未取S表中元组的主码分量值?-修改SC表记录(外码取值约束)u
23、se jsjupdate sc set sno=98001 where sno=97001问题:sno改为97101是否可以?6、 请距离说明SC表定义中的on delete cascade on update cascade含义use jsj-drop table c;create table c cno char(8) constraint PK_C primary key, -列级约束,显式定义约束名 cname char(20) , cpno char(8) constraint fk_c_cpno references c(cno) on delete NO ACTION, ccre
24、dit int -drop table s;create table s sno char(8) ,-primary key, sname char(20) unique , ssex char(2), sage int, sdept char(20), constraint PK_S primary key (sno), -表级约束显式定义约束名 constraint check_s check(ssex in (f,m)and sage36) -元组级命名check约束 -或者 -check(ssex in (f,m)and sage=90 and cno1(图4)use jsjselec
25、t * from sc; -图1select cno,avg(grade) avg(grade) from sc group by cno;-集函数作用于组(先分组) 图2-在前面的查询中加作用在分组上的条件:having avg(grade)=90select cno,avg(grade) avg(grade)90 from sc group by cno -集函数作用于组(先分组)having avg(grade)=90; -图3 分组后只输出满足条件的组图1 图2图3select cno,avg(grade) from sc group by cno having avg(grade)=
26、90 and cno1;-图4图412、 【P108例42】查询其他系中比“信电系”某一学生年龄小的学生姓名和年龄SELECT Sname,Sage,sdept from swhere sage ANY (SELECT sage from s where sdept=信电系)and sdept信电系-等价的查询表达式:SELECT Sname,Sage,sdept from swhere sage (SELECT max(sage)from s where sdept=信电系)and sdept信电系13、 【P108例43】查询其他系比“信电系”所有学生年龄都小的学生姓名和年龄select
27、* from sSELECT Sname,Sage,sdept from swhere sage ALL (SELECT sage from s where sdept=信电系)and sdept信电系-等价的查询表达式:SELECT Sname,Sage,sdept from swhere sage (SELECT min(sage)from s where sdept=信电系)and sdept信电系*注(P109):用集函数实现子查询通常比直接用ANY或ALL查询效率高1、 视图(P118)问题:表有几种类型?(基本表,查询表,视图)【P119例1】建立信电系学生视图(视图名,列,行)u
28、se jsjdrop view v_s1go - 查询批次的开始,create view v_s要求是查询批次的第一个语句create view v_s1-(sno_1,sname_2,sage_3,sdept_4)as select sno,sname,sage,sdept from swhere sdept=信电系要点*省略了列名(隐含由select子句的三个列名组成)*对视图的查询需要转变为对基本表的查询use jsjselect * from v_s1 -问题:给出转换结果?*往视图中插入数据use jsjInsert into v_s5 values(2223,n2223,21,化工
29、系)-问题:信电系视图插入非信电系学生信息是否能成功?*保证对视图进行更新操作时满足视图定义的谓词条件(即子查询的条件表达式)【P119例2】建立信电系学生视图(视图名,列,行)use jsjdrop view v_s2go - 查询批次的开始,create view v_s要求是查询批次的第一个语句create view v_s2-(sno_1,sname_2,sage_3,sdept_4)as select sno,sname,sage,sdept from swhere sdept=信电系with check option;问题:信电系视图插入非信电系学生信息是否能成功?use jsjI
30、nsert into v_s2 values(2224,n2224,21,化工系)-【执行结果提示】消息550,级别16,状态1,第2 行试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。语句已终止。use jsjInsert into v_s2 values(2224,n2224,21,信电系)-成功*定义视图的子查询可以是任何复杂的select语句【即视图是从一个或几个基本表(或视图)导出的表】,通常子查询中不允许含有order by子句和distinct短语。【
31、P120例3】建立信电系选修了1号课程的学生视图(视图名,列,行)use jsjdrop view v_s3go - 查询批次的开始,create view v_s要求是查询批次的第一个语句create view v_s3(sno_1,sname_2,sno_3)-此处列名必须明确指定as select s.sno,s.sname,sc.sno -同名列不能省略列名from s,scwhere sdept=信电系 and s.sno=sc.sno and o=1;use jsjselect * from sc select * from v_s3 -问题:给出转换结果?*必须明确指定视图列名的
32、三种情况:*其中某个列不是单纯的属性名,而是集函数或列表达式【例4】。*多表连接时选出了几个同名列作为视图的字段【例3】*需要在视图中为某个列名用新的更合适的名字。(个人喜好)【例4】drop view v_s4go - 查询批次的开始,create view v_s要求是查询批次的第一个语句create view v_s4-(sno_1,sname_2,sage_3)as select sno,sname,2011-sage -计算列列名不能缺省列名from swhere sdept=信电系;去掉列名注视,执行成功!*组成视图的属性列名要求:或者全部省略或者全部指定,没有第三种选择。*【P119】RDBMS执行create view语句的结果只是把视图的定义存入数据字典,并不执行其中的select语句。只是在对视图查询时,才按视图的定义从基本表中将数据查出。*视图是一个虚表:数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中*行列子集视图P120:从单表导出,只去掉基本表的某些行某些列,保留主码