① oracle 插入语句
嵌套一个select语句在values这里,把你要插入的一整列语句用一根select语句查询出来,再赋值给values里面的值。
按位置对应一下,batch在段在倒数第二位,所以那个地方直接引用序列。
你说的“库名”是指oracle里的数据库名称,还是指表所在的用户?
登陆你的oracle用户:
ID希望自增长,那么建立一个sequence序列即可。
先建立序列:
create sequence seq_name -------创建序列名字为 seq_name,自己定义
minvalue 1 ----- 最小值为 1,可自定义
maxvalue 99999 ------- 最大值为 99999,可自定义
start with 1 ------ 开始值 1,可自定义
increment by 1 -----每次增长值 1,可自定义
cache 20; ----缓存大小 20,可自定义
这里用表名tablename 代替你说的DB,你替换就可以
插入:
insert into tablename(id, user, pass, sex, sn) values(seq_name.nextval,'user','pass','sex','sn' );
commit;
修改:
update tablename set sex='男' where user=‘张三';
commit;
-------set后面要更新成什么,和where后面的条件根据需要自己写。最基本的SQL了。
删除:
delete from tablename where user='张三';
commit;
-----------具体条件自己写。
我觉得你还是看下最基本的SQL教材吧
③ oracle数据库,主键设置为ID,插入语句时,如何自动生成ID并让它顺序增加呢
使用oracle数据库中的关键字sequence来实现目的。
//创建mySeq
create sequence mySeq
start with 1
increment by 2
maxvalue 40
minvalue 1
cycle
//创建用户表
create table USER
(
Id int,
CompName varchar2(20)
)
插入语句可以这样写:
insert into USER values(mySeq.nextVal,'AA')
这样的话每次插入的ID就是自动递增的
(3)oracle数据库插入语句扩展阅读:
sequence用法:
create sequence <序列名称>
start with <起始数>
increment by <增长量>
[maxvalue 值]
[minvalue 值]
[cycle 当到达最大值的时候,将继续从头开始]
[Nocycle -- 一直累加,不循环]
[Cache ]
参考资料:网络-oraclesequence
④ Oracle中插入数据
前提:在做insert数据之前,如果是非生产环境,请将表的索引和约束去掉,待insert完成后再建索引和约束。
insert into tab1 select * from tab2; commit;
这是最基础的insert语句,我们把tab2表中的数据insert到tab1表中。根据经验,千万级的数据可在1小时内完成。但是该方法产生的arch会非常快,需要关注归档的产生量,及时启动备份软件,避免arch目录撑爆。
alter table tab1 nologging;
insert /*+ append */ into tab1 select * from tab2;
commit; alter table tab1 logging;
该方法会使得产生arch大大减少,并且在一定程度上提高时间,根据经验,千万级的数据可在45分钟内完成。但是请注意,该方法适合单进程的串行方式,如果当有多个进程同时运行时,后发起的进程会有enqueue的等待。注意此方法千万不能dataguard上用,不过要是在database已经force logging那也是没有问题的。
insert into tab1 select /*+ parallel */ * from tab2; commit;
对于select之后的语句是全表扫描的情况,我们可以加parallel的hint来提高其并发,这里需要注意的是最大并发度受到初始化参数parallel_max_servers的限制,并发的进程可以通过v$px_session查看,或者ps -ef |grep ora_p查看。
alter session enable parallel dml;
insert /*+ parallel */ into tab1 select * from tab2; commit;