当前位置:文档之家› 数据库习题答案

数据库习题答案

碧霞谷就像早饭,周一到周五总会吃;炼宝就像午饭,每顿都得吃;跑马就像晚饭,哪顿不吃慎得慌;打架就像社交,出门在外总会遇到那么一两回;逆世万劫就像晨跑,勤劳的人总是有收获的;九幽就像下午茶,有时候高兴就去做一下;打眼睛就像摸彩票,偶尔抽一次说不定有意外惊喜;3v3就像相亲,总会遇到几个傻逼;灭妖挂箱子就像洗澡,洗完总会神清气爽;百环就像嘿咻,一周一次幸福快乐;打刑天就像逛街,一个月也就那么几次;抢红包就像炒菜,时间把握的好就能做好;遗民密谋就像上课,打着打着就要犯困;玄海就像考试,团队合作尤其重要;喇叭冒泡就像上厕所,每天都有那么几回;挂女娲就像睡觉,一觉醒来总会有点精力旺盛。

习题一一、选择题1.B2.A3.C二、填空题1.人工管理方式、文件管理方式、数据库系统管理方式2.Window身份验证模式、SQL Server身份验证模式3..sql4.Reporting Services配置、Notification Services命令提示、SQL Server Configuration Manager、SQL Server错误和使用情况报告、SQL Server外围应用配置器。

习题二一、选择题1.A2.B3.A4.A二、填空题1.二维表格、数据文件、日志文件、数据库管理系统2.比较真实地模拟现实世界、容量被人所理解、便于计算机上实现3.实体完整性规则、参照完整性规则、用户定义的完整性规则习题三一、选择题1.C2.D3.A4.A5.A6.C7.A8.B习题四一、选择题2.B3.B4.A5.A二、填空题1.UNIQUE2.NONCLUSTERED三、简答题1.p88页,1)在聚集索引中,表中各记录的物理顺序与索引的逻辑顺序相同,只有在表中建立了一个聚集索引后,数据才会按照索引键值的顺序存储到表中。

由于一个表中的数据只能按照一种顺序存储,所以在表中只能建立一个聚集索引。

通常在主键上创建聚集索引。

2)非聚集索引是完全独立于数据行的结构,表中的数据行不按非聚集索引的顺序排序和存储。

在非聚集索引内,从索引行指向数据行的指针称为行定位器。

在检索数据时,SQL Server先在非聚集索引上搜索,找到相关信息后,再利用行定位器,找到数据表中的数据行。

一个表上可以建立多个非聚集索引。

如果在一个表中既要创建聚集索引,又要创建非聚集索引,应先创建聚集索引,然后创建非聚集索引。

因为创建聚集索引时将改变数据行的物理存放顺序。

聚集索引的键值是唯一的,非聚集索引的键值可以重复,当然也可以指定唯一选项,这样任何两行记录的索引键值就不会相同。

2.建立主键时3.CREATE NONCLUSTERED INDEX ID_XM ON S(姓名)习题五一、选择题1.C2.B3.A4.A5.D6.A二、简答题1.∏[型号,内存容量,硬盘容量]((σ价格<8000(PRODUCT ))2.∏[生产厂家,型号,是否彩色,价格] (σ是否彩色=T(PRODUCT PRINTER ) 3.∏[生产厂家](PRODUCT PRINTER)习题六一、选择题1.C2.A3.D4.C5.D7.B、A8.A9.B10.C11.C12.C13.C14.C15.D二、填空题1.SELECT2.条件3.#4.子查询5.T、F、相反6.FROM,INTO,GROUP BY,ORDER BY,WHERE7.结构化查询语言8.[sever_name]指定链接的服务器名称或远程服务器名称. [database_name]如果对象驻留在SQL Server的本地实例中,则指定SQL Server数据库的名称,如果对象在链接服务器中,则指定OLE DB目录. [schema_name]如果对象在SQL Server数据库中,则指定包含对象的架构的名称,如果对象在链接服务器中,则指定OLE DB架构名称. object_name对象的名称9.F510.Sql11.内连接,外连接,交叉连接12.等值连接,自然连接,自连接13.左外连接,右外连接,完全外连接三、简答题1.见教材p151页SELECT <属性列表>--它可以是星号(*)、表达式、列表、变量等。

[INTO新表] --用查询结果集合创建一个新表FROM <基本表>(或视图序列)--最多可以指定16个表或者视图,用逗号相互隔开。

[WHERE条件表达式][GROUP BY 属性名表] --分组子句[HAVING 组条件表达式] --组条件子句[ORDER BY 属性名[ASC|DESC]..] --排序子句[COMPUTE 集函数(列名)] --汇总子句2.见教材P133-135页1.内连接1)格式SELECT 列名 FROM 表1 INNER JOIN 表2 ON <连接的条件>2)功能INNER JOIN 内连接按照ON指定的连接条件合并两个表,只返回满足条件的行,也可用于多个表的连接。

只返回符合查询条件或连接条件的行作为结果集,即删除所有不符合限定条件的行。

2.外连接外连接不但包含满足条件的行,还包括相应表中的所有行,只能用于两个表的连接。

实际上基本表的外连接操作可以分为3类:3.交叉连接(1)格式SELECT 列名 FROM 表1 CROSS JOIN 表2(2)功能相当于广义笛卡尔积。

不能加筛选条件,即不能带WHERE子句。

结果表是第一个表的每行与第二个表的每行拼接后形成的表,结果表的行数等于两个表行数之积。

实验六1、查询所有数学系学生的信息。

--select * from s where 系='数学系'2、查询李老师所教的课程号、课程名--select 课程号,课程名from c where 教师like '李%'3、查询年龄大于20岁的女同学的学号和姓名。

--select 学号,姓名from s where year(getdate())-year(出生日期)+1>20 and 性别='女'4、查询学号为‘H0301’所选修的全部课程成绩。

--select 成绩from sc where 学号= 'H0301'5、查询平均成绩都在80分以上的学生学号及平均成绩。

--select 学号,AVG(成绩) from sc group by 学号having AVG(成绩)>=806、查询至少有6人选修的课程号。

--select 课程号from sc group by 课程号having count(*)>67、查询C02号课程得最高分的学生的学号--select 学号from sc where 课程号='c02' and 成绩=(select max(成绩) from sc where 课程号='c02')8、查询学号为’J0101’的学生选修的课程号和课程名--select 课程号,课程名from c,sc where 学号='j0101' and c.课程号=sc.课程号9、‘李小波’所选修的全部课程名称。

--Select c.课程名from s,c,sc where s.学号=sc.学号and c.课程号=sc.课程号and 姓名='李小波'10、所有成绩都在70分以上的学生姓名及所在系。

--select 姓名,系from s,sc where s.学号=sc.学号group by 学号having min(成绩)>=7011、英语成绩比数学成绩好的学生--select sc2.学号from c c1,c c2,sc sc1,sc sc2 where c1.课程名='英语'--and c2.课程名='数学' and sc1.成绩>sc2.成绩and sc1.学号=sc2.学号--and c1.课程号=sc1.课程号and c2.课程号=sc2.课程号12、至少选修了两门课及以上的学生的姓名和性别select 姓名,性别from s,sc--where s.学号=sc.学号group by 学号having count(*)>=213、选修了李老师所讲课程的学生人数--select count(*) from C,sc where 教师like '李%' and c.课程号=sc.课程号group by sc.课程号14、‘操作系统’课程得最高分的学生的姓名、性别、所在系--select 姓名,性别,系from s,sc--where s.学号=sc.学号and 成绩=--(select max(成绩) from c,sc where sc.课程号=c.课程号and 课程名='操作系统')15、显示所有课程的选修情况。

--select * from c left join sc on c.课程号=sc.课程号16、取出没有选修‘操作系统’课程的学生姓名和年龄select 姓名,(year(getdate())-year(出生日期))as 年龄from s,c,sc where sc.学号=s.学号and c.课程号=sc.课程号and 课程号not in (select 课程号from c where 课程名='操作系统')17、没有选修李老师所讲课程的学生--select 学号from sc where 课程号not in (select 课程号from c where 教师like '李%')18、取出选修了全部课程的学生姓名,性别。

Select s.姓名,s.性别from s where not exists (select * from c where not exists(select * from scWhere sc.学号=s.学号and sc.课程号= c.课程号))19、检索至少选修课程“数据结构”和“C语言”的学生学号。

use studentcourseselect sc.学号,c.课程名from c,sc where c.课程名= '数据结构' and c.课程号= sc.课程号and 学号in ( select sc.学号from sc ,cwhere c.课程名= 'C语言' and c.课程号= sc.课程号)20、检索学习课程号为C02的学生学号与姓名。

--select s.学号,姓名from sc,s where 课程号='c02' and s.学号=sc.学号21、检索选修课程号为C01或C02的学生学号,姓名和所在系--use studentcourse--select s.学号, s.姓名,s.系from s,sc,c where sc.课程号='C02' or sc.课程号= 'C01'--and sc.课程号= c.课程号and s.学号= sc.学号group by s.学号, s.姓名,s.系22、检索至少选修课程号为C01和C03的学生姓名。

相关主题