【网学网提醒】:以下是网学会员为您推荐的基本sql(db2与Oracle比照),希望本篇文章对您学习有所帮助。
---------------------------
第一条是db2;第二条是Oracle
---------------------------
如果是增加字段:
altertabletc_RedoutCadaddcolumnc_CardStatechar(1);
--------------------------------------------------------
altertabletc_RedoutCadaddc_CardStatechar(1);
--------------------------------------------------------
Oracle不需要关键字column。
如果是修改字段类型:
altertabletp_ParamControlaltercolumni_NextStateIDsetdatatypevarchar(8);
-------------------------------------------------------------------------------
altertabletp_ParamControlmodifyi_NextStateIDvarchar(8);
-------------------------------------------------------------------------------
区别在于Oracle不需要制定column关键字,用modify而不用setdatatype
如果是修改字段名:
altertabletp_ParamAuditNoterenamecolumntp_AuditorIDtos_AuditorID;
-------------------------------------------------------------------------------
altertabletp_ParamAuditNoterenamecolumntp_AuditorIDtos_AuditorID;
-------------------------------------------------------------------------------
二者一致
注意:如果一个字段是主键那么应该先删除主键再改名,否则改不了。
altertabletn_SpePesRegaltercolumni_SepSeqNosetdatatypevarchar(4);
altertabletn_SpePesRegdropprimarykey;
altertabletn_SpePesRegrenamecolumni_SepSeqNotos_SepSeqNo;
altertabletn_SpePesRegaddprimarykey(s_Acct,s_SepSeqNo);
如果是给字段增加注释:
commentoncolumntm_FinaOrgCode.c_OrgLvlis'机构级次';
-------------------------------------------------------------------------------
commentoncolumntm_FinaOrgCode.c_OrgLvlis'机构级次';
-------------------------------------------------------------------------------
二者一致
如果是修改表名:
renametabletbv_FinaOrgCodetotm_FinaOrgCode;
-------------------------------------------------------------------------------
renametbv_FinaOrgCodetotm_FinaOrgCode;
-------------------------------------------------------------------------------
Oracle不用table关键字
如果是删除表:
--------------------------------
droptabletm_UserRoleRelation;
--------------------------------
droptabletm_UserRoleRelation;
--------------------------------
二者一致。
如果是删除字段:
------------------------------------------------
altertabletest_citydropcolumncountry_name
------------------------------------------------
altertabletest_citydropcolumncountry_name
------------------------------------------------
二者一致
如果是更改列的限制非空
altertabletestalters_mailsetnotnull;
-------------------------------------------
altertabletestmodifys_mailnotnull;
------------------------------------------
Oracle用的是modify而db2用的是set
如果是更
改列的限制由非空变为空
--------------------------------------------------------------
altertabletp_Accountaltercolumns_CorpAcctdropnotnull;
---------------------------------------------------------------
altertabletestmodifys_mailnull;
--------------------------------------------------------------
Oracle比较简洁跟加一样,db2还得drop一下
如果是增加外键:
altertabletest_cityaddforeignkey(COUNTRY_CODE)referencestest_country(COUNTRY_CODE)
---------------------------------------------------------------------------------------------
altertableC_EMPaddconstraintyenforeignkey(DEPTNO)referencesdept(DEPTNO);
如果是删除主键:
Altertabletestdropprimarykey;
------------------------------------
altertableC_EMPdropconstraintYEN;
-------------------------------------
Oracle认的是约束名称YEN(isconstraintsname)
如果是增加主键:
altertabletest_country_cityaddprimarykey(country_code,city_code)
------------------------------------------------------------------------
altertableC_EMPaddconstrainttbwprimarykey(EMPNO);
如果是增加约束:
-------------------------------------------------------------------------------------------
altertabletest_markaddconstraintcon_1check(namein('lxr','jmx','dj','hww','yjb'))
-------------------------------------------------------------------------------------------
altertablestudentaddcheck(sexin('男','女'));
-------------------------------------------------------------------------------------------
Oracle与db2不太一样
如果是复制表:
createtablenew_table_nameas(select*fromtable_name)definitiononly;
----------------------------------------------------------------------------
createtablenew_table_nameas(select*fromtable_namewhere1=2)
-------------------------------------------------------------------------
复制表带数据
createtablenew_table_nameas(select*fromtable_namewhere1=1);
DB2不支持需要先创建后插入
如果是增加表:
---------------------------------------------------------------------------
删除自增字段
altertabletp_ParamAuditNotealtercolumni_AuditIDdropidentity;
-------------------------------------------------------------------------------
ORACLEoracle中没有自增列用sequence代替的。
createsequencesalary_seq
incrementby1---每次加几个
startwith1--从1开始计数
nomaxvalue--不设置最大值
nocycle--一直累加,不循环
cache10--有缓冲区
---有最大值,和循环
createsequencesalary_seq
minvalue100
maxvalue9999999999
startwith560
incrementby1
cache20;
--使用方法
using:insertintotableNamevalue(salary_seq.nextval,'','');
dropsequencesalary_seq
编号的连续性是不能保证的
-------------------------------------------------------------------------------