聚网通社区电子商务技术专区SQL基础操作检测题

1  /  1  页   1 跳转 查看:736

标题: SQL基础操作检测题

SQL基础操作检测题

大宝整理的一份SQL测试题,觉得不错。放在这里。

利用企业管理器创建一个数据库TEST

完全备份数据库TEST到磁盘文件c:\TEST.bak

删除数据库TEST

从磁盘文件c:\TEST.bak中还原数据库为CUST


利用企业管理器,在数据库CUST中创建三张表:
客户资料表—Customers
客户编码CUST_id—主键(char10,不允许为空)
客户名称CUST_namechar10
客户地址CUST_addvarchar60
客户邮编CUST_ZIPchar12
客户所在大区areachar10
客户所属分公司companychar10);
客户销售订单表—Orders
客户订单号corder_no—主键(char 15,不允许为空)
客户编号CUST_idchar 10
销售员编号saleschar10
销售数量qtynumeric9(精度16,小数位数6))
销售日期sale_datedatatime8
物料编号itemchar15
物料单价pricenumeric9(精度16,小数位数6))
销售类型order_typechar1,以I表示销售,以O表示退货);
分公司资料表—Companies
分公司编码company—主键(char10,不允许为空)
分公司名称comy_namechar50
分公司地址comy_addvarchar50
分公司邮编comy_codechar12







客户资料表—Customers

客户编码


客户名称


客户地址


客户邮编


客户所在大区


客户所属分公司


CUST_id


CUST_name


CUST_add


CUST_ZIP


area


company


000001


奉化市康星机械有限公司


奉化市浦东陶林路18号


110036


华东区


001


000002


苏州球豹阀门有限公司


苏州市逸仙路899号北区7158室


110037


华东区


002


000003


测试供应商


苏州工业园区唯亭科技园


110038


华东区


002


000004


上海宝树钢铁有限公司


上海嘉定南门沪宜公路3180号


110039


华东区


001


000005


奉化市凤珠橡塑五金厂


奉化市环科园南岳路25号


110040


华东区


001


000006


上海创盛机电供应站


上海市宜城镇氿滨南路326号


110041


华中区


001


000007


苏州工业园区永晋阀门有限公司


苏州市鄞州区云龙镇甲村


110042


华中区


002


000008


上海建蓓铸造有限公司


上海市江东区江东南路145-5号


110043


华中区


001


000009


无锡市泰伯电镀有限公司


无锡市云龙镇三星工业区


110044


华中区


002


000010


宜兴万利机械制造有限公司


山东省蓬莱西城临港工业区


110045


华中区


002




客户销售订单表—Orders

客户订单号


客户编号


销售员编号


销售数量


销售日期


物料编号


物料单价


销售类型


corder_no


CUST_id


sales


qty


sale_date


item


price


order_type


ZHB0806040001


000001


001


10


2008-6-1


000001


7.12


I


ZHB0806040001


000001


001


11


2008-6-1


000002


8.12


I


ZHB0806040002


000002


003


12


2008-6-2


000003


9.12


O


ZHB0806040003


000003


004


13


2008-6-3


000004


10.12


I


ZHB0806040003


000003


004


14


2008-6-3


000005


11.12


I


ZHB0806040003


000003


004


15


2008-6-3


000006


12.12


I


ZHB0806040004


000006


007


16


2008-6-4


000001


7.12


I


ZHB0806040004


000006


007


17


2008-6-4


000002


8.12


I


ZHB0806040004


000006


007


18


2008-6-4


000003


9.12


I


ZHB0806040004


000006


007


19


2008-6-4


000004


10.12


I


ZHB0806040004


000006


007


20


2008-6-4


000005


11.12


I




分公司资料表—Companies

分公司编码


分公司名称


分公司地址


分公司邮编


company


comy_name


comy_add


comy_code


001


上海分公司


上海浦东陆家嘴


113006


002


苏州分公司


苏州市


113006




分别利用企业管理器和查询分析器对所建表进行数据的插入操作。按照以上表格数据进行插入,供下列各题查询使用。
要求写出利用查询分析器进行操作的SQL语句。

请查询出某一客户某段时间内所有销售情况,以销售日期由大到小排序。
答案:
SELECT dbo.Customers.CUST_name, dbo.Orders.corder_no,

dbo.Orders.CUST_id, dbo.Orders.sales, dbo.Orders.qty, dbo.Orders.sale_data,


dbo.Orders.item, dbo.Orders.price, dbo.Orders.order_type

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Customers.CUST_id = '000001')
ORDER BY dbo.Orders.sale_data DESC

请查询出某一客户某段时间内所有销售情况,要求列出客户名称及客户所在大区信息。
答案:
SELECT TOP 100 PERCENT dbo.Customers.CUST_name, dbo.Orders.corder_no,

dbo.Orders.CUST_id, dbo.Orders.sales, dbo.Orders.qty, dbo.Orders.sale_data,


dbo.Orders.item, dbo.Orders.price, dbo.Orders.order_type, dbo.Customers.area,


dbo.Companies.comy_name

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Customers.CUST_id = '000001')
ORDER BY dbo.Orders.sale_data DESC

请查询出某一客户在大于某个时间的销售情况。
答案:
SELECT TOP 100 PERCENT dbo.Customers.CUST_name, dbo.Orders.corder_no,

dbo.Orders.sales, dbo.Orders.qty, dbo.Orders.sale_data, dbo.Orders.item,


dbo.Orders.price, dbo.Orders.order_type

FROM dbo.Orders LEFT OUTER JOIN


dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Customers.CUST_id = '000001') AND

(dbo.Orders.sale_data > CONVERT(DATETIME, '2008-06-01 00:00:00', 102))





请统计某一客户某段时间内的销售总金额(注意销售类型)。
答案:
SELECT TOP 100 PERCENT dbo.Customers.CUST_name,

'
销售总金额'=sum(case dbo.Orders.order_type
when 'i'
then dbo.Orders.price * dbo.Orders.qty
when 'o' then -1*dbo.Orders.price * dbo.Orders.qty end)

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Customers.CUST_id = '000001') AND

(dbo.Orders.sale_data > CONVERT(DATETIME, '2004-01-01 00:00:00', 102))

group by dbo.Customers.CUST_name


请统计某一分公司下所有客户某段时间内销售总金额。
答案:
SELECT TOP 100 PERCENT dbo.Companies.comy_name, '销售总金额'=sum(case dbo.Orders.order_type
when 'i'
then dbo.Orders.price * dbo.Orders.qty
when 'o' then -1*dbo.Orders.price * dbo.Orders.qty end)

FROM dbo.Orders LEFT OUTER JOIN


dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.sale_data > CONVERT(DATETIME, '2004-01-01 00:00:00', 102)) and (dbo.Companies.comy_name='上海分公司')
group by dbo.Companies.comy_name


请统计某一分公司下所有客户某段时间内销售总金额,要求列出分公司地址及邮编。
答案:
SELECT TOP 100 PERCENT
CUST_ZIP,CUST_add,dbo.Customers.CUST_name, '
所有客户某段时间内销售总金额'=sum(case dbo.Orders.order_type
when 'i'
then dbo.Orders.price * dbo.Orders.qty
when 'o' then -1*dbo.Orders.price * dbo.Orders.qty end)

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.sale_data > CONVERT(DATETIME, '2004-03-31 00:00:00', 102)) AND

(dbo.Companies.comy_name = '
上海')

group by CUST_ZIP,CUST_add,dbo.Customers.CUST_name



请统计某一分公司下所有客户某段时间内销售总金额,要求列出分公司名称、地址和邮编以及客户的名称、地址和所在大区。
答案:
SELECT TOP 100 PERCENT
dbo.Companies.comy_name,dbo.Companies.comy_add,CUST_ZIP,CUST_add,dbo.Customers.CUST_name,dbo.Customers.area, '
所有客户某段时间内销售总金额'=sum(case dbo.Orders.order_type
when 'i'
then dbo.Orders.price * dbo.Orders.qty
when 'o' then -1*dbo.Orders.price * dbo.Orders.qty end)

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.sale_data > CONVERT(DATETIME, '2004-03-31 00:00:00', 102)) AND

(dbo.Companies.comy_name = '
上海分公司')

group by dbo.Companies.comy_name,dbo.Companies.comy_add,CUST_ZIP,CUST_add,dbo.Customers.CUST_name,dbo.Customers.area

请统计某一物料某段时间内的销售总数和总金额。
答案:
SELECT TOP 100 PERCENT dbo.Orders.item, '销售总数'=sum(qty),'总金额'=sum(dbo.Orders.price*dbo.Orders.qty)
FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.sale_data > CONVERT(DATETIME, '2004-01-01 00:00:00', 102)) AND

(dbo.Orders.order_type = 'i') AND (dbo.Orders.item = '11')

group by dbo.Orders.item


请分别计算所有销售情况中,销售数量最大和销售金额最大的数据行
答案:
SELECT TOP 100 PERCENT
'
销售数量最大'=max(dbo.Orders.qty)
FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.order_type = 'i')




SELECT TOP 100 PERCENT
'
销售金额最大'=max(dbo.Orders.qty*dbo.Orders.price)
FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.order_type = 'i')

利用子查询,计算出单行销售数量最大的某个客户在某段时间内的销售总金额。
答案:
SELECT TOP 100 PERCENT '销售总金额'=(dbo.Orders.price*dbo.Orders.qty), dbo.Orders.order_type,

dbo.Orders.sale_data, dbo.Customers.CUST_name, dbo.Orders.item

FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON



dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company

WHERE (dbo.Orders.order_type = 'i') AND (dbo.Orders.sale_data > CONVERT(DATETIME,

'2004-01-01 00:00:00', 102))and dbo.Orders.qty=(SELECT TOP 100 PERCENT '
单行销售数量最大'=max( dbo.Orders.qty)
FROM dbo.Orders LEFT OUTER JOIN

dbo.Customers ON


dbo.Orders.CUST_id = dbo.Customers.CUST_id LEFT OUTER JOIN


dbo.Companies ON dbo.Customers.company = dbo.Companies.company)



引用
 

回复:SQL基础操作检测题

以后新的程序员会很少写原生的SQL了。
引用
 

回复:SQL基础操作检测题

有时这个世界就是轮回。

就好象WINDOWS时代,没有多少人会写DOS语言。但未来,服务器好象又是指令式了。
引用
 

回复: SQL基础操作检测题

将练习数据库附上!
 附件: 您所在的用户组无法下载或查看附件
Abel Zhao Implement Consultant GIGA ========================================= 上海哲勤信息技术有限公司 Shanghai Gigapp Solutions Inc
Add:上海浦东桃林路18号环球大厦B栋32楼
Tel:021-68556520-606 13564525061
Fax:021-68556521
引用
 

回复: SQL基础操作检测题

再将sql语句附上,sql2005的


 附件: 您所在的用户组无法下载或查看附件
Abel Zhao Implement Consultant GIGA ========================================= 上海哲勤信息技术有限公司 Shanghai Gigapp Solutions Inc
Add:上海浦东桃林路18号环球大厦B栋32楼
Tel:021-68556520-606 13564525061
Fax:021-68556521
引用
 

回复:SQL基础操作检测题

现在有些工具都能代替大部分的手工写作了.
Wave.gui Implementation Consultant    Company:Shanghai Gigapp Solutions Inc  Add:32Floor,Block B,World Centre,No18 Taolin Road,Shanghai P.R.C  Tel:021-68556520-601  Mobile:15921221226 Fax:021-68556521
引用
 
1  /  1  页   1 跳转

版权所有 聚网通社区  聚网通社区 聚网通  Sitemap

Powered by Discuz!NT 2.0.1115    Copyright © 2001-2009 Comsenz Inc.
Processed in 0.109375 second(s) , 4 queries.
返顶部