- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
sql演习题2
sql练习题2
练习题:
商品销售数据库
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’的顾客号和顾客名。
select distinct 顾客号 from OrderItem
where 商品号=0001 or 商品号=0002;
3 检索定购商品号为‘0001’或‘0002’的顾客号。
select distinct 顾客号 from OrderItem
where 商品号=0001 or 商品号=0002;
4 检索至少定购商品号为‘0001’和‘0002’的顾客号。(用交的方法)
select 顾客号 from OrderItem where 商品号=0001 and 顾客号 in
( select 顾客号 from OrderItem where 商品号=0002);
5 检索至少定购商品号为‘0001’和‘0002’的顾客号。(用自表连接方法)
select X. 顾客号 from OrderItem X,OrderItem Y
where X.顾客号=Y.顾客号 and X.商品号=0001 and Y. 商品号=0002;
6 检索没定购商品的顾客号和顾客名。
select 顾客号,顾客名 from Custommer where 顾客号 not in
(select 顾客号 from OrderItem);
7 检索一次定购商品号‘0001’商品数量最多的顾客号和顾客名。
select 顾客号,顾客名 from Custommer where 顾客号 in
(select 顾客号 from OrderItem where 商品号=0001and 数量=
(select MAX(数量)from OrderItem where 商品号=0001));
8 检索男顾客的人数和平均年龄。
select count(*) 人数,avg(年龄) 平均年龄 from Custommer where 性别=男;
9 检索至少订购了一种商品的顾客数。
select count(distinct 顾客号) from OrderItem;
10 检索订购了商品的人次数。
select count( 顾客号) from OrderItem;
select count(distinct 顾客号) from OrderItem;
11 检索顾客张三订购商品的总数量及每次购买最多数量和最少数量之差。
select sum( 数量),MAX(数量)-MIN(数量) from OrderItem,Custommer
where OrderItem.顾客号=Custommer.顾客号 and 顾客名=张三;
12 检索至少订购了3单商品的顾客号和顾客名及他们定购的商品次数和商品总数量,并按商品总数量降序排
文档评论(0)