`

Mysql和Oracle中更新表记录,若不存在,则直接插入记录的操作

 
阅读更多

有类似这样的场景,比如对某种数据进行统计,每增加一条,就对表A中对应统计记录的值+1,若统计表中,没有对应这种情况的统计数据,则需新插入一条记录,后续在遇到这种数据时,对数据进行更新。

这个时候可以直接用数据库sql实现。

mysql: on Duplicate key update
oracel: merge
//创建一个表
create table  daily_hit_counter(
day date mot null,
slot number not null,
cnt number not null,
private key(day,slot)
)
 
mysql:
INSERT INTO daily_hit_counter(DAY,slot,cnt) VALUES (CURRENT_DATE,RAND()*100,1)
     ON DUPLICATE KEY UPDATE cnt=cnt+1;
 
oracel:
//此sql并未执行验证,格式大概如此
merge into daily_hit_counter t1
using (select trunc(sysdate,'dd') day,dbms_random.value slot,1 cnt from dual) t2
on(t1.day=t2.day and t1.slot=t2.slot) 
when not matched then insert values (t2.day,t2.slot,1)
when matched then update set t1.cnt= t1.cnt+1;
分享到:
评论

相关推荐

    mysql和Oracle命令的区别

    MySQL 和 Oracle 命令之间的差异主要体现在数据库管理和数据操作的细节上,这些差异对于数据库管理员和开发人员来说是至关重要的。以下将详细介绍两者的主要区别: 1. 自动增长的数据类型处理: MySQL 提供了一个...

    oracle和MySQL区别手册

    - **MySQL**: 支持自动增长的数据类型,在插入新记录时,该字段会自动递增。 #### 空字符处理 - **Oracle**: 插入空字符串(`''`)与插入`NULL`是相同的,系统会自动将空字符串转换为`NULL`。 - **MySQL**: 插入空...

    mysql和oracle区别.pdf

    ` 在 MySQL 中有效,但在 Oracle 中则需要配合 GROUP BY 子句。 2. **自动增长的数据类型**: - MySQL 提供了一个 AUTO_INCREMENT 关键字,用于创建自动增长的主键。当插入新记录时,这个字段的值会自动递增。而在...

    操作数据库集合SqlServer,MySql,Oracle.zip

    这个库可能封装了一些通用的数据库操作方法,如连接数据库、执行查询、插入记录、更新记录和删除记录等,以提高代码的复用性和可维护性。 总的来说,这个压缩包对于学习和理解如何使用C#语言操作SQL Server、MySQL...

    mysql和oracle区别.docx

    在 Oracle 中,要实现自动增长,需要创建一个序列(SEQUENCE)并在插入记录时手动使用序列的 NEXTVAL 属性。 3. **字符串引用**: MySQL 允许使用双引号来包围字符串,而 Oracle 只接受单引号。在 Oracle 中,如果...

    Mysql,Oracle驱动程序

    MySQL和Oracle驱动程序是数据库开发中的关键组件,它们允许应用程序与特定的数据库管理系统进行通信。在本文中,我们将深入探讨这两个流行的数据库系统及其驱动程序。 MySQL驱动程序是连接应用程序(如Java、Python...

    如何为oracle中的表增加自动增长列.pdf

    首先需要了解的是,Oracle数据库并不像MySQL中那样提供一个AUTO_INCREMENT的属性,而是通过序列(SEQUENCE)和触发器(TRIGGER)来实现类似的功能。序列生成一系列的数字,而触发器则在插入新记录时使用这些数字。 ...

    JDBC驱动包-Mysql/Oracle

    使用这些驱动包,开发者可以编写Java应用程序来执行常见的数据库操作,如创建表、插入数据、查询记录、更新和删除数据等。同时,JDBC还支持预编译的SQL语句(PreparedStatement)以提高性能,以及事务处理和异常处理...

    Oracle与MySQL的几点区别

    这样的写法在MySQL中是有效的,但在Oracle中则可能会导致错误。因此,在Oracle中使用别名时需要特别注意这一点。 #### 四、分页查询的实现方式 在实际应用中,分页查询是非常常见的需求。MySQL和Oracle在这方面的...

    oracle mysql常用驱动

    在数据库操作中,了解SQL语句是必要的,包括SELECT用于查询,INSERT用于插入,UPDATE用于更新,DELETE用于删除记录。此外,事务管理是确保数据一致性的关键,Oracle和MySQL都支持ACID(原子性、一致性、隔离性和持久...

    mysql和cracle互转工具

    9. **兼容性和版本适配**:工具需兼容不同的MySQL和Oracle版本,因为不同版本可能存在特性差异或不兼容的问题。 10. **用户界面与自动化**:一个易用的图形用户界面(GUI)可以让非技术人员也能轻松操作,而自动化...

    Oracle插入数据时获取自增ID

    在Oracle数据库中,当需要实现类似其他数据库系统(如MySQL、SQL Server等)中的自动增长字段功能时,通常会采用序列(sequence)和触发器(trigger)来实现这一需求。下面将详细介绍如何通过序列和触发器实现在插入...

    Oracle.VS.Mysql

    **Oracle**的官方命令行工具为**SQLPlus**,而**MySQL**则使用**mysql**作为其命令行工具。这两种工具都允许用户通过命令行界面执行SQL查询,管理数据库,但它们的语法和功能存在细微差别。 #### 二、用户概念的...

    mybatis连接oracle实例

    这个接口会包含与`test`表交互的方法,如插入、更新、删除和查询记录。例如,`TestMapper.xml`可能包含以下内容: ```xml <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...

    Oracle到mysql转换的问题总结.doc

    - MySQL不支持在一个表中先查询再更新,但可以给查询的表加上别名来解决这个问题。 3. **自动增长字段**: - MySQL有`AUTO_INCREMENT`字段,插入记录时自动递增。Oracle没有内置的自动增长类型,但可以通过创建...

    Oracle与MySQL的几点区别.pdf

    例如,`SELECT name, COUNT(money) FROM user` 在 MySQL 中有效,但在 Oracle 中则需要 GROUP BY name,因为 name 需要遵循分组规则。 2. **自动增长的数据类型处理**: MySQL 提供了 AUTO_INCREMENT 数据类型,...

    Oracle到mysql转换的问题总结.docx

    - MySQL不允许在一个表中先查询再更新,但可以通过为子查询的表添加别名来解决这个问题。 3. **自动增长字段**: - MySQL有`AUTO_INCREMENT`字段,插入新记录时系统自动递增。而Oracle需要创建序列对象,插入时...

    mysql图形界面操作系统

    3. **数据操作**:允许用户直接在界面上插入、更新、删除数据记录,以及批量导入导出数据。 4. **查询功能**:提供简单和高级查询模式,支持用户自定义查询语句,并能保存常用查询以便重复使用。 5. **安全性控制**...

Global site tag (gtag.js) - Google Analytics