1.利用DDL语句创建表employee,共有4列:eid(占3个字符,建立一个延迟的主键约束),ename(占8个字符,非空),deptid(占3个字符),salary(整型,大于0),现有索引表空间indx,数据表空间tbs。根据以上要求完成定义和约束,并合理安排表空间。
2.完成以下SQL语句,已知CAP数据库中表和列的定义如下:
CUSTOMERS: 存放顾客信息的表
cid: 顾客编号
cname: 顾客姓名
city: 顾客所在城市
discnt: 每个顾客可能会有的折扣
PRODUCTS: 存放商品信息的表
pid: 商品编号
pname: 商品名称
city: 商品库存所在的城市
quantity: 目前可销售的商品库存数量
price: 每单位商品的批发价
AGENTS: 存放代理商信息的表
aid: 代理商编号
aname: 代理商的名称
city: 代理商所在的城市
percent: 每笔交易代理所能获得佣金百分比
ORDERS: 存放订单信息的表
oid: 订单编号
month: 订单月份
cid: 购买商品的顾客编号
aid: 代理商编号
pid: 所订购的商品编号
qty: 订购的商品数量
dollars: 商品的总价
(1)找出所有顾客、代理商和商品都在同一个城市的三元组(cid,aid,pid)
(2)找出折扣率最大和最小的顾客的cid值
(3)找出通过代理商a03而不通过a06订购的商品的pid值
(4)取出名字是以字母N开头的代理商的aid和aname值,并且这些代理商没有销售过任何在城市Newark生产的产品
(5)求出所有商品的订购情况(pname,qty)
(6)完成插入操作:顾客Allied通过代理商Smith购买了名称为"brush"的产品,订单号为1011,商品数量为1000
(7)如果顾客的折扣率大于10,将其折扣在原有基础上再增加5,否则增加3
(8)找出哪些顾客(名字)同时订购了产品p01和p02
先谢谢大家了。
------最佳解决方案--------------------------------------------------------
2.1
select a.cid,b.pid,c.aid
from CUSTOMERS a,PRODUCTS b,AGENTS c
where a.city=b.city
and b.city=c.city
------其他解决方案--------------------------------------------------------
题目长了点,还是比较简单的。
就是不知道我理解的对不对
我没理论知识的
------其他解决方案--------------------------------------------------------
这么长的题目,慢慢看
------其他解决方案--------------------------------------------------------
2.2
select cid
from customers a,
(
select min( discnt) min_dis,max(discnt) max_cnt
from customers
) b
where a.discnt=b.min_dis or a.discnt=b.max_dis
------其他解决方案--------------------------------------------------------
2.3
select a.pid
(
select pid,max(decode(aid,'A03',aid,null)) a03,max(decode(aid,'A06',aid,null)) a06
from ORDERS
group by pid
) a
where a.a03='A03' and a.a06 is null
------其他解决方案--------------------------------------------------------
2.4
select
from PRODUCTS b,AGENTS c,orders, d
where d.pid=b.pid and d.aid =c.aid
and c.aname like 'N%'
and b.city<>'Newark'
------其他解决方案--------------------------------------------------------
2.4
select c.aid,c.aname
from PRODUCTS b,AGENTS c,orders, d
where d.pid=b.pid and d.aid =c.aid
and c.aname like 'N%'
and b.city<>'Newark'
group c.aid,c.aname
------其他解决方案--------------------------------------------------------
2.5
select b.pname,sum(d.qty) qty
from PRODUCTS b,orders, d
where d.pid=b.pid
group b.pname
------其他解决方案--------------------------------------------------------