控制台操作4------函数
字符串函数
--大写转小写
select lower('HELLO WORLD') from dual;
--小写转大写
select upper('hello world') from dual;
--将首字母转换为大写
select initcap('hello world') from dual;
结果Hello World 如果有空格,它会将后面的单词的首字母也变成大写
--查询指定字符在字符串的位置 instr('字符串','字符')
select instr('hello world','l') from dual; //结果是3 从1下标开始算
--字符串的填充 左填充
select lpad('0088','11','*') from dual;//在0088的左边填充*,一直填充到长度是11
--右填充
select rpad('4306','18','*') from dual;//在4306的右边填充*,一直到字符有18位
--字符串的截取
select substr('hello world','3') from dual;//从3开始截取,一直到最后
select substr('hello world','1','5') from dual;//从1开始截取到5的位置
--字符串的替换
select replace('hello world','l','*') from dual;//将l的字符替换成*
--字符转数字 只能是纯数字的字符才能转数字
select to_number('2019') from dual;
数学函数
--四舍五入
select round(-57.6) from dual;//结果是-57
select round(-57.6478,'2') from dual;//结果是-57.65 四舍五入小数点后面的2位
--截断
select trunc('73.1243','2') from dual;//结果是73.12 直接截取小数点后面两位
--取模
select mod(10,3) from dual;//结果是1 10/3于1
日期函数
--字符串转时间类型
select to_date('2019-02-05','yyyy-mm-dd') from dual;
--时间类型转字符串类型
select to_char(sysdate,'yyyy-mm-dd HH24:mm:ss') from dual;
--计算员工表的入职的月数,
select months_between(sysdate,hiredate) from emp;
--找出一个月的最后一天
select last_day(sysdate) from dual;
--找出下一个星期日 可以写星期一 星期二 星期三 星期四 星期五 星期六
select next_day(sysdate,'星期日') from dual;
Oracle的锁机制
悲观锁 乐观锁 死锁
悲观锁
给数据库一张表或者是一条数据上锁,如果上一个人没有操作完,下一个人只能等,等上一个人操作完后,下一个人才能操作。
上锁:for update;
select * from emp where empno=7369 for update;给empno=7369的数据上锁
解锁:1.事务回滚 rollback; 2.提交事务 commit;
乐观锁
不手动进行锁的操作,在表中加字段,代表表的数据的版本,版本为1,说明是最初的版本,还没有操作,如果有人对该数据操作,也要操作修改版本号。
死锁
你不能解锁操作,别人也不能解锁操作
解决死锁:重启服务器