问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

问大家点Oracle的题目。

发布网友 发布时间:2022-04-08 20:30

我来回答

3个回答

懂视网 时间:2022-04-09 00:51


1. 创建一个函数fun_sal,该函数根据部门号获得该部门下所有员工的平均工资
Create or replace function fun_sal(deptnos number)
return varchar2
Is
Avgs number(10);
Begin
Select avg(sal) into Avgs from scott.emp where deptno=deptnos;
Return Avgs;
End;

2.创建一个动态游标,根据部门编号查询该部门下员工所有信息。
declare
cursor emp_cursor(deptnos number)
is
select * from scott.emp where deptno=deptnos;
v_temp emp_cursor%rowtype;

begin
if not emp_cursor%isopen then
Open emp_cursor(&deptno);
end if;

loop
fetch emp_cursor into v_temp;
exit when emp_cursor%notfound;
dbms_output.put_line(‘编号是:‘||v_temp.empno||‘姓名是:‘||v_temp.ename||‘工资是:‘||v_temp.sal);
end loop;
close emp_cursor;
end;

 

3 创建一个存储过程,根据该员工的编号,查询该员工的工资,如果该工资少于2000.把工资提高到2000.
create or replace procedure proc_sal(empnos number)
is
sals number(10);
begin
select sal into sals from scott.emp where empno=empnos;
if sals<2000 then
update scott.emp set sal=2000 where empno=empnos;
end if;
end;

 


4 显示在一个月为30天的情况所有员工的日薪金,忽略余数
Select sal+nvl(comm,0) from emp

第二部分
第一阶段:创建用户和基础表
1. 创建用户developer密码developer,为其赋予足够的权限,然后用该用户完成下面功能。

create user developer identified by developer;
grant connect,resource to developer;
2. 创建数据表
--客户信息表
--(会员编号、会员姓名、会员密码、邮箱地址、注册时间)
create table customer
(
cId number(20) primary key,
cName varchar2(20),
cPwd varchar2(20),
email varchar2(20),
cTime date
);

 


--商品信息表
--(商品id,商品名字、价格、折扣、是否新品、现存量)
create table goodsInfo
(
gId number(20) primary key,
gName varchar2(20),
price number(5,2),
zc number(1,1),
isNew number(10),
total number(20)
);

 

 

 


--订单信息表
--(订单id、会员id、订单状态(0未付款、1已付款、2已审核、3完成)、下单时间)
create table orderInfo
(
oId int primary key,
cId number(20) references customer(cId),
isStage number(10),
endTime date
);

 


--订单明细信息表
--(订单id、商品id、商品数量)
create table orderd
(
oId references orderInfo(oId),
gId references goodsInfo(gId),
goodsnum number(30)
);

要求:
1. 会员姓名唯一

create unique index names on customer(cName);
2. 商品折扣介于0.0-10.0之间
alter table goodsInfo
add
constraint zc check(zc>=0.0 and zc<=10.0);
3. 订单明细表中订单id和商品id唯一
create unique index weiyi on orderd(oId,gId);

4. 订单id由系统自动生成,请使用序列完成
create sequence xu start with 1 increment by 1 ;
insert into customer values(1,‘离宿舍‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-1-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
5. 外键关系1:订单信息表(会员id)-客户信息表(会员编号)
6. 外键关系2:订单明细表(订单id)-订单信息表(订单id)
7. 外键关系3:订单明细表(商品id)-客户信息表(商品id)
第三阶段:数据录入与查询
向每张表添加3条以上的数据

--客户信息表
--(会员编号、会员姓名、会员密码、邮箱地址、注册时间)
insert into customer values(1,‘离宿舍‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-1-2‘,‘yyyy-MM-dd‘));
insert into customer values(2,‘王五‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-2-2‘,‘yyyy-MM-dd‘));
insert into customer values(3,‘李四‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-3-2‘,‘yyyy-MM-dd‘));
insert into customer values(4,‘流量‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into customer values(5,‘士大夫‘,‘123‘,‘edf@aa.com‘,to_date(‘2014-3-4‘,‘yyyy-MM-dd‘));

商品id,商品名字、价格、折扣、是否新品、现存量
insert into goodsInfo values(1,‘鞋子‘,45.50,0.9,1,50);
insert into goodsInfo values(2,‘帽子‘,35.50,0.8,1,500);
insert into goodsInfo values(3,‘衣服‘,45.50,0.9,1,150);
insert into goodsInfo values(4,‘裤子‘,100.50,0.5,1,100);
insert into goodsInfo values(5,‘袜子‘,45.50,0.7,1,500);

--订单信息表
--(订单id、会员id、订单状态(0未付款、1已付款、2已审核、3完成)、下单时间)
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,1,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));
insert into orderInfo values(xu.nextval,2,1,to_date(‘2014-4-2‘,‘yyyy-MM-dd‘));




--订单明细信息表
--(订单id、商品id、商品数量)
insert into orderd values(2,1,2);
insert into orderd values(3,2,2);
insert into orderd values(4,5,1);
insert into orderd values(5,3,2);
insert into orderd values(6,4,2);
insert into orderd values(7,2,1);
insert into orderd values(7,3,5);


1. 查询订单信息:订单编号、订单状态(显示中文状态)、下单时间、订单总金额
select o.oId, case isStage
when 0 then ‘未付款‘
when 1 then ‘已付款‘
when 2 then ‘已审核‘
when 3 then ‘完成‘ end ,endTime,sum(price*zc*goodsnum) from orderInfo o inner join orderd o1 on o.oId=o1.oId inner join goodsInfo g on g.gId =o1.gId
group by o.oId,o.isstage,o.endtime;
2. 查询商品信息:商品编号、商品名称、商品价格、折扣价
select gId,gName,price,zc*price from goodsInfo;

3. 查询订单明细:订单编号、下单时间、商品名称、商品价格、购买数量

select o.oId,endTime,gName,price,goodsnum from orderInfo o inner join orderd o1 on o.oId=o1.oId inner join goodsInfo g on g.gId =o1.gId ;

4. 查询消费金额排在前5名的顾客信息:会员id、会员姓名、邮箱、注册时间

select c.cId,cName,email,cTime from
(select rownum,o.cId, o.oId,isStage,endTime,price*zc*goodsnum prices from orderInfo o inner join orderd o1 on o.oId=o1.oId inner join goodsInfo g on g.gId =o1.gId order by prices desc ) temp
inner join customer c on c.cId=temp.cId and (rownum>=0 and rownum<=5) ;

5. 查询销量最大的商品信息:商品id、商品名称、销售数量

select rownum,goodsInfo.* from
(
select g.gId,g.gname,sum(o1.goodsnum) from orderd o1 inner join goodsInfo g on o1.gid=g.gid group by g.gid,g.gname order by sum(goodsnum) desc) temp where rownum=1;
)

 


第四阶段:视图、存储过程、函数
1. 创建视图view_OrderDetail:订单编号、订单状态、订单总金额、下单日期、会员id、会员姓名、会员邮箱。通过视图进行数据查询。
create or replace view view_OrderDetail
as
select o.oId, case isStage
when 0 then ‘未付款‘
when 1 then ‘已付款‘
end case ,endTime, (select sum(goodsnum * (select price * zc from goodsInfo where gid=o1.gId)) "TotalMoney" from orderd o1 where oid = o.oid) as "TotalMoney"
from order o
inner join customer c on c.cid = o.cid;

 

 

2. 创建存储过程pro_InsertProduct:
输入参数:商品名字、价格、折扣、是否新品、现存量
输出参数:商品id
create or replace procedure pro_InsertProduct
(
sname varchar2,
price number,
zc number,
isnew number,
total number,

sIds out number
)
is

begin
sIds :=xu.nextval;
insert into goodsInfo values(xu.nextval,sname,price,zc,isnew,total);
end;*/

 


测试:调用存储过程新增一条商品信息。
declare
sids number;
begin
pro_InsertProduct(‘sdf‘,565,0.2,0,56,sids);
dbms_output.put_line(‘ID号是:‘||sids);
end;

 

 

 


3. 创建函数func_getCustomerCostMoney:该函数通过会员编号计算该会员总的消费金额。
参数:会员编号
返回值:该会员总的消费金额


create or replace function func_getCustomerCostMoney
(
id number
)
return number
is
v_money number(9,3);
begin
select sum(price*zc*goodsnum) prices into v_money from goodsInfo g inner join orderd o1 on g.gid =o1.gid where o1.oid in
(select oid from orderInfo o inner join customer c on id=o.cid);

return v_money;
end;

 


测试:查询所有会员的消费情况:会员编号、会员姓名、注册时间、邮箱、消费金额。
select cId,cName,endtime,email,func_getCustomerCostMoney(cId) totals from customer;

第五阶段:触发器、包
? 新添加一张日志记录表。每次对商品信息进行删除操作时,需要将被删除的商品信息记录到该日志记录表中。要求:使用触发器完成该功能。

create table rizi
(
gId number(20) primary key,
gName varchar2(20),
price number(5,2),
zc number(1,1),
isNew number(10),
total number(20)
);


create or replace trigger tiger_name
after delete on goodsInfo for each row
begin
insert into rizi values(:old.gId,:old.gName,:old.price,:old.zc,:old.isNew,:old.total);
end;

 


? 新创建一个包pack_order。该包内包括:
1. 函数:func_getOrderMoney。该函数根据订单id计算该订单的总金额
参数:订单id
返回值:订单总金额
/*create or replace package pack_order
is
function func_getOrderMoney(dId number) return number;
end;

*/
create or replace package body pack_order
is

function func_getOrderMoney(dId number) return number
is
v_total number(5,2);
begin
select sum(price*zc*goodsnum) prices into v_total from goodsInfo g inner join orderd o1 on g.gid =o1.gid where o1.oid=dId;
return v_total;
end;
end;

 

 

 

测试:查询订单:订单编号、订单状态(显示中文状态)、下单时间、订单总金额
2. 函数:func_getSaleProductCount。该函数能够根据商品id计算其销售数量。
参数:商品id
返回值:销售数量

 


create or replace function func_getSaleProductCount(ids number)
return number
is
v_snum number(10);
begin

select sum(goodsnum) s into v_snum from orderd o where o.gid=ids;
return v_snum;
end;

 

 


测试:查询销量前10名的商品信息,并按销售数量倒序排列。
商品id、商品名称、商品价格、销量

Oracle题目

标签:

热心网友 时间:2022-04-08 21:59

1、select sex,sum(mark) from employee group by sex
2、select name,(case when mark>90 then '优' when mark > 80 then '良' else '其他' END)as level from employee
3、select * from employee where name in(select name from employee group by name having count(name)>1)
4、select * from (select sex,count(*) as total from employee group by sex)t where t.total>10

热心网友 时间:2022-04-08 23:17

汉字部分为表名和字段,请替换即可:
1、select sum(decode(职工性别,'0',分数,0)) "男总分",sum(decode(职工性别,'1',分数,0)) "女总分" from 职工表;
2、select 职员编号,职员姓名,职员性别,职员年龄,分数,case when 分数 > 90 then '优' when 分数 > 80 and 分数 <= 90 then '良' else '其他' end from 职工表;
3、select * from 职工表 where 职员姓名 in (select 职员姓名 from 职工表 group by 职员姓名 having count(1) > 1);
4、select 职员性别,count(1) “职工数” from 职工表 where 职员性别 = (select 职员性别 from (select 职员性别,count(1) "职工数" from 职工表 group by 职员性别 order by 职工数 desc) where rownum = 1) group by 职员性别;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绿茶要猛冲吗,绿茶鲜嫩不需要(绿茶冲泡的正确方式) 绿茶为什么越好越不耐泡 绿茶要泡几泡?哪种绿茶最耐泡? 哪种绿茶最耐泡 职场故事:美女职员遇到暴躁老板 老板脾气坏得要命,我该怎么办 老板老爱发脾气,我们应该怎么做呀? 害怕老总发脾气怎么办 网络上用名字测和另一个人的关系准确吗 一个男生把自己的名字和另一个人的名字放在一起,中间放个"&amp;"符号... 平安保险金卡首年什么时候扣年费 崭新的生活作文五百字左右. 以关注生活为话题的作文500字! 急需一篇 关于家庭生活的作文500字左右!! 生活的启示作文 500字 急急急!!! 真实的生活 作文 500字 在线等 作文生活是美丽的五百字。 以“生活”为主题的作文,500字左右 1道Oracle题目。选什么?为什么? win7系统下载就到系统城? Win7 旗舰版 下载 win7旗舰版系统下载 奇瑞风云2遥控钥匙的功能 奇瑞风云2怎么样 《奇瑞风云2》保养提示扳手怎么消除? 11年的奇瑞风云2,这个是调节什么的? 奇瑞风云2保养提示扳手怎么消除? 奇瑞风云2动力怎么增强 奇瑞风云2伴你回家功能怎么用 奇瑞风云2优点与缺点 怎样煮的粉好吃又简单 怎么样 可以得粉 “千禧粉”究竟是一种怎样的粉 怎样的色粉才是好? 怎样煮粉才好吃 汤粉怎样做粉才有味 中国书法家孙启峰简介 几个天津作家的简介 张峰的张峰简介 一般体育器材店有双截棍卖吗?贵不贵? 体育器材跳高栏,秒表,接力棒的价格分别是多少? 陈元龙的从艺简介 海底里面有哪些东西?(有多少说多少) 高鸿源的个人简介 海底深处有什么东西? 大彩虹乒乓球桌的价格有谁清楚的吗 李秀林的人物简介 海底下面都有什么东西动物 王文杰的个人简介 请问这个体育器材是什么.多小钱