[sql]代码库
实验目的:
1. 掌握字符串函数的使用(函数见后页)
2. 掌握日期函数的使用(函数见后页)
3. 掌握数学函数的使用
4. 掌握数据类型转换函数的使用
实验内容(打印时不需打印后页所附的函数表格)
完成在在Recruitment,GlobalToyz和Student数据库基础上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句(SELECT)。
1. 显示玩具的适用年龄在4岁到8岁之间的所有玩具的名称和描述,要求只显示玩具描述的前25个字符。(两种函数实现)
Ans1: select vToyName,left(vToyDescription,25)
from Toys
where siLowerAge = 4 and siUpperAge = 8;
Ans2: select vToyName,SUBSTRING(vToyDescription,1,25)
from Toys
where siLowerAge = 4 and siUpperAge = 8;
2. 对于Toys表的所有玩具,将名称和价格结合在一起按要求的格式输出,例如对ID为000001的玩具,打印输出的是‘The price of Robby the Whale is 8.99$’。请按该格式输出所有玩具的名称和价格。
Ans:select 'The price of ' + vToyName+' is' +convert(char(10),mToyRate)
from Toys
3.将Shopper表的订购者姓和名结合在一起显示,在姓和名显示的时候在中间加上一个空格。如‘Angela Smith’。
Ans: select vFirstName+' '+vLastName
from Shopper
4. 显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。
Ans: select top 5 vToyName, mToyRate
from Toys
order by mToyRate desc
5. 现需要查看Shopper表的订购者所使用的电子邮件服务商。对于每个订购者,只需要显示电子邮件服务商地址,不需要显示用户名。例如‘angelas@qmail.com’,只需要显示‘@qmail.com’。对于查询结果中重复出现的电子邮件服务商地址,只需要显示一次。
Ans: select distinct(substring(vEmailId,charindex('@',vEmailId),50))
from Shopper
6. 对于每份订单,请输出下列信息,包括订单号,订单日期,周第几日。
Ans: select cOrderNo,dOrderDate,DATENAME(dw,dOrderDate)
from Orders
7. 对于每份订单要求输出的是订单号,订单日期的月份和日子。例如,订单号为‘000001’的订单的输出结果为‘000001号订单的日期是5月20日’。
Ans: select cOrderNo+'号的日期是'+convert(char(2),DATEPART(mm,dOrderDate))+'月'+DATENAME(dd,dOrderDate)+'日'
from Orders
8. 对于装运表Shipment,请根据每份订单输出实际投递时间(dActualDeliveryDate)和装运时间(dShipmentDate)之间相隔的天数。
Ans: select DATEDIFF(dy,dActualDeliveryDate,dShipmentDate)
from Shipment
9. 假设规则为订单的过期时间为下订单后的一个月,请输出每份订单的订单号,下订单的日期,以及理论的订单过期时间。
Ans: select cOrderNo,dOrderDate,dateadd(mm,1, dOrderDate)'订单过期时间'
from Orders
10. 对于装运表Shipment,按该格式输出每份订单的装运日期。如订单号为‘000001’的输出结果为‘The Shipment date of Order No. 000001 is 2001.05.23’。
Ans:select 'The Shipment date of Order No. '+cOrderNo+' is '+datename(yy,dShipmentDate)+'.'+datename(mm,dShipmentDate)+'.'+datename(dd,dShipmentDate)
from Shipment
11. 输出Shopper表的‘Texas’州的前10%的订购者的详细信息。
Ans: select top 10 percent *
from Shopper
where cState='Texas'