![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle数据库
文章平均质量分 59
何以解忧,唯有..
这个作者很懒,什么都没留下…
展开
-
Oracle 中排序函数总结
rank()和row_number() 函数用法类似,但是rank()生成的序号是同值同序的不连续序号,即如果出现相同的值,那么序号是一样的。dense_rank()与rank()的区别在于,dense_rank()生成的序号是连续的。先排序再确定序号,会根据 partition 分区,在每一个小分区内部取序号。原创 2023-12-07 16:20:33 · 989 阅读 · 0 评论 -
Oracle中 Procedure sql%notfound
sql%notfound 是一个布尔值,与最接近的sql语句(update、insert、delete、select)发生交互,当最近的一条sql语句没有涉及到任何行的时候,返回true,否则返回false。原创 2023-12-06 17:07:50 · 463 阅读 · 0 评论 -
Oracle 中换行chr(10)、回车chr(13)
chr(n):返回 ascii 值对应的字符。ascii(char):返回字符 char对应的ascii 值。chr(n) 和 ascii(char) 作用刚好是相反的。控制台显示:A控制台显示:65。原创 2023-12-04 16:24:54 · 1902 阅读 · 0 评论 -
Oracle的数据一致性机制原理
在单用户环境下,在操作数据库是不需要考虑其他用户会修改同一个数据。但是在多用户的情况下,多个事务可能会修改同一个数据,最终会得到错误的数据结果。Oracle数据库是通过 multiversion consistency model(多版本数据一致性模型)、还有不同类型的锁、事务隔离保证数据的一致性。通过这种方式,数据库可以向多个并发用户提供在某一个时间点所对应的数据库数据。由于不同版本的数据块可以同时存在,事务可以查询所需时间点已经提交的数据版本,并返回对应时间点已提交的数据查询结果。原创 2023-12-04 14:40:57 · 418 阅读 · 0 评论 -
Oracle 如何修改当前的序列值
序列对象有三个重要的属性:起始值、增量和最大值。起始值是序列生成的第一个值,增量是序列每次生成的值的增量,最大值是序列可以生成的最大值。这些属性可以在创建序列时设置,也可以在创建后随时更改。1、修改当前的序列值要修改Oracle序列的当前值,可以使用ALTER SEQUENCE语句。该语句需要指定序列的名称和新的当前值。注意,该语句只修改序列的当前值,不影响序列的起始值、增量或最大值。2、要修改序列对象的属性,可以使用ALTER SEQUENCE语句的其他选项。2.1、修改序列起始值。原创 2023-11-16 11:21:56 · 5308 阅读 · 0 评论 -
Oracle 中排序碰到 null 值如何处理
Oracle 在 Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前。原创 2023-11-14 16:30:49 · 843 阅读 · 0 评论 -
oracle 中 %TYPE %ROWTYPE
PL/SQL 提供了 %TYPE 和 %ROWTYPE 两种特殊的变量,用于声明与表的列相匹配的变量和用户定义数据类型,前一个表示单属性的数据类型,后一个表示整个属性列表的结构,即元组的类型。-- 数据表TB_TRANS_RECORD-- 定义一个与表TB_TRANS_RECORD中FEE类型相同的变量DECLARE-- 定义一个与表TB_TRANS_RECORD结构相同的数组DECLARE-- 为数组中的变量赋值BEGIN。原创 2023-11-10 15:55:28 · 1312 阅读 · 0 评论 -
oracle中分组函数LISTAGG
Oracle中的 GROUP_CONCAT 函数用于将多行数据合并为一行,并以指定的分隔符分隔各个值。在Oracle中,没有直接的GROUP_CONCAT函数,但可以使用 LISTAGG 函数来实现类似的功能。原创 2023-11-10 13:43:01 · 780 阅读 · 0 评论 -
Oracle数据中如何在 where in() 条件传参
在sql 条件中,如何在 where in()中想传入参数,如果直接 where in(:seqList),当传入单个值,seqList:= ‘80’ 是没问题的,但是初入多个值时,seqList:= ‘80,90’ ,因缺少单引号,导致查询结果不对。使用正则变换函数 regexp_substr()测试数据: 20,30,40。原创 2023-10-20 16:03:24 · 1340 阅读 · 0 评论 -
Oracl之动态Sql编写总结
在通常的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename FROM scott.emp t WHERE t.deptno = 20;但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态SQl,如: 当 from 后的表 不确定时,或者where 后的条件不确定时,都需要用到动态SQL。使用。原创 2023-05-31 15:57:34 · 1490 阅读 · 0 评论 -
Oracle 数据库表中已有重复数据如何添加唯一键(唯一约束)
通过以上表中数据可以看出 code 是有重复数据的,此时如果我们直接添加唯一键,会报错。表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引。以 demo 举例,模拟真实场景。原创 2023-03-15 11:32:26 · 1886 阅读 · 0 评论 -
pl/sql 关于异常处理
异常分为三类,预定义异常、非预定义异常、自定义异常。注意:三种异常的区别,前两种异常是违反了oracle的规则,用户自定义异常是违反了用户定义的规则。ORACLE预定义的异常情况大约有21个。对这种异常情况的处理,无需在程序中定义声明,由ORACLE自动将其引发。常见的异常有:1、no_data_found 无数据找到2、too_many_rows 返回多条数据3、zero divide 除数不能零4、cursor_already_open 打开已经打开的游标。原创 2023-02-20 10:46:26 · 672 阅读 · 0 评论 -
Oracle 中的定时任务
job 的 id,此id不是随便填写的,而是执行select * from user_jobs;查询到定时任务名称对应的 id。1、declare后面的 jobno 是一个数字类型,主要的用途是给定时器保存id,下面的job 引用此 jobno。2、job:输出变量,是此任务在任务队列中的编号;3、what:执行的任务的名称及其输入参数;5、interval:任务执行的时间间隔。4、next_date:任务执行的时间;原创 2022-12-09 17:33:28 · 13514 阅读 · 0 评论 -
Oracle中查看触发器使用到的SQL
1.1、查all_triggers表得到trigger_name1.2、根据trigger_name查询出触发器详细信息1.3、在Oracle数据库中查询所有触发器、存储过程、视图、表方法1:方法2:原创 2022-12-07 20:51:09 · 3236 阅读 · 0 评论 -
Oracle数据库查询唯一约束、索引
查询外键约束的列名:查询引用表的键的列名:五、查询表的所有列及其属性查询Oracle表的信息(表,字段,约束,索引)1、查询出所有的用户表select * from user_tables 可以查询出所有的用户表2、查询出用户所有表的索引select * from user_indexes3、查询用户表的索引(非聚集索引):select * from user_indexes where uniqueness=‘NONUNIQUE’4、查询用户表的主原创 2022-12-03 22:36:22 · 5152 阅读 · 0 评论 -
SQL中正则表达式的运用
1.1、REGEXP_LIKE 匹配:REGEXP_LIKE(String, Regexp)举例:查询结果:1.2、REGEXP_INSTR 包含Oracle数据库中的REGEXP_INSTR函数的语法是:source_char:搜索值的字符表达式,可以是任何数据类型CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB的。pattern:正则表达式position:可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第一个位置。occurrence:可选原创 2022-12-03 16:13:47 · 12382 阅读 · 0 评论 -
Oracle 中用sql语句查看外键约束和表结构
constraint_type:表示约束类型,R表示外键,P表示主键。constraint_name:表示约束名称。原创 2022-12-02 11:21:12 · 8742 阅读 · 0 评论 -
Oracle中的dual表
2、DUAL表是一个单行单列的虚拟表,这个表只有1列DUMMY,数据类型为VARCHAR2(1),不论执行什么操作(不要删除记录),它都只有一条记录——“X”,Oracle有内部逻辑保证DUAL表中只有一条数据。1、DUAL表是Oracle提供的最小的工作表,是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。4、dual是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中。2、查看当前日期、时间。1、查看当前连接用户。原创 2022-11-28 10:28:45 · 1970 阅读 · 0 评论 -
了解 Oracle 中的主键和外键
例如超女基本信息表,编号的字段名是id,在超女选秀活动中,每个超女的编号肯定是唯一的,不可能存在两个编号相同的超女,否则会引起混乱,我们可以把id字段设置为T_GIRL表的主键,后面的工作交给数据库,如果试图往表中插入多条id相同的记录,数据库将拒绝。在Oracle数据库中,虽然主键不是必需的,但是最好为每个表都设置一个主键,不管是单字段主键还是多字段主键(复合主键),它的存在代表了表结构的完整性,主键还可以用于其他表的外键关联,外键的知识下面再介绍。对超女基本信息表来说,赛区代码是该表的外键。原创 2022-11-20 23:07:00 · 4159 阅读 · 0 评论 -
了解 Oracle 中的视图
当创建视图后,Oracle会验证视图的有效性,如修改了基本表,可能会导致视图的不可用,数据字典的USER_OBJECTS的status字段中记录了视图的状态(VALID-有效;视图是基于一个或者多个表上的预定义查询,这些表称为基表,从视图中查询数据的方法与从基表中查询数据的方法相同。视图是一个查看数据的窗口,是查询语句模板,视图本身没有数据,在数据库中只保存了视图的定义。即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。3)查询视图的状态,成了INVALID。原创 2022-11-20 22:46:44 · 3353 阅读 · 0 评论 -
Oracle 中常用的字符串函数总结
从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指定位置start_pos截取字符串string。从字符串string的指定位置start_pos开始查询子串sub_string第times次出现的位置。与trim类似,去掉前导使用关键字leading,去掉后缀使用关键字trailing,都去除不实用关键字。start_pos等于0或者1均从左边第一位开始截取。如果start_pos为负整数,则从右截取字符串。trim 去字符串首尾空格。原创 2022-10-26 15:00:42 · 10173 阅读 · 0 评论 -
Oracle 中的 程序包
程序包(PACKAGE,简称包)是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来标识包。它具有面向对象程序设计语言的特点,是对这些PL/SQL 程序设计元素的封装。包类似于c#和JAVA语言中的类,其中变量相当于类中的成员变量,过程和函数相当于类方法。把相关的模块归类成为包,可使开发人员利用面向对象的方法进行存储过程的开发,从而提高系统性能。原创 2022-10-26 11:40:35 · 1324 阅读 · 0 评论 -
Oracle 触发器详解
可以在触发器体的语句块中使用 inserting、updating、deleting谓词,这些谓词会返回相应的DML操作的布尔值,如果为true,则表示执行了相应的insert、update、delete操作。new谓词:执行后的字段的值的名称,比如update一个表时,使用:new.columnname是指执行 update操作之后的列的值。old谓词:执行前的字段的值的名称,比如update一个表时,使用:old.columnname是指执行update操作之前的列的值。原创 2022-10-24 23:07:08 · 17629 阅读 · 0 评论 -
Oracle 中常用的函数总结
Oracle 常用函数的总结原创 2022-10-24 11:07:14 · 1616 阅读 · 0 评论 -
Oracle 中的外键约束
在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个。打个比喻。外键是指定义外键的表的列的值必须在还有一个表中出现。被參照的表称之为父表(parent table),创建外键的表称之为子表(child table)。子表中的外键关联了父表中的主键。外键能够在创建表时定义或者通过ALTER TABLE语句创建。外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。原创 2022-10-14 09:35:46 · 3240 阅读 · 1 评论 -
Oracle 中的 PL/SQL
PL/SQL语句在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有了过程处理的能力。end;和学其他语言一样,在最开始的时候我们试一试打印hello world!begin-- 设置控制台输出内容可见');end;原创 2022-09-09 13:44:12 · 467 阅读 · 0 评论 -
Oracle 中的伪列
在 Oracle 的表使用过程中,实际上表中还有一些附加的列,称为伪列。伪列就像表中的列一样可以显示出来,但是并不在表中存储。伪列只能用来查询,不能进行增删改操作。ROWID与ROWNUM的不同:1、ROWID是物理地址,ROWNUM是行号;2、ROWID是插入数据时生成的,而ROWNUM是查询数据时生成的!原创 2022-09-09 11:03:52 · 2313 阅读 · 0 评论 -
Oracle 中的索引
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。1.1、索引的特点1)索引是表的一部分,是可选的,表可以没有索引,就像书可以没有目录一样,数据库不做强制要求。2)合理的索引可以提高数据查找的效率,减少磁盘I/O。3)唯一索引可以约束表数据的完整性。原创 2022-09-09 10:49:03 · 3833 阅读 · 0 评论 -
Oracle 中的序列
序列 (SEQUENCE) 是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。mysql有自增主键,oracle没有、就用序列。原创 2022-09-09 10:04:16 · 2217 阅读 · 0 评论 -
Oracle 创建表语句
oracle 创建表时,表名称会自动转换成大写,oracle 对表名称的大小写不敏感。1、必须以字母开头2、长度不能超过30个字符3、避免使用 Oracle 的关键字4、只能使用A-Z、a-z、0-9、_#S。原创 2022-09-08 10:02:16 · 24752 阅读 · 0 评论 -
Oracle 的常用数据类型
Oracle 数据库内置的数据类型可分为6类:字符类型、数值类型、日期类型、 LOB 类型、二进制类型和行类型。原创 2022-09-08 09:33:03 · 8733 阅读 · 0 评论