Sql基本查询示例.doc
文本预览下载声明
写出实现以下题目的SQL语句(有用到时间的需要用格式“2000-02-02”显示
1: 将用户信息按年龄升序顺序的查询 (6分)
Select * from UserInfo order by Birthday desc
2: 查询现有用户量 (6分)
Select count(*) from UserInfo
3: 获取用户ID为“3”的用户信息 (5分)
Select * from UserInfo where UserID=3
4: 获取图书平均价格、单价最高和最低的图书 (7分)
Select avg(Price) 平均价格,max(Price) 单价最高,
min(Price) 单价最低 from BookInfo
5: 查询出每个出版商的出版图书总数 (8分)
Select PublishID, count(BookID) from BookInfo group by PublishID
6: 查询ID为“2” 用户所买的图书总数 (8分)
Select count(*) from SaleInfo where UserID=2
7: 创建一视图视图名为vTop10用于查询购书金额前10名的用户 (10分)
Create view vTop10 as
Select top 10 UserID, sum(Qty*Price*Agio) BuySum
from SaleInfo inner join BookInfo
on SaleInfo.BookID=BookInfo.BookID
Group by UserID order by BuySum desc
8: 为Sale_Book表的SaleDate列创建索引,索引名为 index_saleDate (5分)
Create index index_saleDate on Sale_Book(SaleDate)
9: 查询每个用户从未买过书的用户 (10分)
Select * from UserInfo where UserID not in
(select distinct UserID from SaleInfo)
10:统计出每一年的图书销售总额 (10分)
select year(SaleDate) 年份,sum(price*Qty*Agio) 销售额
from SaleInfo inner join BookInfo
on SaleInfo.BookID=BookInfo.BookID group by year(SaleDate)
11:统计出每个出版商的图书销售总额 (10分)
Select PublishName,BookInfo.PublishID 出版社ID,
sum(price*Qty*Agio) 销售额
from SaleInfo inner join BookInfo
on SaleInfo.BookID=BookInfo.BookID
inner join PublishInfo
on BookInfo.PublishID=PublishInfo.PublishID
group by BookInfo.PublishID,PublishName
12:用存储过程,过程名为QuickBuy , 作用为一个从为注册过的用户在第一次购买时自动创建用户并将用户购书信息存入数据表,存储过程参数如下:
QuickBuy( @username varchar(20) --用户名
, @Book_ID int --图书ID
, @qty int --购书数量
, @ Agio float --折扣
)
因涉及多个表操作,需要使用事务 (15分)
create Procedure QuickBuy
( @username varchar(20) --用户名
, @Book_ID int --图书ID
, @qty int --购书数量
, @Agio float --折扣
)
as
begin tran
declare @errorsum int
set @errorsum=0
insert into UserInfo(UserName) values(@username)
set @errorsum=@errorsu
显示全部