oracle(pl/sql)

create  table  stu2

(

  sid  number(4) primary key,

  sname  varchar2(200) not null,

  sage   number(3),

  did  number(4)

)

insert into stu2 values(1,'aaa',19,1);
insert into stu2 values(2,'小明',27,1);
insert into stu2 values(3,'小红',15,1);
insert into stu2 values(4,'ccc',50,2);
insert into stu2 values(5,'ddd',50,2);
insert into stu2 values(6,'大大',72,2);
insert into stu2 values(7,'小小',10,3);
insert into stu2 values(8,'明明',27,3);

/*

需求:按照部门统计   排名(显示id,姓名,所属的班级.....)   利用分析函数

*/

--row_number()   分析函数    先分组,后连续编号

select  t.*,row_number()  over(partition  by t.did  order by  t.sage  desc)as 排名    from  stu2  t 

--rank()  值相等的情况  编号相同  编号不连续  往后跳跃

select  t.*,rank()  over(partition by t.did  order by t.sage desc)as 排名  from stu2 t;

--dense_rank   值相等的情况下    编号相同     编号不跳跃

select t.*,dense_rank() over(partition by t.did order by t.sage) as 排名 from stu2 t;

 

--1:等值连接  简写

select * from stu a,grade b where a.gid=b.gid;

--inner join  内连接

select * from stu a
inner join grade b on a.gid=b.gid;

简写: select * from stu a,grade b where  a.gid=b.gid;

--左外连接     区分主表和从表

select * from stu a
left outer join grade b on a.gid=b.gid;

另一种写法:

select * from stu a,grade b where a.gid=b.gid(+); 

右外连接:

select * from stu a,grade b where a.gid(+)=b.gid;

--全连接 类似于外连接:只要有的数据全部显示出来!

select * from stu a
full join grade b on a.gid=b.gid;

 

--创建一个序列
create sequence seq_abc_id
       start with 1
       increment by 1
insert into abc values(seq_abc_id.nextval,'小明');
insert into abc values(seq_abc_id.nextval,'大明');
commit;
 

--从0开始算起
create sequence seq_abc_id;

 

--创建一个视图
create or replace view vw_info1
as 
       select * from info;

select * from vw_info1;

 

 

--pl/sql程序块
declare
       v_name varchar2(20);--定义一个变量
begin
       --赋值
       v_name := '宋江';
       dbms_output.put_line('姓名:'||v_name);
end;

--plsql编程方式输入id取出姓名?
declare
       v_id number(4);
       v_name varchar2(20);
begin
       v_id:='&请输入编号:';
       select sname into v_name from stu where sid=v_id;
       dbms_output.put_line('取出的姓名:'||v_name);
end;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brid_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值