课后习题参考解答(2)

2019-05-24 08:06

第五章 课后习题

一、选择题:

1. 在SQL server 2008中提供了一些字符串函数,以下说法错误的是( B )。

A、select right(‘hello‘,3)返回值为:llo;

B、select trim(‘hello‘)返回值为:hello(前后都无空格); C、select replace(‘hello‘,’e‘,’o‘)返回值为:hollo; D、select ltrim(rtrim(‘hello‘))hello(前后都无空格);

2.在SQL server 2008中,有语句“update members set Salary=Salary+300”,下列表述正确的是( A )。

A、将members表中工资都增加300 B、删除工资为300的记录

C、查询工资为300的记录 D、修改members工资都扣除300

3.在SQL server 2008中,有students(学生表),包含字段:SID(学号),SName(姓名),Grade(成绩)。先要将所有的学生成绩加10分,以下SQL语句正确的是(D )。

A、update students set Grade=Grade+10 where SID=1; B、update * set Grade=Grade+10;

C、update * from students set Grade=Grade+10; D、update students set Grade=Grade+10;

4. 假设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生姓名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0--100。若要把“张二的化学成绩80分”插入到S中,则可用( D )。

A、add into S values('张二','化学','80'); B、insert into S values('张二','化学','80'); C、add into S values('张二','化学',80); D、insert into S values('张二','化学',80);

5. 需要显示2001年1月1日—2001年12月31日雇佣的所有职员的姓名和雇佣日期。职员信息表tblEmployees包含列Name和列HireDate,下面哪些语句能完成该功能? D A. SELECT Name, HireDate FROM tblEmployees

B. SELECT Name, HireDate FROM tblEmployees

WHERE HireDate=’2001-01-01’ OR ‘2001-12-31’ C. SELECT Name, HireDate FROM tblEmployees

WHERE HireDate BETWEEN ‘2000-12-31’ AND ‘2002-01-01’ D. SELECT Name, HireDate FROM tblEmployees WHERE DATEPART(yy,HireDate)=’2001’

第六章 习题解答

一、选择题

1、在SQL server2008中,假定grade(成绩)表中包含字段:sid(学号),lang(语文成绩)。那么列出语文成绩在80分到90分的学生的SQL语句是( C )。

A、select*from grade where lang in(80,90); B、select*from grade having lang in(80,90); C、select*from grade where lang between 80 and 90; D、select*from grade having lang between80and90;

2、在SQL server 2008中,要查找eatables表中item_desc字段的值以“CHOCO”开头(如CHOCOLATE、CHOCOPIE)的所有记录。下列SQL语句正确的是( C )。

A、select*from eatables where item_desc like“CHOCO”; B、select*from eatables where item_desc =“CHOCO”; C、select*from eatables where item_desc like“CHOCO%”; D、select*from eatables where item_desc like“%CHOCO?”;

3、在SQL server 2008中,有一个product(产品)表,包含字段:pname(产品名称),要从此表中筛选出产品名称为“苹果”或“香蕉”的记录,下列语句正确的是( C )。

A、select *from product on pname=“苹果”or pname=“香蕉”; B、select *from product on pname=“苹果”and pname=“香蕉”; C、select *from product where pname=“苹果”or pname=“香蕉”; D、select *from product where pname=“苹果”and pname=“香蕉”;

4、在SQL server 2008中,当要处理学生表中name(学生姓名)列所有姓“王”的记录时,在SQL语句中where子句的写法应该是( C )。

A、where name=‘王%‘ B、where name like ’王*‘

C、where name like ‘王%‘ D、where name like ’*王%‘

第七章 习题解答

1、在SQL server2008中,假定grade(成绩)表中包含字段:cID(班级编号) lang(语文课成绩)math(数学课成绩)eng(英语成绩),那么计算不同班级每门课程的平均成绩的SQL语句是( D )。

A、select cid,avg(lang,math,eng),from grade group by lang,math,eng ; B、select cid,avg(lang)avg(math)avg(eng),from grade group by lang,math,

eng ; C、select cid,avg(lang math eng),from grade group by cid ;

D、select cid,avg(lang)avg(math)avg(eng),from grade group by cid

2、在SQL server2008中,有一个proinfo(商品信息)表,包含字段:proid(商品编码号),procatg(商品类别),proprice(商品价格),下列选项( B )可以查询每一类的平均价格。

A、select procatg,avg(proprice)from proinfo;

B、select procatg,avg(proprice)from proinfo group by procatg; C、select avg(proprice)from proinfo order by procatg; D、select avg(proprice)from proinfo ;

3、在SQL server2008中,当执行:Select au_id, title_id, sum(royaltyper)from titleauthor group by title_id, au_id order by title_id, au_idSQL语句时,会发生( A )。

A、在结果集中,对每一个不同的au_id的值和title_id的值的组合都会有一行; B、在结果集中,每一行中au_id的值都不会相同;

C、该语句会运行失败,因为查询输出的次序和分组的次序不一样; 该语句会运行失败,因为royaltyper列也应进行分组

4、 在SQL server2008中,执行如下的SQL语句:select*from item as a left join

ordredetails as b on a.icode=b.itemcod,将返回( C )。

A、item和orderdetails表中的相关记录以及orderdetails表中其余的不相关记录; B、item和orderdetails表中的相关记录;

C、item和orderdetails表中的相关记录以及item表中其余的不相关记录; D、提示语法错误;

5、在SQL server 2008中,学生表student中包含字段:学生编号sid(主键),学生姓名SaName。成绩表score包含字段:课程编号cid,学生编号sid(外键),学生成绩score;其中学生表包含10行数据,成绩表包含6行记录(且sid列没有重复值),那么执行sql语句:select*from student left outer join score on student.sid=score.sid,将返回( C )条记录。

A、0 B、6 C、10 D、16

6、在SQL server2008中,假定grade(成绩)表中包含字段:sID(学号)cID(班级编号) lang(语文课成绩)math(数学课成绩),那么计算所有学生人数和各科最高成绩的SQL语句是( A )。

A、select count(*),max(lang),max(math)from grade;

B、select count(*),max(lang),max(math)from grade group by sID; C、select sum(*),max(lang),max(math)from grade group by sID;

第八章 习题解答

1, 在SQL Server2008数据库中创建了如下两个表: CREATE TABLE 雇员表 (

雇员代号 int IDENTITY(10001,1) PRIMARY KEY, 雇员姓名 varchar(20) NOT NULL, 通信地址 varchar(200) NULL )

CREATE TABLE 订单表 (

订单号 int IDENTITY(1,1) PRIMARY KEY, 雇员代号 int NOT NULL, 客户代号 int NOT NULL,

订购日期 datetime NOT NULL, 订购金额 money NOT NULL )

需要获得2003年9月1日每个雇员的最高的一笔销售金额,要求列出“雇员代号”、“雇员姓名”、“订购日期”、最高的“订购金额”。下面哪些语句能完成该功能? ( B ) A. SELECT a.雇员代号, a.雇员姓名,b.订购日期,b.订购金额

FROM 雇员表 a LEFT JOIN 订单表 b ON a.雇员代号=b.雇员代号

WHERE b.订单日期=‘09/01/2003’

AND 订单金额 IN (SELECT MAX(订单金额) FROM 订单表)

B. SELECT a.雇员代号, a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 a LEFT JOIN 订单表 b

ON a.雇员代号=b.雇员代号 AND b.订单日期=‘09/01/2003 GROUP BY a.雇员代号,a.雇员姓名, b.订购日期

C. SELECT a.雇员代号, a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 a INNER JOIN 订单表 b ON a.雇员代号=b.雇员代号 WHERE b.订单日期=‘09/01/2003

GROUP BY a.雇员代号,a.雇员姓名, b.订购日期, b.订单号

D. SELECT a.雇员代号, a.雇员姓名,b.订购日期,MAX(订购金额)

FROM 雇员表 a INNER JOIN 订单表 b ON a.雇员代号=b.雇员代号 WHERE b.订单日期=‘09/01/2003

AND 订单金额 IN (SELECT MAX(订单金额) FROM 订单表)


课后习题参考解答(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京大学软件与微电子学院

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: