SQL练习题及答案1(合集五篇)
常州旅游
第一篇:SQL练习题及答案1
SQL练习题:商品销售数据库
商品销售数据库
Article(商品号 char(4),商品名char(16),单价 Numeric(8,2),库存量 int)Customer(顾客号char(4),顾客名 char(8),性别 char(2),年龄 int)OrderItem(顾客号 char(4),商品号 char(4),数量 int, 日期 date)
1.用SQL建立三个表,须指出该表的实体完整性和参照完整性,对性别和年龄指出用户自定义的约束条件。(性别分成男女,年龄从10到100)。顾客表的数据用插入语句输入数据,其它两表可用任意方式输入数据。
create table OrderItem(顾客号 char(4),商品号 char(4),日期 datetime,数量 smallint,primary key(顾客号,商品号,日期),foreign key(商品号)references Article(商品号), foreign key(顾客号)references Custommer(顾客号));
2.检索定购商品号为„0001‟的顾客号和顾客名。
lect distinct 顾客号,顾客名from OrderItem where 商品号='0001'
3.检索定购商品号为„0001‟或„0002‟的顾客号。
lect distinct 顾客号 from OrderItem where 商品号='0001' or 商品号='0002';
4.检索至少定购商品号为„0001‟属兔女和什么属相最配和„0002‟的顾客号。
微信零钱通可以直接支付吗lect 顾客号 from OrderItem where 商品号='0001' and 顾客号 in(lect 顾客号 from OrderItem where 商品号='0002');
5.检索至少定购商品号为„0001‟和„0002‟的顾客号。(用自表连接方法)
lect X.顾客号 from OrderItem X,OrderItem Y
where X.顾客号=Y.顾客号 and X.商品号='0001' and Y.商品号='0002';
6.检索没定购商品的顾客号和顾客名。
lect 顾客号,顾客名 from Custommer where 顾客号 not in(lect 顾客号 from OrderItem);
7.检索一次定购商品号„0001‟商品数量最多的顾客号和顾客名。
lect 顾客号,顾客名 from Custommer where 顾客号 in(lect 顾客号 from OrderItem where 商品号='0001'and 数量=(lect MAX(数量)from OrderItem where 商品号='0001'));
8.检索男顾客的人数和平均年龄。
lect count(*)人数,avg(年龄)平均年龄 from Custommer where 性别='男';
9.检索至少订购了一种商品的顾客数。
lect count(distinct 顾客号)from OrderItem;
10.检索订购了商品的人次数。lect count(顾客号)from OrderItem;lect count(distinct 顾客号)from OrderItem;11.检索顾客张三订购商品的总数量及每次购买最多数量和最少数量之差。
lect sum(数量),MAX(数量)-MIN(数量)from OrderItem,Custommer where OrderItem.顾客号=Custommer.顾客号 and 顾客名='张三';.检索至少订购了3单商品的顾客号和顾客名及他们定购的商品次数和商品总数量,并按商品总数量降序排序。
lect Custommer.顾客号,顾客名,count(*),Sum(数量)from OrderItem,Custommer where OrderItem.顾客号=Custommer.顾客号 group by Custommer.顾客号,顾客名 having count(*)>3 order by 4 desc;
13.检索年龄在30至40岁的顾客所购买的商品名及商品单价。
lect 商品名,单价 from Custommer,Article,OrderItem where Custommer.顾客号=OrderItem.顾客号 and Article.商品号=OrderItem.商品号 and 年龄 between 30 and 40;
14.创建一个视图GM,字段包括:顾客号,顾客名和定购的商品名,日期和金额(金额=数量*单价)。指定用内连接方式做。
create view GM as lect Custommer.顾客号,顾客名,商品名,日期,单价*数量 as 金额 from Custommer,Article,OrderItem where Custommer.顾客号=OrderItem.顾客号 and Article.商
品号=OrderItem.商品号
create view GM1 as lect Custommer.顾客号,顾客名,商品名,日期,单价*数量 as 金额
波光粼粼拼音from(Custommer inner join OrderItem on Custommer.顾客号=OrderItem.顾客号)inner join Article on Article.商品号=OrderItem.商品号
15.检索购买的商品的单价至少有一次高于或等于1000元的顾客号和顾客名。
lect Custommer.顾客号,顾客名 from Custommer,OrderItem,Article
where Custommer.顾客号=OrderItem.顾客号 and Article.商品号=OrderItem.商品号 and 单价>1000
16.检索购买的购买价都高于或等于1000元的顾客号和顾客名。
lect Custommer.顾客号,顾客名 from Custommer where 顾客号 in(lect 顾客号 from OrderItem where 顾客号 not in(lect 顾客号 from OrderItem,Article
where OrderItem.商品号=Article.商品号 and 单价<=1000))
17.检索女顾客购买的商品号,商品名和数量合计。
lect Article.商品号,商品名,sum(数量)from Custommer,Article,OrderItem where OrderItem.顾客号=Custommer.顾客号 and OrderItem.商品号=Article.商品号
and 性别='女' group by Article.商品号,商品名
18.检索所有的顾客号和顾客名以及它们所购买的商品号。(包括没买商品的顾客)
中班安全教案
lect Custommer.顾客号,顾客名,商品号
from Custommer left join OrderItem on Custommer.顾客号=OrderItem.顾客号 18.检索所有的顾客号和顾客名以及它们所购买的商品号。(包括没买商品的顾客)
lect Custommer.顾客号,顾客名 from Custommer where not exists(lect * from Article where not exists(lect * from OrderItem狮子和蚊子
where OrderItem.顾客号=Custommer.顾客号 and OrderItem.商品号=Article.商品号))
20.检索这样的顾客号,他们至少订购了顾客号为“0002”所订购的所有商品(除法)
lect distinct 顾客号 from OrderItem X where not exists(lect * from OrderItem Y where 顾客号='0002' and not exists(lect * from OrderItem Z where Z.顾客号=X.顾客号 and Z.商品号=Y.商品号))
21.向Article表插入一条纪录。删除无人购买的商品。(检验一下刚插入的记录是否已被删除)
delete from Article where 商品号 not in(lect 商品号 from OrderItem)
22.降低已售出的数量总合超过10件的商品单价为原价的95%。
update Article t 单价=单价*0.95 where 商品号 in
(lect 商品号 from OrderItem group by 商品号 having sum(数量)>10)
23.建立断言:顾客的年龄必须大于18岁。
Create ASSERTION A1 check(not exists(lect * from Custommer where 年龄<=18))
24.把修改商品单价的权限授给用户Wang, 用户Wang可以转授该权限。
Grant update(单价)on Article to Wang with grant option
25.把修改商品单价的权限用户Wang收回,转授出去的也级联收回。
revoke update(单价)on Article from Wang cascade
第二篇:数据库sql课后练习题及答案解析
先创建下面三个表:
(book表)
(borrow表)
与父同行
(reader表)
活色生香什么意思
1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
5)查找书名以”计算机”开头的所有图书和作者(WRITER)。
6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。