
oracle
文章平均质量分 54
梁萌
认真是一种态度
展开
-
oracle删除表中重复数据
删除wfd_procs_nodes_rwk表中,huser_id、dnode_id、rwk_name字段值相同的记录,如果有多条,只保留一条。原创 2025-03-17 13:06:38 · 322 阅读 · 0 评论 -
Oracle 查找带有CLOB字段的所有表
SELECTDATA_TYPE,TABLE_NAME。原创 2024-10-30 10:40:23 · 617 阅读 · 0 评论 -
oracle中使用临时表GLOBAL TEMPORARY TABLE
在存储过程中先将临时表清空,然后再往临时表插入记录,不然数据会重复插入。原创 2024-06-17 22:11:58 · 728 阅读 · 0 评论 -
ORA-01017: invalid username/password; logon denied
使用PL/SQL可以正常连接。windows服务报错。原创 2024-03-15 20:07:29 · 272 阅读 · 0 评论 -
oracle物化视图
视图是一个虚拟表(也可以认为是一条语句),基于它创建时指定的查询语句返回的结果集,每次访问它都会导致这个查询语句被执行一次,为了避免每次访问都执行这个查询,可以将这个查询结果集存储到一个物化视图(也叫实体化视图)。物化视图与普通视图相比的区别是物化视图是建立的副本,它类似于一张表,需要占用存储空间,对一个物化视图查询的执行效率与查询一个表是一样的。物化视图的优点是查询速度快,因为数据已经存在,查询物化视图就等同于查询一张表的数据。原创 2024-01-01 19:07:45 · 1985 阅读 · 0 评论 -
java maven项目添加oracle jdbc的依赖
一般添加依赖是直接在pom.xml中添加配置即可,Maven会自动获取对应的jar包,但是oracle驱动依赖添加后会显示红色,代表找不到依赖项,是因为Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库。需要注意的是 -Dfile后面的值,是自己电脑上第一步oracle的文件路径。2.cmd窗口,执行安装命令。原创 2023-12-31 19:06:42 · 2543 阅读 · 0 评论 -
oracle即时客户端(Instant Client)安装与配置
如果不想安装oracle客户端,还想能够连接oracle远程服务,进行数据库操作,那么Oracle Instant Client是一个解决方案。Oracle Instant Client是Oracle发布的轻量级数据库客户端,它大大简化了客户端的安装过程,占用空间极少,却包括必备的OCI、OCCI接口和ODBC、JDBC driver。Instant Client不需要进行安装,只需要下载对应的文件,然后进行相关配置,即可连接远程数据库。原创 2023-12-23 22:20:32 · 42701 阅读 · 9 评论 -
oracle数据库备份2(expdp)
expdp 数据库用户名称/数据库用户密码@服务器地址/数据库实例名称 schemas=数据库名称 dumpfile=生成的dmp文件名称 directory=生成文件存放路径 logfile=生成log日志文件的名称。下面记录下使用更加高效的expdp命令和impdp,这两个命令同样是用来做数据库备份和还原的,但速度更快,效率更高,缺点是只能用在服务器端进行操作,exp可以用在客户端进行操作。上面命令的含义是创建名称为BACKUP_DIR的文件夹,文件地址为'C:\db_back'原创 2023-11-28 12:15:09 · 3947 阅读 · 1 评论 -
使用navicate快速将Excel中的数据导入到数据库
这种方式速度还是很快的,18万条数据,3分钟左右就导入进去了。表名称上右键,导入向导。原创 2023-09-07 20:47:31 · 867 阅读 · 1 评论 -
Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
在启动oracle的服务OracleOraDb11g_home1TNSListener时,提示服务启动后又停止了。以上两个文件,对应的HOST的值,都改为127.0.0.1。然后再启动服务,启动成功。原创 2023-08-27 23:53:26 · 3572 阅读 · 1 评论 -
Oracle数据库后悔药之数据回退
在使用plsql工具,对数据的表数据进行操作后,提交了事务,发现数据更新或者删除错了,这时候还是有方法可以把数据回退的,下面进行操作。更新后的数据如上图所示,全部记录都被更新了,事务也提交了(数据库的数据已经被修改)。现在对SAL字段进行更新,原本想更新一条数据,现在没有加where条件,误将所有记录都更新。--如果闪回恢复数据提示:因为未启用行移动功能,不能闪回表。执行以下语句,允许行移动。如果闪回恢复数据提示:因为未启用行移动功能,不能闪回表。再次执行闪回恢复数据的SQL。--查询指定时刻的数据。原创 2023-08-20 14:03:31 · 2850 阅读 · 0 评论 -
oracle数据库dbLink的使用
它可以让你在一个数据库中访问另一个数据库的对象和数据,就像它们属于同一个数据库一样。代表创建一个公共的数据库链路,名称为link_scott,连接指向orcl实例下面的scott用户,tiger为scott用户的密码。如果要简化查询语句的写法,则可以创建同义词(sys用户操作,也可以赋权给test1,语法为GRANT CREATE SYNONYM TO TEST1;为另外一个数据库用户创建一个数据库链接。1.将scott用户中emp表的查询权限给test1用户(sys用户操作)原创 2023-07-30 16:26:29 · 2674 阅读 · 0 评论 -
oracle建立自动增长字段
oracle数据库与其他的数据库不太一样,比如在mysql里自动增长只要设定“auto_increment”即可。可是在oracle里就没有这种配置了。以oracle11g为例,建立自动增长的字段。3.创建触发器,用户实现将序列的值,在新增数据时,把自增长值赋予ID字段。4.往表中插入记录,此时不需要为自增长字段赋值。2.创建序列,用户实现自增长数字。原创 2023-07-30 12:06:41 · 2641 阅读 · 1 评论 -
oracle 自定义类型(type)的用法
创建函数并将此类型作为返回值类型。创建函数并将此类型作为返回值类型。调用该函数,并打印执行结果。调用该函数,并打印执行结果。emp表数据如下所示。定义object类型。定义tablet类型。原创 2023-06-23 16:56:23 · 1294 阅读 · 0 评论 -
oracle操作xml格式数据
oracle操作xml格式数据往表中插入数据字段CONTENT的值为字符串格式的xml数据,ID为1的记录结构如下: ID为2的记录结构如下: 下面使用sql对xml数据进行查询: 返回id为1的记录,所有的name的值原创 2023-06-23 14:33:02 · 2241 阅读 · 0 评论 -
oralce数据库定时备份
可以将bat文件的执行操作,添加到windows的任务计划程序中,定时执行。127.0.0.1:数据库服务器地址。db_name:数据库用户名称。db_pwd:数据库用户密码。orcl:数据库实例名称。原创 2023-04-24 22:29:44 · 1712 阅读 · 0 评论 -
ERROR:ORA-12504:TNS:监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME
使用本地的SQLPlus连接服务器上的Oracle数据库,系统先提示ORA-12504:TNS:监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME。原创 2022-12-12 17:21:22 · 14811 阅读 · 0 评论 -
oracle递归SQL 级别1出现错误
执行alter脚本后,该表空间就被设置为1024M。根据实际情况进行调整。执行脚本(创建函数)时,plsql提示如下错误。查询报错的用户所属表空间:SCOTT是用户名。首先切换到sys或system用户。原创 2022-10-29 19:34:44 · 2717 阅读 · 0 评论 -
oracle提取第N个分割的子字符串
参数2:“^”在方括号里表示否的意思,+表示匹配1次以上,'[^,]+'表示匹配不包含逗号的多个字符,也就是字段name中用逗号拼接的各个子串。参数4:2表示第二个能匹配'[^,]+'的字符串,也就是KING与FORD。需求:提取出用逗号拼接的字符串中,第二个字符串的值。参数3:1表示从第一个字符开始。参数1:要提取的字段。原创 2022-10-29 15:27:21 · 1958 阅读 · 0 评论 -
oracle中替换字符串的不同写法
TRANSLATE与replace的区别在于replace是整体替换,TRANSLATE是单个字符替换。可以看到替换后的内容与原始内容相同,因为replace是整体查找并替换的,在原始内容中查找‘abcdefg’时,发现并未找到,所以就没有做替换操作。原字符串‘ab 你好 bcadefg’,将原字符串中的a用1替换、b用2替换、c用3替换......g用7替换。如果to_string对应的位置没有字符,则from_string中列出的字符将会被消掉。直接把[]内列举的字符替换为空。原创 2022-10-29 14:57:02 · 12376 阅读 · 0 评论 -
在Windows中安装Oracle
Oracle安装操作,分为客户端(client)和服务端(Database)安装。这两个是有本质区别的,如果是在公司做软件开发的技术人员,那么在自己电脑上安装客户端(client)即可,client版本不能创建数据库用户、表等数据库对象。它作用是用来连接到服务端进行数据库操作的。如果是在服务器里面,或者个人电脑想存储数据,那就需要安装服务端(Database),这个版本是可以创建各种数据库对象,进行数据库操作的。下文以Oracle11g为例,分别在服务器上安装‘服务端(Database)’和在个人电脑上安装原创 2022-07-09 12:17:09 · 11017 阅读 · 3 评论 -
SQL案例学习:连续登录问题
案例需求描述案例使用的表及初始化数据的脚本附在当前文章最下面。实现方法一利用Oracle中的排序窗口函数(ROW_NUMBER),结合日期差值计算,最后求得用户连续登陆的天数,详细的推理步骤如下:①查询出一月份各用户的登录信息,将登陆日期格式化为年月日格式,并去重。select distinct t.user_id, trunc(t.login_time) ymdfrom t_login twhere t.login_time >= to_date原创 2022-05-08 17:58:25 · 2083 阅读 · 0 评论 -
SQL查询优化技巧
查询优化的本质是让数据库优化器为SQL语句选择最佳的执行计划。一般来说,对于在线交易处理(OLTP)系统的数据库,减少数据库磁盘I/O是SQL语句性能优化的首要方法,因为磁盘访问通常是数据库性能的瓶颈所在。另外,我们还需要考虑降低CPU和内存的消耗。例如DISTINCT、GROUP BY、ORDER BY等操作都会涉及CPU运算,需要占用内存或者使用临时磁盘文件,这些都是我们优化的目标。创建合适的索引索引是优化查询性能的重要方法,因此我们首先需要了解哪些字段适合创建索引:基于经常出现在原创 2022-04-23 11:54:51 · 5945 阅读 · 0 评论 -
Oracle中的DDL触发器
在日常应用中最常见的是DML触发器,关于DML触发器可以参考文章Oracle中的DML触发器DDL触发器由数据定义语句(比如CREATE、DROP语句等)触发。DDL触发器的应用场景为了防止因恶意攻击或者用户误操作而导致删除数据表,我们可以在系统日常运行时禁止执行某些数据库命令,比如DROP TABLE语句。DDL触发器可以用于监控和防止针对数据库对象的修改命令。DDL触发器的应用示例禁止进行数据库表的修改和删除操作CREATE OR REPLACE TRIGG原创 2022-04-22 11:44:09 · 2545 阅读 · 0 评论 -
Oracle查询执行计划
执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括:● 访问表的方式。数据库通过索引或全表扫描等方式访问表中的数据。● 多表连接的方式。数据库使用什么连接算法实现表的连接,包括多个表的先后访问顺序。● 分组聚合以及排序等操作的实现方式。虽然不同数据库对于SQL查询的执行过程采用了不同的实现方式,但是一个查询语句大致需要经过分析器、优化器以及执行器的处理并返回最终结果,同时还可能利用各种缓存来原创 2022-04-21 14:25:58 · 40322 阅读 · 0 评论 -
Oracle级联删除表(不受外键约束)
在数据库中物理删除表时,如果该表被其他表引用(在其他表中有外键指向该表主键),那么在删除表时会提示如下的错误:要想在删除表时不受其他表的外键约束,则可以执行如下语句,表示级联删除外键的选项:DROP TABLE user CASCADE CONSTRAINTS;以上语句表示删除表user的同时删除所有引用该表的外键,但不会删除子表。...原创 2022-04-20 17:53:33 · 2039 阅读 · 0 评论 -
数据库设计与实现
一个良好的设计对于数据库系统至关重要,它可以减少数据冗余,确保数据的一致性和完整性,同时使得数据库易于维护和扩展。实体关系图实体关系图(Entity-Relationship Diagram,ERD)是一种用于数据库设计的结构图,它描述了数据库中的实体以及它们之间的关系。从结构上来说,数据库的ERD主要包括实体、属性以及关系三个部分。实体实体代表了一种对象或者概念。例如,员工、部门和职位都可以被称为实体。实体包含一个或多个属性,实体在数据库中对应的就是关系表。属性属性原创 2022-04-20 17:36:23 · 11839 阅读 · 1 评论 -
数据库事务学习总结
在数据库中,事务(Transaction)指的是一组相关的SQL语句,它们在业务逻辑上组成一个原子单元。数据库管理系统必须保证一个事务中的所有操作全部提交或者全部撤销。最常见的数据库事务就是银行账户之间的转账操作。例如,从账户A转出1000元到账户B。上图是一个简化的转账流程,实际上银行转账还需要检查账户的状态、判断是否收取转账费用等。以上流程包括以下几个步骤:(1)开始转账流程。查询账户A的余额是否足够,如果其余额不足,则终止转账。(2)从账户A扣除1000元。(3)往账户B存入1转载 2022-04-20 09:36:50 · 1100 阅读 · 0 评论 -
Oracle合并数据操作(MERGE)
SQL标准于2003年增加了一个新的数据操作语句:MERGE(合并),它可以同时完成INSERT语句和UPDATE语句,甚至DELETE语句的操作。标准合并语句它的基本语法如下:MERGE INTO target [AS t_alias]USING source_table [AS s_alias]ON (conditions)WHEN MATCHED THEN UPDATE SET col1 = expr1, col2 = expr2, ...原创 2022-04-19 12:01:20 · 9425 阅读 · 0 评论 -
SQL窗口函数-取值窗口函数
关于窗口函数的基础,请看文章SQL窗口函数取值窗口函数可以用于返回窗口内指定位置的数据行。常见的取值窗口函数如下:LAG函数可以返回窗口内当前行之前的第N行数据。 LEAD函数可以返回窗口内当前行之后的第N行数据。 FIRST_VALUE函数可以返回窗口内第一行数据。 LAST_VALUE函数可以返回窗口内最后一行数据。 NTH_VALUE函数可以返回窗口内第N行数据。其中,LAG函数和LEAD函数不支持动态的窗口大小,它们以整个分区作为分析的窗口。案例分析案例使用的示例表原创 2022-04-18 21:18:51 · 6482 阅读 · 1 评论 -
SQL窗口函数-排名窗口函数
关于窗口函数的基础,请看文章SQL窗口函数排名窗口函数用于对数据进行分组排名,包括ROW_NUMBER()、RANK()、DENSE_RANK()、PERCENT_RANK()、CUME_DIST()以及NTILE()等函数。排名窗口函数可以用于获取数据的分类排名。常见的排名窗口函数如下:ROW_NUMBER函数可以为分区中的每行数据分配一个序列号,序列号从1开始。 RANK函数返回当前行在分区中的名次。如果存在名次相同的数据,后续的排名将会产生跳跃。 DENSE_RANK函数返回当前行在分原创 2022-04-18 19:31:46 · 8102 阅读 · 0 评论 -
SQL窗口函数-聚合窗口函数
关于窗口函数的基础,请看文章SQL窗口函数许多常见的聚合函数也可以作为窗口函数使用,包括AVG()、SUM()、COUNT()、MAX()以及MIN()等函数。案例分析案例使用的示例表下面的查询中会用到两个表,其中sales_monthly表中存储了不同产品(苹果、香蕉、橘子)每个月的销售额情况。以下是该表中的部分数据:transfer_log表中记录了一些银行账户的交易日志。以下是该表中的部分数据:该表中的字段分别表示交易日志编号、交易时间、交易发起账户、交易接收.原创 2022-04-18 18:55:02 · 8688 阅读 · 1 评论 -
SQL窗口函数
SQL窗口函数为在线分析处理(OLAP)和商业智能(BI)提供了复杂分析和报表统计的功能,例如产品的累计销售额统计、分类排名、同比/环比分析等。这些功能通常很难通过聚合函数和分组操作来实现。窗口函数(Window Function)可以像聚合函数一样对一组数据进行分析并返回结果,二者的不同之处在于,窗口函数不是将一组数据汇总成单个结果,而是为每一行数据都返回一个结果。聚合函数和窗口函数的区别如下图所示。以SUM函数为例演示这两种函数的差异,以下语句中的SUM()是一个聚合函数:S.原创 2022-04-18 17:46:24 · 47390 阅读 · 6 评论 -
SQL案例学习-微博好友关系
微博中的用户关系需要使用有向图(Directed Graph)表示。因为关注是单向关联,A关注了B,但是B不一定关注A。下图是一个简单的粉丝关系示意图:如果A关注了B,就会存在一条从A到B的带箭头的边。上图中的“刘一”关注了“周八”,同时“刘一”和“李四”相互关注。对于有向图而言,度又分为入度(In-degree)和出度(Out-degree)。入度表示有多少条边指向该顶点,出度表示有多少条边是以该顶点为起点的。“刘一”的入度为4(微博的粉丝数),出度为2(微博关注的人数)。对于社交原创 2022-04-18 10:30:12 · 892 阅读 · 0 评论 -
Oracle递归的实现
递归查询语法WITH cte_name AS ( cte_query_initial --初始化部分 UNION ALL cte_query_iterative --递归部分)SELECT * FROM cte_name;关键字WITH表示定义递归形式的通用表表达式(即递归CTE)。递归CTE的定义包含两部分:1.cte_query_initial是初始化查询语句,用于创建初始结果集;2.cte_query_iterative是递归查询语句,可以对当前CTE原创 2022-04-17 20:57:02 · 11442 阅读 · 2 评论 -
SQL案例学习-微信好友关系
在微信中,两个用户可以相互加为好友。用两个数据表来存储相关数据,t_user表和t_friend表。这里需要注意的是两个用户成为好友后,在t_friend表中会有两条记录,以user_id为1和2的两个用户为例,可以看到有两条记录。上图表示t_friend表中存储的用户好友关系,用直线连接的用户表示彼此间为好友关系。1.查看好友列表查询姓名为“刘一”用户的好友列表信息实现SQL:SELECT f.user_id A..原创 2022-04-17 20:15:03 · 2781 阅读 · 2 评论 -
SQL案例学习-字符串的合并与拆分
字符串的合并在Oracle中可能有多种实现方法,目前我已知的有两种,下面记录下这两种的实现:字符串合并方法一:实现SQL:--方法一SELECT d.dept_name,wm_concat(e.emp_name) FROM employee eINNER JOIN department d ON d.dept_id=e.dept_idGROUP BY d.dept_name;执行结果:SQL分析:利用Oracle自带的wm_c.原创 2022-04-17 12:51:35 · 11321 阅读 · 1 评论 -
SQL案例学习-月度销售冠军
公司销售人员负责各种产品的销售,emp_sales表中记录了每个销售人员每个月的销售数据,emp_sales表中的字段分别表示员工编号、销售年份、销售月份以及销售金额。查询每个月的销售冠军实现SQL:--月度销售冠军select * from ( select s.sale_year, s.sale_month, e.emp_name, s.amount, row_number() over(partition by s.sale原创 2022-04-16 19:39:39 · 1676 阅读 · 0 评论 -
Oracle利用交叉连接生成数字序列
建表并插入记录CREATE TABLE t_number(n INTEGER PRIMARY KEY);INSERT INTO t_number VALUES (0);INSERT INTO t_number VALUES (1);INSERT INTO t_number VALUES (2);INSERT INTO t_number VALUES (3);INSERT INTO t_number VALUES (4);INSERT INTO t_number VALUES (5);IN原创 2022-04-16 17:12:01 · 567 阅读 · 0 评论 -
Oracle对空值(NULL)的5种处理
数据库中的空值(NULL)经常会导致一些不可预知的错误,我们需要使用数据库提供的方法对空值进行处理,确保数据查询的准确性。如下表所示,红色标记的值为空值。分别使用5种方法对数据库的空值进行判断和处理:1.使用COALESCE函数COALESCE(expr1,expr2,expr3,…)函数接受一个输入参数的列表,返回第1个非空的参数。如果所有的参数都为空,则返回空值。案例:假如我们现在需要查找员工的联系电话,查找的规则如下:先找移动电话;如果没有移动电话,就找工作原创 2022-04-16 13:17:52 · 23494 阅读 · 0 评论