03oracle学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39823114/article/details/78487195

一.认识dual:

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:

1、查看当前用户,可以在 SQL Plus中执行下面语句

select user from dual;

2、用来调用系统函数

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间

select dbms_random.random from dual; --获得一个随机数

3、得到序列的下一个值或当前值,用下面语句

select seq_msg.nextval from dual;--获得序列your_sequence的下一个值

select seq_msg.currval from dual;--获得序列your_sequence的当前值

--根据序列计算当前id
select seq_msg.nextval into v_id from dual;

4、可以用做计算器

select 7*9 from dual;

二、存储过程:

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

Oracle存储过程可以有无参数存储过程和带参数存储过程。
1、无参:
create or replace procedure pro_1(无参)
 as
 v_id integer;
 v_sumage integer;
 v_avgage integer;
 begin
 --根据序列计算当前id
-- select m_user.nextval into v_id from dual;
 --计算当前总年龄
 select sum(vAge) into v_sumage from v_student;
 --计算平均年龄
 select avg(vAge) into v_avgage  from v_student;
 --往汇总表插入数据
 insert into v_total(id,totalage,avgage)values(1,v_sumage,v_avgage);
 exception 
 when others then
 rollback;
 end;
declare  --调用
begin
pro_1();
end;
 2、有参:
create or replace procedure pro_add( 
num1 in integer,
num2 in integer,
v_sum out integer

)as
begin
v_sum:=num1+num2;
commit;
exception
 when others then
 rollback;
 end;
declare 
v_sum integer;
begin
pro_add(3,4,v_sum);
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
三、函数:


四:高级查询:

聚合函数:

select max(stu_score),min(stu_id),avg(stu_score),sum(stu_score),count(stu_id) from student;

转换为字符:

select to_char(sysdate,'yyyy-mm-dd') from dual;

生成随机数并取整

select floor(dbms_random.value(100,1000)) from dual;

生成0-1间的随机数

select dbms_random.value from dual;

分组

select deptno, avg(sal) from emp group by deptno; 


显示员工的名字、工资及部门的名称,并按部门名称升序排序
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno order by d.deptno;








猜你喜欢

转载自blog.csdn.net/qq_39823114/article/details/78487195