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:数据文件(数据表+数据) # 总结