03oracle学习笔记

来源:互联网 发布:佛山房产网签数据 编辑:程序博客网 时间:2024/06/07 04:41

一.认识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  --调用beginpro_1();end;
 2、有参:
create or replace procedure pro_add( num1 in integer,num2 in integer,v_sum out integer)asbeginv_sum:=num1+num2;commit;exception when others then rollback; end;
declare v_sum integer;beginpro_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;