首页 > 数据库 >Oracle数据库知识总结

Oracle数据库知识总结

时间:2022-11-04 18:39:30浏览次数:66  
标签:总结 -- 数据库 object SYSVAR session Oracle null E1


一、Sql语句

1.1 查询语句

  1. order排序(其中含有null)
    查询雇员的奖金并做降序排序(关于nulls first/nulls last)
    ​​​select ename, comm from emp order by comm desc nulls last;​

其中null的数据排序默认为​​nulls first​​ 排在前面

二、创建自动增长序列

-- 创建自动增长序列
CREATE SEQUENCE INCREASE_SEQUENCE_A
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;

-- 创建触发器
CREATE TRIGGER A BEFORE
INSERT ON A FOR EACH ROW WHEN(NEW.SEQNO IS NULL)
BEGIN
SELECT INCREASE_SEQUENCE_A.NEXTVAL INTO:NEW.SEQNO FROM DUAL;
END;

INSERT INTO A(AGENTCODE,ASSESSTYPE,Yearmonth,Actualcheckdays,Managecom) VALUES('G1241213','01','202011',12.12,'860012')
INSERT INTO A(AGENTCODE,ASSESSTYPE,Yearmonth,Actualcheckdays,Managecom) VALUES('G1241213','01','202011',12.12,'860012')

三、解决查询时for update PL/SQL执行很久无结果问题

在执行​​select * from laagent for update​​​这条sql时, 会执行很久也没有反应, 经过Google, 找到原因是
由于在PL/SQL执行update时没有commit, Oracle将这条记录锁住了

原文链接: ​​oracle执行update时卡死问题的解决办法​​

可以通过以下办法解决:
先查询锁定记录
Sql代码

SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;

然后删除锁定记录
Sql代码

-- ALTER system KILL session 'SID,serial#';  
-- 其中 SID填写上文中查到的SID数值, serial#填写 serial#列的数值如:
ALTER system KILL session '214,23456';

​Oracle 中for update和for update nowait的区别​

Oracle数据库知识总结_sql

  1. 解决锁表第二个方法
--查哪些表锁了
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
--- 2 ,查看是哪个session引起的

select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;


--- 3 ,杀掉对应进程
alter system kill session '102,2042';
alter system kill session 'sid,serial#';

四、插入数据可重复操作的脚本

插入数据时, 如果该表已经执行过一遍脚本, 那么重复执行将会报错, 所以需要在执行脚本之前先删除将要插入的相关数据.

如下实例:

DELETE FROM LDSysVar where SYSVAR='CharFilterRegexpEn';
DELETE FROM LDSysVar where SYSVAR='CharFilterRegexpCn';
DELETE FROM LDSysVar where SYSVAR='CharFilterRegexpSBC';

insert into LDSysVar (SYSVAR, SYSVARTYPE, SYSVARVALUE)
values ('CharFilterRegexpEn', null, '/[`~@#$%\^&*+=|"\\{}]/im');

insert into LDSysVar (SYSVAR, SYSVARTYPE, SYSVARVALUE)
values ('CharFilterRegexpCn', null, '/[·¥——”《》【】…]/im');

insert into LDSysVar (SYSVAR, SYSVARTYPE, SYSVARVALUE)
values ('CharFilterRegexpSBC', null, '/[<>?:"{}|+_)(*&^%$#@!~`-=[]\';/.,]/im');

update lacomcasemultipliersetting
set enddate=date'2020-12-31'
where serialno='S000000040';

commit;

五、给表中添加主键

alter table 表名 
add constraint 主键名称(一般主键名称为”PK_”开头) primary key(要设为主键的列名);
-- 例:
alter table ldsysvar
add constraint PK_SysVar primary key (SYSVAR);

-- 删除添加索引
drop index idx_sysvar;
create index idx_sysvar on ldsysvar(SYSVAR);

六、SQL中的函數

6.1 nvl函數和nvl2函數

nvl函数

nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。

nvl2函数

nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。

NULLIF函数

NULLIF(E1,E2)函数的作用是如果E1和E2相等则返回空(NULL),否则返回E1。

abs函数

表达式:abs(-100)
含义:取绝对值


标签:总结,--,数据库,object,SYSVAR,session,Oracle,null,E1
From: https://blog.51cto.com/u_14233037/5824449

相关文章

  • 高校招生录取系统--数据库设计心得
    数据库设计心得项目介绍高效招生录取系统,主要功能为招生信息的管理与处理,至少要包含两个部分:客户端的招生录取系统以及基于WEB的招生信息发布以及查询系统。团队介绍项......
  • 今日总结
    754.到达终点数字找规律;target=Math.abs(target);目标值无需管正负,因为只需要加一个负号即可intsum=0;intindex=0;while(sum<target){直到大于target为止......
  • 记一次Oracle在导出和导入过程中对ORA-01555/ORA-01628/ORA-30036进行故障排除过程
    那是在2021年7月30日的下午,在整理公司服务器中备份文件时发现的问题当时发现备份的数据虽然有文件,但是日志中存在报错,并且备份出来的文件无法进行还原因为没遇到过这个......
  • OVS 使用总结
    1.简介OpenvSwitch是一个用C语言开发的多层虚拟交换机。1.1工作原理内核模块实现了多个“数据路径”(类似网桥),每个都可以有多个“vports”(类似网桥的端口)。每个数据......
  • 使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
    1、什么是JdbcTemplateSpring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作2、前提准备2.1在项目中引入对应的jar包官网下载jar包、然后加入的项目......
  • 数据库设计心得
    简单介绍我们组的项目是健康码系统,这个系统的特点就是功能繁杂,需要把各个功能都清楚明白的包括进去,而数据库设计本身就是一个需要严谨明晰的工作。这是基础的东西,如果不打......
  • mysql创建数据库经典题型
     【简答题】有一个XSKC数据库,数据库中包括两个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,记为:Student(Sno,Sn......
  • 总结出Java的语法特性
    子类与父类拥有一样的方法,并对象是子类型,就调用子类型的方法,是父类型,就调用父类型的方法子类与父类有相同的字段,子类的字段会代替或隐藏父类的字段,子类方法中访问的是子......
  • Oracle故障处理:Rman delete obsolete报错ORA-19606解决
    在使用rman维护数据库备份记录的时候,通过deleteobsolete命令删除文件的时候发生了ora-19606,具体报错如下:RMAN>deleteobsolete;RMANretentionpolicywillbeappliedto......
  • 一个29+前端2022年年中总结(负债,当爹,找工作)
    作为一个29岁的前端,2022年对我来说总的还是一句话:不管生活多糟糕,日子还是得过的。买房计划自从经历过房东让连夜搬家的事情后,买房的打算就提上日程了。我和老婆两个也算行动......