十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
有個簡單的方法,你直接取標(biāo)識列的MAX()+1就行了,如一張表的結(jié)構(gòu)如下
公司主營業(yè)務(wù):網(wǎng)站制作、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出德城免費做網(wǎng)站回饋大家。
create table temp_table
(
table_id number(10);
user_name varchar2(1000);
);
每次insert的時候就寫INSERT INTO TEMP_TABLE VALUES((SELECT MAX(TABLE_ID)+1 FROM TEMP_TABLE),'AAA');
其實最好的方法還是用序列……
首先,表的字段的物理位置是固定的
就是現(xiàn)在是ID NAME DEPT_ID的順序不能改變,頂多是可以把薪水加到最后一列
增加一個字段的方法,看你是用的oracle
alter?table?s_emp?add?薪水?number(10,2);
薪水那倆字你替換成你想改的英文名稱吧
另外如果你非讓它顯示在ID和NAME中間,只能在查詢中做到,否則就得全表刪除重建
select?id,薪水,name,dept_id?from?s_emp;
第一種方法:企業(yè)管理器-〉設(shè)計表-〉右鍵第4列-〉插入列
第二種方法:SQL語句,沒有直接在指定位置插入的語句,不過我考慮的語句很簡單
1.新建一張表,原來是abcde,現(xiàn)在新建為abcXde,X是插入的列
2.把原來abcde中的數(shù)據(jù)全部插入新表中
3.刪除舊表abcde
oracle:
oracle沒有自增長序列,因此可以用以下方法來實現(xiàn)
1.建立表格:
createtabletable1
(
cidnumber(8)notnull,
othersvarchar2(20)
);
2.建立從1開始的序列:
createsequenceemp_sequence
incrementby1--每次加幾個
startwith1--從1開始計數(shù)
nomaxvalue--不設(shè)置最大值
nocycle--一直累加,不循環(huán)
nocache--不建緩沖區(qū)3.建立觸發(fā)器:
createorreplacetriggermytgr
beforeinsertontable1foreachrow
begin
selectmytgr.nextvalinto:new.cidfromdual;
end;
mysql:
createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,
a_titlevarchar(32),
a_contenttext);
1、在oracle中沒有想sqlserver自動增長列,如果想要達(dá)到這個效果必須要自己建立索引
2、建立索性,可以為你這個需要自動增長的表建立觸發(fā)器,觸發(fā)器自動幫你完成自動增長工作
3、第二種方法:建立索性,插入的時候自動獲取索引的下一個值
分為兩步來實現(xiàn),首先插入數(shù)據(jù),假設(shè)表T,有字段col1,col2,col3,需要向前200行的col2插入行數(shù)+1的值,并將col2變?yōu)榈谝涣校?/p>
插入數(shù)據(jù)有兩種方法:
1》直接update即:UPDATE T SET T.COL2 = ROWNUM + 1 WHERE ROWNUM =200;
2》寫一個存儲過程
CREATE OR REPLACE PROCEDURE INS IS
BEGIN
FOR I IN 1 .. 200 LOOP
INSERT INTO T (COL2) VALUES (I);
END LOOP;
COMMIT;
END;
編譯并運行該過程,插入列即完成。
下面將COL2列調(diào)整為第一列:
方法一:借用臨時表,建temp表與t表的表結(jié)構(gòu)、數(shù)據(jù)完全一致,重建t表,調(diào)整字段順序,再將temp表的數(shù)據(jù)導(dǎo)回來,即
CREATE TABLE TEMP AS SELECT * FROM T;
CREATE TABLE T(
COL2 TYPE,
COL1 TYPE,
COL3 TYPE
);
INSERT INTO T
SELECT COL2,COL1,COL3 FROM TEMP;
COMMIT;
DROP TABLE TEMP;
此方法需要足夠的空間、回滾段和時間消耗
方法2:利用數(shù)據(jù)庫表對象更新字段的序列號
在當(dāng)前表用戶下使用下面命令查詢T對象的編號:
select OBJECT_name,object_id from all_objects where object_name='T';(注意一定要大寫)
SQL /
OBJECT_NAME OBJECT_ID
------------------------------ ----------
T 50555
切換到sys帳號下
select obj#,col#,name from col$ where obj#=50555;
OBJ# COL# NAME
---------- ---------- ----------------------------
50555 1 COL1
50555 2 COL2
50555 3 COL3
Elapsed: 00:00:00.03
下面可以通過修改這個系統(tǒng)表來實現(xiàn)修改列名與順序,注意,COL#就是列的順序。
UPDATE COL$ SET COL#=2 WHERE OBJ#=50555 and name='COL1';
UPDATE COL$ SET COL#=1 WHERE OBJ#=50555 and name='COL2';
再次查詢
select obj#,col#,name from col$ where obj#=50555;
OBJ# COL# NAME
---------- ---------- ------------------------------
50555 1 COL2
50555 2 COL1
50555 2 COL3
提交修改commit ;
重啟服務(wù)
SQL SHUTDOWN IMMEDIATE
SQLSTARTUP
重新登錄表用戶下,查詢SELECT * FROM T;
COL2 COL1 COL3
至此列順序調(diào)整成功