真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么編輯列 oracle數(shù)據(jù)庫怎么編輯表

Oracle怎么修改列名

如果安裝了oracle軟件最好,直接編輯就行了了,沒有安裝那么就alter table tablename rename column columnname to newcolumnname;在或者把columnname刪除,在增加newcolumnname列。alter table tablename drop column columnname;alter table tablename add column newcolumnname;

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)按需設(shè)計(jì),是成都網(wǎng)站推廣公司,為戶外休閑椅提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開發(fā)等。成都網(wǎng)站推廣熱線:028-86922220

【原】Oracle 如何修改列的數(shù)據(jù)類型

添加字段并附值

alter table TABLE_NAME ADD COLUMN_NAME NUMBER(1) DEFAULT 1;修改字段值update TABLE_NAME set filedname=value where filedname=value;

修改字段數(shù)據(jù)類型

alter table tablename modify filedname varchar2(20);1SQLselect*fromv$version;23BANNER4--------------------------------------------------------------------------------5OracleDatabase11g Enterprise Edition Release11.2.

0.1.0-64bitProduction6PL/SQL Release11.2.

0.1.0-Production7CORE11.2.

0.1.0Production8TNSforLinux: Version11.2.

0.1.0-Production9NLSRTL Version11.2.

0.1.0-Production

1.修改字段數(shù)據(jù)類型時(shí),如果該列有數(shù)據(jù)則報(bào)ORA-01439: column to be modified must be empty to change datatype,此時(shí)需要通過另外一種方法修改:1SQLaltertablezytaddid_tempvarchar2(10);23Tablealtered.45SQLcommit;67Commitcomplete.89SQLselect*fromzyt;1011NAME ID ID_TEMP12---------- ---------- ----------13zyt1114david21516SQLaltertablezyt renamecolumnidtoid_bak;1718Tablealtered.1920SQLselect*fromzyt;2122NAME ID_BAK ID_TEMP23---------- ---------- ----------24zyt1125david22627SQLdesczyt;28NameNull? Type29----------------------------------------- -------- ----------------------------30NAMEVARCHAR2(10)31ID_BAKNOTNULLNUMBER(2)32ID_TEMPVARCHAR2(10)3334SQLupdatezytsetID_TEMP=cast(ID_BAKasvarchar2(10));35362rows updated.3738SQLcommit;3940Commitcomplete.4142SQLselect*fromzyt;4344NAME ID_BAK ID_TEMP45---------- ---------- ----------46zyt11147david224849SQLaltertablezytdropcolumnID_BAK;5051Tablealtered.5253SQLcommit;5455Commitcomplete.5657SQLselect*fromzyt;5859NAME ID_TEMP60---------- ----------61zyt1162david26364SQLdesczyt;65NameNull? Type66----------------------------------------- -------- ----------------------------67NAMEVARCHAR2(10)68ID_TEMPVARCHAR2(10)備注:這種方法能滿足需求,因新增字段默認(rèn)添加到表末尾,有可能發(fā)生行遷移,對(duì)應(yīng)用程序會(huì)產(chǎn)生影響,同時(shí)也涉及復(fù)雜數(shù)據(jù),不算最好的方法

2.建立一個(gè)中間跳板,臨時(shí)存儲(chǔ)數(shù)據(jù)1SQLdesczyt;2NameNull? Type3----------------------------------------- -------- ----------------------------4NAMEVARCHAR2(10)5IDVARCHAR2(10)67SQLselect*fromzyt;89NAME ID10---------- ----------11zyt1112david21314SQLaltertablezytaddid_tempVARCHAR2(10)1516Tablealtered.1718SQLselect*fromzyt;1920NAME ID ID_TEMP21---------- ---------- ----------22zyt1123david22425SQLupdatezytsetID_TEMP=id,id=null;26272rows updated.2829SQLselect*fromzyt;3031NAME ID ID_TEMP32---------- ---------- ----------33zyt1134david23536SQLaltertablezyt modify idnumber(10);3738Tablealtered.3940SQLdesczyt;41NameNull? Type42----------------------------------------- -------- ----------------------------43NAMEVARCHAR2(10)44IDNUMBER(10)45ID_TEMPVARCHAR2(10)4647SQLupdatezytsetid=ID_TEMP,ID_TEMP=null;48492rows updated.5051SQLselect*fromzyt;5253NAME ID ID_TEMP54---------- ---------- ----------55zyt1156david25758SQLaltertablezytdropcolumnID_TEMP;5960Tablealtered.6162SQLcommit;6364Commitcomplete.6566SQLselect*fromzyt;6768NAME ID69---------- ----------70zyt1171david27273SQLdesczyt;74NameNull? Type75----------------------------------------- -------- ----------------------------76NAMEVARCHAR2(10)77IDNUMBER(10)備注:第二種方法,是增加一個(gè)與被修改的列類型一樣的列,之后將要修改列的數(shù)據(jù)復(fù)制到新增的列并置空要修改的列,之后修改數(shù)據(jù)類型,再從新增列將數(shù)據(jù)拷貝回來,該過程涉及兩次數(shù)據(jù)復(fù)制,如果是數(shù)據(jù)量很多,會(huì)比較慢同時(shí)也會(huì)產(chǎn)生很多undo和redo;優(yōu)點(diǎn)是數(shù)據(jù)不會(huì)發(fā)生行遷移。

oracle怎么用命令向建好的表中插入一列并使它成為第一列?請(qǐng)說詳細(xì)點(diǎn),最好舉例說明。

分為兩步來實(shí)現(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》寫一個(gè)存儲(chǔ)過程

CREATE OR REPLACE PROCEDURE INS IS

BEGIN

FOR I IN 1 .. 200 LOOP

INSERT INTO T (COL2) VALUES (I);

END LOOP;

COMMIT;

END;

編譯并運(yùn)行該過程,插入列即完成。

下面將COL2列調(diào)整為第一列:

方法一:借用臨時(shí)表,建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;

此方法需要足夠的空間、回滾段和時(shí)間消耗

方法2:利用數(shù)據(jù)庫表對(duì)象更新字段的序列號(hào)

在當(dāng)前表用戶下使用下面命令查詢T對(duì)象的編號(hào):

select OBJECT_name,object_id from all_objects where object_name='T';(注意一定要大寫)

SQL /

OBJECT_NAME OBJECT_ID

------------------------------ ----------

T 50555

切換到sys帳號(hào)下

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

下面可以通過修改這個(gè)系統(tǒng)表來實(shí)現(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)整成功

如何批量修改oracle數(shù)據(jù)庫中某一個(gè)表中的某一列數(shù)據(jù)?

最好的方法是批量修改,即每次修改5000條(一次修改不要超過一萬條,否則影響性能). 雖然在11g中,我們也可以選擇使用merge命令,但你的這種情況最好先修改一部分然后看看影響,畢竟在生產(chǎn)環(huán)境作這樣的操作風(fēng)險(xiǎn)很大。如果是誤操作,最好還是請(qǐng)DBA來恢復(fù),雖然這樣做會(huì)被挨罵,但總比錯(cuò)上加錯(cuò),最后連挨罵的機(jī)會(huì)都沒有要好得多。如果對(duì)這些修改真的有信心,而只是從性能考慮,那可以用下面的方法(pk_col 是表的主鍵

1、構(gòu)建臨時(shí)表進(jìn)行主鍵關(guān)聯(lián)更新

需求:T1表有千萬級(jí)別的數(shù)據(jù)量,需要更新這個(gè)表的字段a,b滿足2個(gè)條件的記錄。

做法:一般業(yè)務(wù)會(huì)將條件通過excel表格提供給開發(fā),那么開發(fā)首先需要將這個(gè)excel表格的內(nèi)容插入到臨時(shí)表T2中,考慮到a,b都不是主鍵,那么需要將a,b轉(zhuǎn)化成主鍵后再插入到T2表中,T2表中還可以保存更新前的數(shù)據(jù),方便做數(shù)據(jù)回滾,T2表中有數(shù)據(jù)后,就可以執(zhí)行下面腳本進(jìn)行更新操作:

ps:c,d是需要更新的操作,e,f是條件。必須強(qiáng)調(diào)的是id必須是主鍵

1、構(gòu)建臨時(shí)表進(jìn)行主鍵關(guān)聯(lián)更新

需求:T1表有千萬級(jí)別的數(shù)據(jù)量,需要更新這個(gè)表的字段a,b滿足2個(gè)條件的記錄。

做法:一般業(yè)務(wù)會(huì)將條件通過excel表格提供給開發(fā),那么開發(fā)首先需要將這個(gè)excel表格的內(nèi)容插入到臨時(shí)表T2中,考慮到a,b都不是主鍵,那么需要將a,b轉(zhuǎn)化成主鍵后再插入到T2表中,T2表中還可以保存更新前的數(shù)據(jù),方便做數(shù)據(jù)回滾,T2表中有數(shù)據(jù)后,就可以執(zhí)行下面腳本進(jìn)行更新操作:

ps:c,d是需要更新的操作,e,f是條件。必須強(qiáng)調(diào)的是id必須是主鍵

Oracle中怎么修改列名?

如果列名不適合,那么可以使用alter

table語句的rename

column子句改變列名。語法如下:

alter

table

table_name

rename

column

column_name

to

new_column_name;

你這一題該是

alter

text

rename

textpass

to

password

去試下!

oracle怎樣修改表名、列名、字段類型、添加表列、刪除表列

你可以先把類型為varchar的字段該名,再加以個(gè)字段為要該為date的字段名相同, 二, 1,測(cè)試表create table TEST(ID NUMBER not null, NAME VARCHAR2(20))ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名 ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME1 --修改表列名 ALTER TABLE SCOTT.TEST MODIFY NAME1 NUMBER(20) --修改字段類型 ALTER TABLE SCOTT.TEST ADD ADD RESS VARCHAR2(40) --添加表列 ALTER TABLE SCOTT.TEST DROP COLUMN RESS--刪除表列三, ALTER TABLE gtsysusr.SCHEDULE_CONTENTS MODIFY CONTENTS_ID NVARCHAR2(64) 另建一個(gè)表,把varchar改成date,然后用SQL轉(zhuǎn)一下插入,然后刪除原表,然后改目標(biāo)表名字。應(yīng)該可以了。 四,


本文名稱:oracle怎么編輯列 oracle數(shù)據(jù)庫怎么編輯表
文章源于:http://weahome.cn/article/hihcsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部