首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql技巧:如果记录存在则更新如果不存在则插入的三种处理方法

要求: 新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。...(根据表上的唯一键),如果存在,先delete,然后再insert。...这个方法有一个很大的问题,如果记录存在,每次执行完,主键自增id就变了(相当于重新insert了一条),对于有复杂关联的业务场景,如果主表的id变了,其它子表没做好同步,会死得很难看。...该方法,没有replace into的副作用,不会导致已存在记录的自增id变化。...但是有另外一个问题,如果这个表上有不止一个唯一约束,在特定版本的mysql中容易产生dead lock(死锁),见网友文章https://blog.csdn.net/pml18710973036/article

9.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle 外部表

    --================= -- Oracle 外部表 --================= 外部表只能在Oracle 9i 之后来使用。简单地说,外部表,是指不存在于数据库中的表。...4.删除外部表或者目录对象 一般情况下,先删除外部表,然后再删除目录对象,如果目录对象中有多个表,应删除所有表之后再删除目录对象。...如果在未删除外部表的情况下,强制删除了目录,在查询到被删除的外部表时,将收到"对象不存在"的错误信息。...如果指定了DIRECT=TRUE,则会加载数据,而不会生成外部表。...如果指定了NOBADFILE则表示忽略转换期间的错误 如果未指定该参数,则系统自动在源目录下生成与外部表同名的.BAD文件 BADFILE记录本次操作的结果,下次将会被覆盖 LOGFILE 和NOLOGFILE

    1.3K20

    Oracle表连接

    另外: 1.如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。 2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。...3.由于oracle中可以进行这种非常简单的natural join,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型。...,示例中TestA可以看成左表,TestB可以看成右表,它的结果集是Test A表中的全部数据,再加上TestA表和TestB表匹配后的数据。...当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。 (+)操作符只适用于列,而不能用在表达式上。...用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接。

    72440

    oracle 表操作

    本文记录 oracle 环境下对表的创建、字段处理(增、删、改、重命名)、删除、重命名操作,其中包含了在创建表时常用的约束条件及数据类型。...---- 最简单的创建表命令 CREATE TABLE dept(deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13)); 创建后表结构如下:...也可以通过其他表的数据来创建新的表,参考:sql 根据其他表结构创建新表并批量插入数据 常见数据类型 在创建表时,每一个字段你都需要给其指定数据类型,oracle 有非常多的数据类型,但是有一些是不常用的...oracle 下删除一张表默认情况下是存入到 oracle 的回收站中,如下: drop table tablename 要想彻底删除,还要对回收站进行清空: purge recyclebin 如果向直接删除不经过回收站...KEY: 在子表中,定义了一个表级的约束 REFERENCES: 指定表和父表中的列 ON DELETE CASCADE: 当删除父表时,级联删除子表记录 ON DELETE SET NULL: 将子表的相关依赖记录的外键值置为

    18710

    Oracle创建表及管理表

    Oracle表的创建及管理 创建表包括三个要素,表名,列名,数据类型。每个表都有对应不同的列,每个列都有唯一对应的数据类型。常用数据类型简介: 数据类型 描述 CHARACTER(n) 字符/字符串。...相关语句 --例:创建表名为table1,列名为column1,column2,…,数据类型为特定数据类型的表 Create table table1( Column1 datetype, Column2...:修改表table1的名称为table2 Rename table1 to table2; --删除表:删除表table2: Drop table table2; 2.表中的数据管理     添加数据:...在表table2中添加数据 注:往表中添加数据时,字段数量与值得数量需一直并且一一按顺序匹配,添加的数据类型要符合表字段的数据类型 Insert into table2(column1,column2,...……) Values(value1,value2,……);     添加字段默认数据:为表中某字段添加默认值,添加默认值后如果在插入一行数据时该字段没有设定插入的值,则自动填入默认值。

    1.2K10

    Oracle表空间表分区详解及Oracle表分区查询使用方法

    此文从以下几个方面来整理关于Oracle分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作....表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。...增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;  维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;  均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能...缺点: 已经存在的表没有方法可以直接转化为分区表。...DROP SUBPARTITION P4SUB1; 注意:如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表。

    3.8K20

    ORACLE修改表信息

    在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。...当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。...这里面有一种潜在的危险就是由于被选出的结果集并没有被锁定,是存在一种可能被其他用户更改的可能。因此Oracle仍然建议是用悲观封锁,因为这样会更安全。...例子: 1:用户1对A表进行Update,没有提交。 2:用户2对B表进行Update,没有提交。 此时双反不存在资源共享的问题。...3:如果用户2此时对A表作update,则会发生阻塞,需要等到用户一的事物结束。 4:如果此时用户1又对B表作update,则产生死锁。

    2.1K30

    oracle 表空间tablespace

    一、Oracle 表空间的组成 Everoone knows Oracle数据库真正存放数据的是数据文件,Oracle表空间是逻辑上的概念,他在物理上是并不存在的,把多个DataFile合并到一起就是一个表空间...左图是Oracle中DataBase和tablepspace和DataFile的关系 如果不理解上图,可以看下图: ? 表空间就好像是背景,而其中的土地就相当于是数据文件,北京就是由一块块土地构成。...如果不理解上图,可以看下图: ?...3、一个tablespace(表空间)包含多个Segment(段).注:一个数据表占一个段,一个索引也要占一个段。如果不理解段,下文会有解释!...d盘下存在该记录 ok,证明我们的操作成功  1.2、表空间的删除 删除表空间需要sysdba或者drop tablespace的权限,删除的代码如下: drop tablespace 表空间名 including

    2.8K81
    领券