Oracle复习课

简介: Oracle复习课

5-Oracle复习

回顾

1、定义过程:

实现往银行表中录入1条数据(输入参数),如果存在同名账号提示错误,否则录入,并输出表中的总条数(输出参数)

--调用
begin
           sp_zhuanzhang4(2,2000,'张三','李四');
  end;
select * from bank;
create or replace procedure sp_addbank
(
       vid in number,
       vname in varchar2,
       vmoney in number,
       vcount out number
)
as
 --声明变量
       vcnt number(3);
 begin
       select count(*) into vcnt from bank where name=vname;
       if vcnt>0 then
          raise_application_error(-20001,'重名');
       else
                 insert into bank(id,name,balance) values(100,vname,vmoney);
                 commit;
        end if;
      select count(*) into vcount from bank;
      -- exception 
         --  when others then
               -- dbms_output.put_line('错误');
   end;
   declare
                vcount number(5);
   begin
                sp_addbank(100,'小白',5000,vcount);
                dbms_output.put_line('结果是:'||vcount);
   end;

2、模拟转账:输入参数1:张三 转 李四 输入参数2:李四转 张三 ,转账的金额通过输入参数指定;

--测试
create or replace procedure sp_zhuanzhang4
(
       flag in number,
       money in number,
       fromUser in varchar2,
       toUser in varchar2
)
as
begin
       if flag=1 then
          update bank set balance=balance-money where name=fromUser;
          update bank set balance=balance+money where name=toUser;
         else
             update bank set balance=balance-money where name=toUser;
             update bank set balance=balance+money where name=fromUser;
       end if;
       commit;
       exception
         when others then
           rollback;
  end;
--调用
begin
           sp_zhuanzhang4(2,2000,'张三','李四');
  end;

复习内容

1、序列

mysql中有自增列;

oracle并没有自增列,如果用数字列当主键,序号自动生成:序列;

序列:一串数字的生成器;数字不会重复。

create sequence seq331
start with 1 --从1开始
increment by 1; --递增1

使用:

select seq331.currval from dual; --必须先执行nextval才可以使用该属性
select seq331.nextval from dual; --生成一个数字
insert into bank(id,name,balance) values(seq331.nextval,'金莲',5000);
commit;

2、网络连接

监听:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vILuemWm-1601737262763)(5、Oracle复习.assets/image-20200918154308542.png)]

网络连接基本原理分析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APnt5BYA-1601737262770)(5、Oracle复习.assets/image-20200918154836456.png)]

3、常用函数

字符串函数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21yFjdqO-1601737262776)(5、Oracle复习.assets/image-20200918165524640.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AI2nVoLl-1601737262786)(5、Oracle复习.assets/image-20200918165545547.png)]

栗子:

select concat('我喜欢','运动') from dual;
declare
 str varchar2(100);
begin
     str:=concat('你喜欢','睡眠');
     dbms_output.put_line(str);
  end;
select concat(concat(ename,job),sal) 备注 from emp;
-- 首字母大写
select initcap(ename),initcap(job) from emp;
select ename, length(ename) 长度,lower(ename) 小写,upper(ename) 大写 from emp;
--左测填充
select lpad(ename,20,'*') from emp;
--默认删除左侧的空格,删除指定的左侧的字符:-
select ltrim('          动漫'),ltrim('--------------动漫','-') from dual;
--默认字符串的位置从1开始:原始字符串,开始位置,截取的长度
select substr('我喜欢看动作片',2,2) 截取 from dual;
--替换 原字符串中 存在的字符
select replace(ename,'金莲','潘金莲') from emp;
update emp set ename=replace(ename,'郎','王');
select * from emp;

数学函数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G43ZF207-1601737262792)(5、Oracle复习.assets/image-20200918174123448.png)]

--ceil 向上取整:返回>=当前数字的最小整数
-- floor:向下取整 ,返回<=当前数字的最大整数
select ceil(3.99) ,floor(3.19) from dual;
--正数:对小数点之后进行操作
--负数:对小数点之前进行操作
--round:四舍五入,trunc:截取
select round(3.697,1),round(399.123,-1) from dual;
select trunc(3.697,2),trunc(399.123,-3) from dual;

日期函数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4MCLUyd-1601737262795)(5、Oracle复习.assets/image-20200918174300344.png)]

--add_months(sysdate,-1):在指定的日期上增加指定的月份(正、负),返回的是日期类型
select sysdate,add_months(sysdate,-1) from dual;
--last_day:月份的最后一天
select last_day(sysdate) from dual;
--months_between('日期类型,'日期类型')
--to_date:将字符串 ---》日期类型
select to_date('2020-9-18','yyyy-MM-dd') from dual;
select months_between(sysdate,to_date('2020-8-18','yyyy-MM-dd')) from dual;
--截取到日期的某一位
select trunc(sysdate,'dd') from dual;
--to_char:将日期转成字符串
select to_char(sysdate,'yyyy-MM-dd') 日期转字符串 from dual;
select * from emp;
-- 查询入职时间超过一年的员工
select * from emp where months_between(sysdate,hiredate)>12;
-- 查询本年入职的员工
select hiredate,trunc(hiredate,'yyyy') from emp 
where trunc(hiredate,'yyyy')=trunc(sysdate,'yyyy');

4、表空间

oracle数据库:

数据库实例:orcl: 物理文件+内存空间+进程

物理文件:.tcl:事务控制文件 .log:日志文件 .dbf:数据文件(数据表+数据)

select hiredate,trunc(hiredate,‘yyyy’) from emp
where trunc(hiredate,‘yyyy’)=trunc(sysdate,‘yyyy’);
## 4、表空间
oracle数据库:
数据库实例:orcl: 物理文件+内存空间+进程
  物理文件:.tcl:事务控制文件 .log:日志文件 .dbf:数据文件(数据表+数据)
# 总结


目录
相关文章
|
7月前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
233 0
|
1月前
|
SQL 存储 Oracle
[Oracle]知识点
本文主要介绍了Oracle数据库的相关知识点,包括数据类型、视图的使用及注意事项,并提供了详细的示例和扩展阅读链接。内容涵盖char族数据类型、number(a, b)数据类型、视图的创建与管理等,适合初学者和进阶用户参考学习。
55 4
[Oracle]知识点
|
6月前
|
SQL 存储 Oracle
老程序员分享:Oracle易忘知识点记录
老程序员分享:Oracle易忘知识点记录
|
7月前
|
SQL Oracle 关系型数据库
oracle基本笔记整理
oracle基本笔记整理
|
7月前
|
SQL Oracle 关系型数据库
oracle笔记整理2
oracle笔记整理2
|
存储 SQL Oracle
oracle知识点总结
oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或B/S体系结构的数据库之一,oracle数据库时目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完善的数据库管理功能,是关系型数据库,比mysql更为庞大,在现行的关系型数据库中排名第一(oracle、mysql、SqlServer),时间是最为精确的。
109 0
|
SQL Oracle 关系型数据库
oracle基本笔记整理3
oracle基本笔记整理3
133 0
|
移动开发 运维 Oracle
oracle笔记整理5
oracle笔记整理5
98 0
|
SQL Oracle 关系型数据库
oracle基本笔记整理2
oracle基本笔记整理2
110 0
|
存储 SQL 监控
Oracle学习路线与方法
中国有30万Oracle DBA,我作为一个Oracle DBA老鸟,分享下Oracle的学习路线。
Oracle学习路线与方法