数据库技术与应用SQL SERVER刘卫国 熊拥军主编课后复习题答案.docx
《数据库技术与应用SQL SERVER刘卫国 熊拥军主编课后复习题答案.docx》由会员分享,可在线阅读,更多相关《数据库技术与应用SQL SERVER刘卫国 熊拥军主编课后复习题答案.docx(18页珍藏版)》请在冰豆网上搜索。
![数据库技术与应用SQL SERVER刘卫国 熊拥军主编课后复习题答案.docx](https://file1.bdocx.com/fileroot1/2023-1/28/3a2ba2dd-d1d4-4d6a-970b-eac955aecacd/3a2ba2dd-d1d4-4d6a-970b-eac955aecacd1.gif)
数据库技术与应用SQLSERVER刘卫国熊拥军主编课后复习题答案
《数据库技术与应用-SQLSERVER2005》
刘卫国熊拥军主编
习题参考答案
第一章数据库系统概论
一、选择题
ABDAD
二、填空题
载体、意义;数据集合;数据库管理系统;数据库系统;层次、网状、关系、关系模型
第二章关系数据库基本原理
一、选择题
DDACBD
二、填空题
1.实体完整性、参照完整性、用户自定义完整性。
2.(A,B)R1(A,D)和R2(A,B,C).
3.元子特性
4.外键
5.F1=(A→B,A→C,A→D).
6.选择
第三章SQLSERVER2005系统基础
一、选择题
ACBCB
二、填空题
1.企业版,标准版,开发版,工作组版,精简版
2.WINDOWs身份验证模式和混合模式
3.SQLServer管理平台、SQLServer配置管理器
4.已注册服务器窗口、对象资源管理器,文档窗口
5.数据查询语言,数据定义语言,数据操纵语言和数据控制语言
第四章数据库的管理
一、选择题
ABDAC
二、填空题
1、数据文件和事务日志文件
2、master,tempdb,model,msdb和mssqlsystemresource
3、数据文件,事务日志文件和文件组
4、5
5、createdatabase,alterdatabase,dropdatabase
四、应用题
1
createdatabasesales
onprimary
(name=saldat01,filename="c:
\db\saldat01.mdf"),
(name=saldat02,filename="c:
\db\saldat02.ndf"),
filegroupfilegrp1
(name=saldat11,filename="d:
\db\saldat11.ndf"),
(name=saldat12,filename="d:
\db\saldat12.ndf"),
(name=saldat13,filename="d:
\db\saldat13.ndf")
2
alterdatabasesales
addlogfile
(name=sallog2,filename="c:
\db\sallog2.ldf")
3
alterdatabasesales
addfile
(name=saldat03,filename="c:
\db\saldat03.ndf",size=5,filegrowth=20%)
扩展
alterdatabasesales
addfile
(name=saldat14,filename="d:
\db\saldat14.ndf",size=5,filegrowth=20%)tofilegroupfilegrp1
4
alterdatabasesalessetsingle_user
5
dropdatabasesales
第五章表的管理
一、选择题
CACCC
二、填空题
1、-2²¹-2²¹-1,0-255.
2、输入存储字段小于100时按原字段存,大于100时截取100位。
8个字节。
3、日期时间数据类型,数字数据类型
4、表名和字段名称
5、insert,update,truncate或delete。
四、应用题
--创建数据库
createdatabasesales
---4.1
---标识符列(自动增长的列)
--identity(种子,增量)
createtablesell_order
(
order_id1intidentity(1,2),
goods_idchar(6)notnull,
employee_idchar(4)notnull,
custmer_idchar(4)notnull,
transporter_idchar(4)notnull,
order_numfloat,
discountfloat,
order_datedatetime,
send_datedatetime,
arrival_datedatetime,
costmoney
)
---删除标识符列
altertablesell_order
dropcolumnorder_id1
--添加标识符列
altertablesell_order
addorder_id1intidentity(1,2)
----4.2
altertablesell_order
--dropcolumnsend_date
add发货日期datetime
----4.3
---标识列自动增长
insertsell_order(goods_id,employee_id,custmer_id,order_num,discount,order_date)values('135','16','99',30,9.5,'2009-2-26')
insertsell_ordervalues('135','16','99','',30,9.5,'2009-2-26','','','')
--为空和null不同
insertsell_ordervalues('135','16','99',null,30,9.5,'2009-2-26',null,null,null)
--允许手动增长(显示声明)
setidentity_insertsales.dbo.sell_orderon
insertsell_order(order_id1,goods_id,employee_id,custmer_id,order_num,discount,order_date)
values(8,'135','16','99',30,9.5,'2009-2-26')
setidentity_insertsales.dbo.sell_orderoff
----4.4
insertsell_ordervalues('26','02','6','10',200,8,'2008-10-10','2008-12-12',200000,'2008-12-1')
----4.5
insertsell_ordervalues('26','29','100','10',200,8,'2009-1-1','2008-12-12',null,'2008-12-1')
updatesell_ordersetemployee_id='16'where(employee_id='29'andcostisnull)
----4.6
updatesell_ordersetdiscount=discount*0.9where(custmer_id='100'andcostisnull)
----4.7
deletefromsell_orderwhereorder_date='2009-1-1'
第六章数据查询
一、选择题
CABBC
二、填空题
1、TOP/PERCENT
2、UNION,查询数据/结果集
3、嵌套查询/子查询
4、内链接,外连接
5、等值连接,自然连接
6、into
四、应用题
--128页应用题第一题
createdatabasestudent2
createtablestudent
(
s_nochar(8),
s_namechar(10),
s_sexchar
(2),
birthdaydatetime,
politychar(8)
)
insertintostudentvalues('s003','江鱼','女','2003-01-01','国民党')
createtablesco
(
s_nochar(8),
c_nochar(8),
scorefloat
)
insertintoscovalues('s003','数据结构',85)
--1-1
select*fromstudentorderbys_no
--1-2
select*fromstudentwheres_sex='女'orderbys_sexcomputecount(s_sex)
--1-3
selects_name,birthday,year(getdate())-year(birthday)as年龄fromstudentwheres_sex='男'
selects_name,convert(varchar,birthday,23),year(getdate())-year(birthday)as年龄fromstudentwheres_sex='男'
--selectconvert(varchar,getdate(),23)只截取系统当前日期
--selectconvert(varchar,getdate(),8)只截取系统当前时间
--1-4
selects_name,birthday,year(getdate())-year(birthday)as年龄,c_no,score
fromstudent,scowherestudent.s_no=sco.s_no
selects_name,birthday,year(getdate())-year(birthday)as年龄,c_no,score
fromstudentinnerjoinscoonstudent.s_no=sco.s_no
--1-5
selectscorefromscowheres_no=(selects_nofromstudentwheres_name='江鱼')
selectsco.score,student.s-namefromscoinnerjoinstudentonsco.s_no=student.s_nowherestudent.s_name='江于'
--1-6
selects_namefromstudentwheres_noin(selects_nofromscowherescore<60)
--1-7
selects_sex,avg(score)fromstudentinnerjoinscoonsco.s_no=student.s_nogroupbys_sex
--128页应用题第二题
createdatabasers
createtable部门
(
部门号char(8),
部门名char(10),
负责人char(8),
电话char(10)
)
insertinto部门values('b001','教育学院','叶浩生','1338888888')
createtable职工
(
职工号char(8),
部门号char(8),
姓名char(8),
性别char
(2),
出生日期datetime
)
insertinto职工values('z002','b001','孔维宏','男','1962-10-27')
createtable工资
(
职工号char(8),
基本工资money,
津贴money,
奖金money,
扣除money
)
insertinto工资values('z001',1300,500,800,600)
--2-1
select职工.职工号,姓名,(基本工资+津贴+奖金-扣除)as实发工资from职工innerjoin工资
on职工.职工号=工资.职工号
--2-2
select*from职工where出生日期='1962-10-27'
select职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间from职工where出生日期='1962-10-27'
select职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间,部门名from职工innerjoin部门
on职工.部门号=部门.部门号and出生日期='1962-10-27'
select职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间,部门名from职工innerjoin部门
on职工.部门号=部门.部门号where出生日期='1962-10-27'
select职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间,部门名from职工,部门
where职工.部门号=部门.部门号and出生日期='1962-10-27'
select职工.职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间,部门名,(基本工资+津贴+奖金-扣除)as实发工资
from职工,部门,工资where职工.职工号=工资.职工号and职工.部门号=部门.部门号and出生日期='1962-10-27'
select职工.职工号,姓名,性别,convert(varchar,出生日期,23)as出生时间,部门名,(基本工资+津贴+奖金-扣除)as实发工资
from部门innerjoin职工on职工.部门号=部门.部门号innerjoin工资on职工.职工号=工资.职工号where出生日期='1962-10-27'
--2-3
SELECT部门名,MIN(出生日期)FROM部门JOIN职工ON部门.部门号=职工.部门号GROUPBY部门名
--2-4
select姓名,性别,(year(getdate())-year(出生日期))as年龄from职工where(year(getdate())-year(出生日期))>35
--2-5
select部门名,count(职工号)as职工人数from职工,部门where部门.部门号=职工.部门号
groupby部门名havingcount(*)>=2orderbycount(*)desc
select部门名,count(*)as职工人数from职工innerjoin部门on部门.部门号=职工.部门号
groupby部门.部门名havingcount(*)>=1orderbycount(*)desc
第七章索引与视图
一、选择题
CCADB
二、填空题
1、altertable,dropindex
2、primarykey,unique
3、视图
4、定义
5、计算列
6、修改,删除
第八章数据完整性
一、选择题
BCCAD
二、填空题
1、行
2、createrule和createdefault
3、唯一性
4、primarykey,多
5、检查,唯一性
6、constraint,约束名
四、应用题
--第八章应用题
--1
altertablesell_order
addorder_id1intidentity(1,2)
altertablesell_order
dropcolumnorder_id1
--2
altertablesell_order
addprimarykey(order_id1)
--3
usesales
altertablecustomer
addprimarykey(customer_id)
altertablesell_order
addforeignkey(custom_id)referencescustomer(customer_id)
ondeletecascadeonupdatecascade
--4
altertablecustomer
addconstraintkkunique(customer_name)
--5
altertablesell_order
addconstraintk3default(0)fordiscount
--6
altertablesell_order
addconstraintk4check(order_date>send_date),check(send_date>arriver_date)
第九章T-SQL程序设计
一、选择题
BCCDD
二、填空题
1、局部
2、44,82,126
3、gf
4、/**/
5、单条,begin---end
6、break,continue
7、declarecursor,select
四、应用题
--4.1.1
SELECTgoods_nameas商品名称,
CASE
WHENclassification_id='P001'THEN'笔记本计算机'
WHENclassification_id='P002'THEN'激光打印机'
WHENclassification_id='P003'THEN'喷墨打印机'
WHENclassification_id='P004'THEN'交换机'
ENDAS商品类别,
unit_priceAS单价,stock_quantityas库存
FROMgoods
--4.1.2
declare@valuereal
set@value=-1
while@value<2
begin
selectsign(@value)
select@value=@value+1
end
--4.1.3
declareemployee_cursorcursor
for
selectt.employee_id,s.cost
fromemployeetjoinsell_ordersont.employee_id=s.employee_id
wheres.cost>15000
openemployee_cursor
FETCHNEXTFROMemployee_cursor
WHILE@@fetch_status=0
BEGIN
FETCHNEXTFROMemployee_cursor
END
--4-2
selectemployee_name,
case(datediff(yy,birth_date,getdate())-1)/10
when2then'20到30岁'
when3then'30到40岁'
when4then'40到50岁'
else'50岁以上'
endas年龄段,department_nameas所属部门
fromdepartment,employeewheredepartment.department_id=employee.department_idorderby所属部门asc
selectnldas年龄段,count(*)as人数from
(select
case(datediff(yy,birth_date,getdate())-1)/10
when2then'20到30岁'
when3then'30到40岁'
when4then'40到50岁'
else'50岁以上'
endasnld,birth_datefromemployee)aGROUPBYnld
--4-3
createfunctionfact2(@xint)
returnsint
as
begin
if@x=1
return1
return@x*dbo.fact2(@x-1)
end
selectdbo.fact2(6)
--4-4
declare@iint,@jint,@sumint
select@i=1,@j=0,@sum=0
while(@i<100)
begin
if(@i%7=0)
begin
set@j=@j+1
set@sum=@sum+@i
end
set@i=@i+1
end
select@j,@sum
--4-5
declarecur_employeecursor
for
selectsex,count(*)fromemployeegroupbysex
declare@sexchar
(2),@sex_numint
opencur_employee
fetchnextfromcur_employeeinto@sex,@sex_num
while@@fetch_status=0
begin
select@sexas性别,@sex_numas人数
fetchnextfromcur_employeeinto@sex,@sex_num
end
closecur_employee
deallocatecur_employee
第十章存储过程和触发器
一、选择题
CAADA
二、填空题
1、sp_
2、存储过程
3、committransaction,rollbacktransaction
4、数据封锁机制
四、应用题
--1
CREATEPROCprStoreOrderID
@Order_id1char(6),
@goods_idchar(6),
@employee_idchar(4),
@Custom_IDchar(5),
@Transporter_IDchar(4),
@order_datedatetime,
@order_id2char(6)OUTPUT
AS
BEGIN
INSERTINTOsell_order(Order_ID1,goods_id,employee_id,Custom_ID,Transporter_ID,order_date)
VALUES(@Order_id1,@goods_id,@employee_id,@Custom_ID,@Transporter_ID,@order_date)
SELECT@order_id2=Order_ID1FROMsell_orderWHEREOrder_ID1=@Order_id1
END
DECLARE@order_id2char(6)
EXECprStoreOrderID'S00009','G00005','e010','C0009