数据库考试题答案Word文档格式.docx
《数据库考试题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库考试题答案Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
一、注意完成每一个小题后当即贴在word文档中。
二、只能在本机上提交,不能在1个机械上提交多份。
3、如有类似试卷,都取消成绩。
数据库
附加company数据库,共有五张表,结构如下。
依照要求完成以下各题。
(1)/*员工人事表employee*/
emp_no
char(5)
Notnull
primarykey
员工编号
emp_name
char(10)
员工姓名
sex
char
(1)
性别
dept
char(4)
所属部门
title
char(6)
职称
date_hired
datetime
到职日
birthday
Null
生日
salary
int
薪水
addr
char(50)
null
住址
(2)/*客户表customer*/
cust_id
客户号
cust_name
char(20)
Notnull,
客户名称
char(40)
客户住址
tel_no
客户电话
zip
邮政编码
(3)/*销售主表sales*/
order_no
订单编号
sale_id
业务员编号
tot_amt
numeric(9,2)
订单金额
order_date
订货日期
ship_date
出货日期
invoice_no
发票号码
(4)/*销货明细表sale_item*/
prod_id
产品编号
qty
销售数量
unit_price
numeric(7,2)
单价
订单日期
(5)/*产品名称表product*/
pro_id
prod_name
产品名称
一、必做题
1、计算出sale_item表中每一笔销售数据的销售金额,并依照销售金额的大小排序。
selectorder_no,Qty*Unit_priceas销售金额
fromsale_item
orderby销售金额
2、检索product表和sale_item表中数量大于的相同产品的产品编号、产品名称、数量、单价。
selectpro_id,prod_name,Qty,Unit_price
fromproduct,sale_item
whereQty>
2and=;
3、找出目前业绩未超过50000元的员工。
(要求用嵌套查询)
Selectemp_no,emp_name,sex,,.title,,,,fromemployee,saleswhere=andtot_amt>
500000
4、设置sales表和sale_item的外键关系为“层叠”。
修改sales表中发票号码为I000000004的定单,将其发票号码改成I000000054,其定货明细数据也一并修改。
altertablesales
addconstraintFK_salesforeignkey(order_no)referencessale_item(order_no)
updatesalessetinvoice_no='
I000000054'
whereinvoice_no='
I000000004'
5、创建视图v1,包括2012-8-1200:
00:
00出货的信息(定单号,产品号,产品名,出货日期)
createviewv1
as
selectorder_no,prod_id,prod_name,ship_date
fromsales,sale_item,product
6、创建一个默许,并绑定到sale_item表的定单日期列,使得该列默以为系统当前日期。
createdefaultxq_rule
execsp_bindefault'
xq_rule'
'
'
altertablesale_item
addorder_datedatetimedefaultgetdate()
二、选做题(必需从当选1道题目)
7、利用存储进程计算出定单编号为10003的定单的销售金额。
createprocp1
selectsum(qty*unit_price)
fromsales_item
whereorder_no=’10003’
8、编写触发器,若是修改sale_item表中的销售数量或单价字段,级联修改sales表中该定单编号的定单金额字段。
1.查找出职称为领导的女员工的姓名、职称、性别。
selectemp_name,title,sexfromemployeewheretitle='
领导'
andsex='
女'
2.找出公司女业务员所接的定单。
selectorder_no
fromsales,employee
wheresexin
(
selectsex
fromemployee
wheresex='
f'
)
3.计算每一产品销售数量总和与平均销售单价。
selectcount(qty)
selectprod_idfromsale_itemgroupbyprod_id;
selectavg(unit_price)
selectprod_id,sum(qty)as销售数量总和,avg(unit_price)as平均销售单价
fromsale_itemgroupbyprod_id
4.设置sales表和sale_item的外键关系为“层叠”。
删除sales表中作废的定单(其发票号码为I000000004),其定货明细数据也一并删除。
deletefromsaleswhereinvoice_no='
5.通过大体表employee和sales,创建一个视图V1,包括业务员的编号、姓名、定单号、销售总金额。
createviewV1
selectemp_no,emp_name,sum(unit_price)as销售总金额
fromemployee,sales,sale_item
where=and=
groupbyemp_no
selectsale_id,order_no,tot_amt
fromsales
6.创建一个默许约束,使得sale_item表的定单日期默以为系统当前日期。
addconstraintdatetimedefaultGETDATE()fororder_date
7.利用存储进程计算出’E0014’业务员的销售总金额。
fromsales,sales_item
wheresale_id='
E0014'
8.编写触发器,若是修改sale_item表中的销售数量或单价字段,级联修改sales表中该定单编号的定单金额字段。
1、选取销售数量最多的前条定单定单号、数量。
selecttop5order_no,qtyfromsale_item
orderbyqtydesc
2、计算出一共销售了几种产品。
selectcount(*)fromproduct
3、查询姓名为’a14’的员工谈成定定单金额。
(用嵌套查询)
selecttot_amtfromsaleswheresale_idin
(selectsale_idfromsales,employeewhereemp_name='
a14'
andemp_no=sale_id)
4、将每一个员工的薪水上调3%。
updateemployee
setsalary=1+1*
5、通过大体表sales_item,product和sales,创建一个视图V1,包括定单号,产品号,产品名称,总价钱,定单日期。
createviewv1(定单号,产品号,产品名称,总价钱,定单日期)
selectorder_no,prod_id,prod_name,qty*unit_price,order_date
fromsale_item,product,sales
7、利用存储进程查找“刘刚”的员工编号、定单编号、销售金额。
selectemp_no,order_no,qty*unit_pricefromemployee,sale_item
whereemp_name='
刘刚'
execp1
8、创建AFTER-UPDATE触发器,在product表上创建触发器updproduct_trg,当对表product的记录进行修改时,触发器将给出修改时刻信息。
一、在表sales中挑出销售金额大于等于1万元定单。
]
selecttot_am