alert 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 address varchar2(40) --添加表列
alter table scott.test drop name cascadeconstraints --刪除表列
2. 將一個表B的(某幾個字段的數據)復制到新表A(某幾個不同的字段)中:
insert into tableA (A, B) select C,D from tableB t;
3. 取出一個表集合,循環(更新,刪除,)另外一個表屬性(數據,注釋,結構),多用於數據表局部同步數據:
begin
for i in (select gy.sblx_mc, gy.sblx_dm from nd_gy_sblx gy) loop
execute immediate 'update nd_dm_sblx dm set dm.sblx_mc ='|| i.sblx_mc ||' set dm.sblx_jc='|| i.sblx_dm;
end loop;
end;
在字符串型的變量前面記得加 chr(39);
4. 更新字段數據為大寫(小寫):
update nd_dm_sblx set sblx_jc = upper(sblx_jc);
update nd_dm_sblx set sblx_jc = lower(sblx_jc);
5. 更新數據表字段順序(有兩種方法):
方法一:
a.將原表的建表SQL,通過查看表結構,粘貼下來;
b.將准備更新表字段順序的數據表全表更新到到臨時表中;
c.drop 掉你准備更新數據表;
d.修改你剛才粘貼出來的原表建表語句,修改其中的字段的順序為你想要的;
e.將臨時表中的數據更新到剛創建好的表,drop 掉臨時表;
方法二:
a.查看數據表物理ID;
select object_id from all_objects where owner='表的所有者' and object_name='具體的表';
b.通過上面的物理ID查看表的字段對應的物理順序;
select obj#,col#,name from sys.col$ where obj#=131347 order by col#;
c.更新對應的表字段的物理順序(這步更新需要數據庫超級管理員的權限,請慎用):
update sys.col$ set col#=5 where obj#=131347 and name='JKSE';
d.更新完畢之後,重啟數據庫;
兩種方法對比,如果你們項目是協同開發,一個數據庫是多個人在使用,方法二並不適合你,因為你要重啟數據庫,會耽誤別人的開發時間,如果你SQL 語句寫的比較熟練,第一種方法,只會占用你大概5分鐘的時間,就能夠辦到你的想法;
6. oracle的行標識符rowid與行號rownum:
ROWID是查詢出來的該行記錄的唯一物理地址,後面的rownum則是此次查詢結果的序號。