设为首页 收藏本站
查看: 800|回复: 0

[经验分享] 对比mysql oracle db2 的部分ddl语法

[复制链接]

尚未签到

发表于 2016-8-6 15:45:21 | 显示全部楼层 |阅读模式
  建表、删除表:mysql  oracle  db2基本相同
create table test(id integer,name varchar(20),address varchar(20));
(oracle 多用varchar2,但也支持varchar)
drop table test;
  但是修改表就有很大的不同了,如下:
  1,增加列:相同
alter table test add mail varchar(128);
  2,删除列:
oracle 与mysql相同:alter table test drop column mail;
db2              :不提供删除列功能(解决办法是删除表,重建)
  3,更改列名
oracle : alter table test rename column mail to mail2;
mysql  : alter talbe test change mail mail2 varchar(128);
db2    : 不提供更改列名功能(解决办法同删除,或者通过建立一个新视图解决)
  4,更改列类型
oracle :alter table test modify column (mail2 integer);
mysql  :alter table test modify column mail2 integer;
db2    :alter table test alter mail varchar(256) 只可以加宽,不能更改类型
  5,更改列的限制(主键、非空)
db2   :alter table test alter mail null/not null;
mysql :alter table test modify mail2 varchar(29) not null;
oracle:alter table test modify mail2 null/not null;
  关于db2不提供解决办法,参考这里
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/0207adamache/0430_adamache3.html
截取部分原文
-------------------------------------------------------------------------------
DROP COLUMN:DB2 不允许您删除一个列。我可以想到您希望删除列的三个理由:
回收空间:如果您希望这样做,可以导出您希望保存的数据,删除那个表,用您需要的那些列重新创建表,然后装入
这个表。这是否代价高昂?当然是,但是回收空间需要这样或者 REORG TABLE。这些本来就是代价高昂的操作。
  这个列不再是行的逻辑部分:例如,您意识到您的雇员可能有两个地址,并且停止跟踪雇员(employee)表中的地址
(雇员表和雇员地址(employee_address)表之间现在有 n:m 关系)。在雇员表上创建一个不包含地址列的视图。
如果您真的要用新奇的方法,可以使用 RENAME TABLE 命令给基表一个新的名称,然后将原始表名作为该视图的
名称。您的视图也可以连接雇员表中的有用列和从雇员地址获得的地址。现在我们回到了关系的正道。
  列变宽了。如果它是 VARCHAR,那您运气不错。DB2 允许您将 VARCHAR 列最多加宽至表空间(tablespace)
中定义的页大小宽度(缺省的 4K 页大小为 4,005,而在 32K 页上最多为 32,672):
---------------------------------------------------------------------------------
  但是过程中问一个朋友,得到的结论是可以改,矛盾啊继续找资料:
http://www-1.ibm.com/support/docview.wss?uid=swg21004049
部分截取原文
-------------------------------------------------------------------------------
In DB2® Universal Database™ (DB2 UDB) Version 8.2, the Control Center automates
the process of altering a table where recreation of the table is necessary,
saving the user from performing a lengthy set of manual steps. Specifically,
the Control Center will automate the following operations: rename a column;
drop a column; change the data type of a column; change the length, scope,
or precision values for a column; change whether a column is nullable. If necessary,
the table that is being changed will be dropped and recreated, and DB2 UDB will
help the user restore any dependent objects and transform the existing data into
the target data type of each remaining column.
You cannot drop a column in DB2 UDB Version 8.1 or earlier. There are work-arounds.
 For example, you can increase the width of a VARCHAR column up to the largest
 column width supported by the page size used by the table (4005 bytes by default,
  but possibly as large as 32672 byes on 32K pages). The page size is chosen
  when the table space is created. To handle more complex changes:
  -----------------------------------------------------------------------------
  原来DB2 UDB Version 8.1 or earlier不支持,8.2才开始支持。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253777-1-1.html 上篇帖子: 备忘:jbpm3 生成oracle 的建表脚本过程 下篇帖子: 哪些初始化参数最影响Oracle的系统性能?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表