SQL习题Word文档下载推荐.docx
《SQL习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQL习题Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。
where商品号='
0001'
or商品号='
0002'
;
3.检索定购商品号为‘0001’或‘0002’的顾客号。
4.检索至少定购商品号为‘0001’和‘0002’的顾客号。
(用交的方法)
select
顾客号fromOrderItemwhere商品号='
and顾客号in
(select顾客号fromOrderItemwhere商品号='
);
5.检索至少定购商品号为‘0001’和‘0002’的顾客号。
(用自表连接方法)
selectX.顾客号fromOrderItemX,OrderItemY
whereX.顾客号=Y.顾客号andX.商品号='
andY.商品号='
6.检索没定购商品的顾客号和顾客名。
select顾客号,顾客名fromCustommerwhere顾客号notin
(select顾客号fromOrderItem);
7.检索一次定购商品号‘0001’商品数量最多的顾客号和顾客名。
select顾客号,顾客名fromCustommerwhere顾客号in
(select顾客号fromOrderItemwhere商品号='
and数量=
(selectMAX(数量)fromOrderItemwhere商品号='
));
8.检索男顾客的人数和平均年龄。
selectcount(*)人数,avg(年龄)平均年龄fromCustommerwhere性别='
男'
9.检索至少订购了一种商品的顾客数。
selectcount(distinct顾客号)fromOrderItem;
10.检索订购了商品的人次数。
selectcount(顾客号)fromOrderItem;
selectcount(distinct顾客号)fromOrderItem;
11.检索顾客张三订购商品的总数量及每次购买最多数量和最少数量之差。
sum(数量),MAX(数量)-MIN(数量)fromOrderItem,Custommer
whereOrderItem.顾客号=Custommer.顾客号and顾客名='
张三'
12.检索至少订购了3单商品的顾客号和顾客名及他们定购的商品次数和商品总数量,并按商品总数量降序排序。
selectCustommer.顾客号,顾客名,count(*),Sum(数量)fromOrderItem,Custommer
whereOrderItem.顾客号=Custommer.顾客号
groupbyCustommer.顾客号,顾客名
havingcount(*)>
3orderby4desc;
13.检索年龄在30至40岁的顾客所购买的商品名及商品单价。
select商品名,单价fromCustommer,Article,OrderItem
whereCustommer.顾客号=OrderItem.顾客号andArticle.商品号=OrderItem.商品号
and年龄between30and40;
14.创建一个视图GM,字段包括:
顾客号,顾客名和定购的商品名,日期和金额(金额=数量*单价)。
指定用内连接方式做。
createviewGMas
selectCustommer.顾客号,顾客名,商品名,日期,单价*数量as金额
fromCustommer,Article,OrderItem
createviewGM1as
from(CustommerinnerjoinOrderItemonCustommer.顾客号=OrderItem.顾客号)
innerjoinArticleon
Article.商品号=OrderItem.商品号
15.检索购买的商品的单价至少有一次高于或等于1000元的顾客号和顾客名。
selectCustommer.顾客号,顾客名
fromCustommer,OrderItem,Article
where
Custommer.顾客号=OrderItem.顾客号and
and单价>
1000
16.检索购买的购买价都高于或等于1000元的顾客号和顾客名。
selectCustommer.顾客号,顾客名fromCustommerwhere顾客号in
(select顾客号fromOrderItemwhere顾客号notin
(select顾客号fromOrderItem,Article
whereOrderItem.商品号=Article.商品号and单价<
=1000))
17.检索女顾客购买的商品号,商品名和数量合计。
selectArticle.商品号,商品名,sum(数量)fromCustommer,Article,OrderItem
whereOrderItem.顾客号=Custommer.顾客号andOrderItem.商品号=Article.商品号
and性别='
女'
groupbyArticle.商品号,商品名
18.检索所有的顾客号和顾客名以及它们所购买的商品号。
(包括没买商品的顾客)
selectCustommer.顾客号,顾客名,商品号
fromCustommerleftjoinOrderItemonCustommer.顾客号=OrderItem.顾客号
19.检索这样的顾客号,顾客名,他们定购了所有的商品(除法)
selectCustommer.顾客号,顾客名fromCustommerwherenotexists
(select*fromArticlewherenotexists
(select*fromOrderItem
whereOrderItem.顾客号=Custommer.顾客号andOrderItem.商品号=Article.商品号))
20.检索这样的顾客号,他们至少订购了顾客号为“0002”所订购的所有商品(除法)
selectdistinct顾客号fromOrderItemXwherenotexists
(select*fromOrderItemYwhere顾客号='
andnotexists
(select*fromOrderItemZwhereZ.顾客号=X.顾客号andZ.商品号=Y.商品号))
21.向Article表插入一条纪录。
删除无人购买的商品。
(检验一下刚插入的记录是否已被删除)
deletefromArticlewhere商品号notin
(select商品号fromOrderItem)
22.降低已售出的数量总合超过10件的商品单价为原价的95%。
updateArticleset单价=单价*0.95where商品号in
(select商品号fromOrderItemgroupby商品号havingsum(数量)>
10)
23.建立断言:
顾客的年龄必须大于18岁。
CreateASSERTIONA1check
(notexists(select*fromCustommerwhere年龄<
=18))
24.把修改商品单价的权限授给用户Wang,用户Wang可以转授该权限。
Grantupdate(单价)onArticletoWangwithgrantoption
25.把修改商品单价的权限用户Wang收回,转授出去的也级联收回。
revokeupdate(单价)onArticlefromWang
cascade
SQL练习题一
问题描述:
已知关系模式:
CARD(CNO,NAME,CLASS)
借书卡关系。
CNO卡号,NAME姓名,CLASS班级
BOOKS(BNO,BNAME,AUTHOR,PRICE,QUANTITY)
图书关系。
BNO书号,BNAME书名,AUTHOR作者,PRICE单价,QUANTITY库存册数
BORROW(CNO,BNO,RDATE)
借书记录关系。
CNO借书卡号,BNO书号,RDATE还书日期
说明:
限定每人每种书只能借一本;
库存册数随借书、还书而改变。
要求实现如下12个处理:
1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和外码参照完整性约束。
2.找出借书超过5本的读者,输出借书卡号及所借图书册数。
3.查询借阅了"
水浒"
一书的读者,输出姓名及班级。
4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
5.查询书名包括"
网络"
关键词的图书,输出书号、书名、作者。
6.查询现有图书中价格最高的图书,输出书名及作者。
7.查询当前借了"
计算方法"
但没有借"
计算方法习题集"
的读者,输出其借书卡号,并按卡号降序排序输出。
8.将"
C01"
班同学所借图书的库存册数都增加100本。
9.从BOOKS表中删除当前无人借阅的图书记录。
10.建立一个视图,显示"
班学生的借书信息(只要求显示姓名和书名)。