① 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;