【Oracle】Oracle insert 语句用法

【Oracle】Oracle insert 语句用法Oracleinsert语句详细用法

【Oracle】Oracle

一、insert基本用法

1、给所有列插入数据

insert into table_name values (value1,value2,…)

insert into table_name1 values [(select column_name1 from table_name2) where somestation|value1],[(select column_name2 from table_name2) where somestation|value2],…

注意:①插入数据的个数要与表中列数相同。

②一定要有限制条件,否则会出现单行子查询返回多个行

③value后面可以跟子查询,但是不可以跟多列子查询

注解:| :代表或者   values后面既可以接单独的数据,也可以跟select语句(但要有限制条件)

eg:

insert into empp values(6,(select ename from emp where empno=7369),(select deptno from dept where dname='SALES'));

错误eg:

insert into empp values(select empno,ename from emp where sal=800),(select deptno from dept where dname='SALES');

错误提示:单行子查询返回多个行

错误eg:

insert into empp values(select empno,ename from emp where sal=800),(select deptno from dept where dname=‘SALES’);

错误提示:缺失表达式

2、给指定列插入数据

insert into table_name (column_name1,column_name2,…) values (value1,value2,…)

=insert into (select column_name1,column_name2,… from table_name) values (value1,value2,…);

insert into (select column_name1,column_name2,… from table_name) values  [(select column_name1 from table_name2) where somestation|value1],[(select column_name2 from table_name2) where somestation|value2],…

注意:

①前后列数要相同

②value后面可以跟子查询,但是不可以跟多列子查询

eg:

insert into (select id,name from empp) values(6,(select ename from emp where empno=7369));

=

insert into empp(id,name) values (6,(select ename from emp where empno=7369));

3、插入多条数据

1、可以在一个表中插入多条数据

①全部列    ②指定列

insert all
into table_name values (value1,value2...)
into table_name(column_name1,column_name2) values (value1,value2)
into table_name(column_name3,column_name4,column_name5) values (value3,value4,value5)
...
select * from dual;

2、可以将多行插入多个表

①全部列  ②指定列

insert all
into table_name1(column_name1,column_name2,...) values(value1,value2,...)
into table_name2(column_name1,column_name2,...) values(value1,value2,...)
into table_name3 values (value1,value2,...)

eg:

insert all 
into emp(empno,ename) values(7736,'张三')
into dept(deptno,dname) values(60,'lalala')
into jobs values(4000701,'行政助理')
select * from dual;

3、以其他表的可用数据来填充目标表格

insert into table_name1 (column_name1,column_name2,...) select column_name1,column_name2,... from table_name2 where somestation;

建表验证:

create table yy(empno number(10),ename varchar2(10));

eg:

insert into yy select empno,ename from emp where empno=7369 or empno=7499;

注意:插入时,要考虑新表是否存在非空约束。除非是全部填充。

4、insert with check option

eg:

insert into (select id from empp where id<100  with check option) values (20);

如果赋值不在指定的范围内,则会报错。

错误eg:

insert into (select id from empp where id<100 with check option) values (101);

既可以单列也可以多列

eg:

insert into (select id,name from empp where id<100  with check option) values (20,'ANNA');

5、多表插入

第一种插入方式:insert all(不分先后,各插各的)

①unconditional insert all(无条件insert all)

insert all into table_name1 into table_name2 select * from table_name;    

将t表的数据分别插到t1和t2表中。

②conditional insert all(有条件insert all)

insert all when x>=3 then into table_name1 when x>=2 then into table_name2 select * from table_name;   将t表中x>=3的数据插入t1表,x>=2的数据插入t2表

第二种插入方式:insert first

conditional insert first(有条件insert first)

首先检索t表查找x列值大于等于3的数据插入到t1表,然后将前一个查询中出现的数据排除后再查找t表,找到x列值大于等于2的数据再插入到tw表,注意insert first的真正目的是将同样的数据只插入一次。

第三种插入方式:旋转insert (pivoting insert) 有行变列的功能 pivoting insert是无条件 insert all 的一种特殊应用, 将一个表中的行转换成另一个表中的列

今天的文章【Oracle】Oracle insert 语句用法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30801.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注