四、DML(数据库操作语言)【insert、update、delete、merge(可对一个表同时执行inserts和updates操作)】

编程入门 行业动态 更新时间:2024-10-13 02:14:49

四、DML(数据库<a href=https://www.elefans.com/category/jswz/34/1770947.html style=操作语言)【insert、update、delete、merge(可对一个表同时执行inserts和updates操作)】"/>

四、DML(数据库操作语言)【insert、update、delete、merge(可对一个表同时执行inserts和updates操作)】

四、DML(数据库操作语言)【insert、update、delete、merge(可对一个表同时执行inserts和updates操作)】

1、insert

inset into 表名(column,column,....) values(value1,value2,.....);
#第一种注意表结构中 not null的字段。
insert into 表名  values(value1,value2,.....);
#第二种要求values中的表与表结构一致,否则会报错。

**注意:**插入时会出现一些问题

  • 对not null列使用null

  • 违反唯一约束

  • 数据类型不匹配

  • 值不在列约束范围内

  • 插入日期时可以使用to_date

    • 例
      insert into emp values (2296,'AROMANO','SALESMAN',7782, TO_DATE('2022-11-22','yyyy-mm-dd'),1300,null,10);1 row created.select * from emp where empno=2296;EMPNO ENAME      JOB	       MGR HIREDATE	    SAL       COMM     DEPTNO
      ---------- ---------- --------- ---------- --------- ---------- ---------- ----------2296 AROMANO    SALESMAN	      7782 22-NOV-22	   1300 		   10
      

从一张表中拷贝行:

  • 不能使用values
  • 子查询中的列要与insert子句中的列相匹配
例
create table dept1 as select * from dept where 1=2;Table created.select * from dept1;no rows selectedinsert into dept1 select * from dept where deptno=10;1 row created.select * from dept1;DEPTNO DNAME	  LOC
---------- -------------- -------------10 ACCOUNTING	  NEW YORK

同时向多张表插入多条数据:

insert allinto 表1 values()into 表2 values()into 表3 values().......select ... from 表 where ...
例:向10部门和20号部门分别插入相关员工
insert all 
when deptno = 10 then into emp10 values (empno,ename,deptno) 
when deptno = 20 then into emp20 values (empno,ename,deptno) 
select empno,ename,deptno from emp;8 rows created.SCOTT@prod>select * from emp10;EMPNO ENAME	  DEPTNO
---------- ---------- ----------7782 CLARK	      107839 KING 	      107934 MILLER	      10# when  判断语句  then
这个语法就像是if 语句,例如上边的语句意思时当deptno=0时,就像emp10表内插如数据。

2、update

update from 表名 set column1='value1',column2='value2',......columnn='valuen' where condition

注意update可进行多列更新,也可以基于另一张表进行修改

例:
update emp set deptno=(select deptno from emp where empno=7369) where empno=7196;

改为空值:

1、set 属性=NULL2、set 属性=''where 后不能使用=NULL 、='' 、<>'' 、<>null,可以使用 is NULL 或者is NOT NULL

3、delete

delete from 表名 where 条件

注:不加where则删除表中所有数据

4、merge(不常用)

使用原始表更新目标表数据如果存在就更新(update),不存在就插入(insert) 
例:
create table test1 as select * from dept where 1=2; 
create table test2 as select * from dept; 
insert into test1 values (10,'DBA','BEIJING'); 
insert into test1 values(20,'ORACLE','SHANGHAI');
commit;
select * from test1;DEPTNO DNAME	  LOC
---------- -------------- -------------10 DBA		  BEIJING20 ORACLE	  SHANGHAIselect * from test2;DEPTNO DNAME	  LOC
---------- -------------- -------------10 ACCOUNTING	  NEW YORK20 RESEARCH	  DALLAS30 SALES	  CHICAGO40 OPERATIONS	  BOSTON
merge into test1 t1 using test2 t2 on (t1.deptno = t2.deptno) 
2 when matched then 
3 update set t1.dname=t2.dname,t1.loc=t2.loc 
4 when not matched then 
5 insert (deptno,dname,loc) values (t2.deptno,t2.dname,t2.loc);
select * from test1;DEPTNO DNAME	  LOC
---------- -------------- -------------10 ACCOUNTING	  NEW YORK20 RESEARCH	  DALLAS40 OPERATIONS	  BOSTON30 SALES	  CHICAGO

更多推荐

四、DML(数据库操作语言)【insert、update、delete、merge(可对一个表同时执行inserts和updates操作)】

本文发布于:2024-02-12 12:10:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1687737.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作   可对   语言   数据库   insert

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!