一、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