`
takkymj
  • 浏览: 128246 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对比mysql oracle db2 的部分ddl语法

阅读更多
建表、删除表: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才开始支持。

分享到:
评论

相关推荐

    MySQL笔记-MySQL⾼⼿系列

    与其他商业数据库如Oracle、SQL Server、DB2相比,MySQL更适合初创公司和预算有限的项目,尤其在互联网领域,其市场份额居首。 2. **数据库基础知识** - **DB(Database)**:数据库是存储数据的容器,它可以是...

    史上最全的oracle笔记

    Oracle是Oracle公司开发的一种数据库管理系统(DBMS),与其他知名DBMS如微软的SQL Server、IBM的DB2、MySQL和Sybase ASE等竞争。Oracle数据库提供了强大的数据管理和高可用性功能。 四、Oracle操作 在Unix/Linux...

    MySQL核心技术学习笔记

    常见的DBMS包括MySQL、Oracle、DB2和SQL Server等。 - **SQL(Structured Query Language,结构化查询语言)**:用于访问和管理数据库的标准语言。几乎所有的DBMS都支持SQL,使得开发者能够在不同的数据库系统之间...

    Oracle命令 查询大全

    根据提供的文件信息,“Oracle命令查询大全”主要涵盖了Oracle数据库管理系统的各类命令,包括但不限于数据定义语言(DDL)、数据操纵语言(DML)、事务控制、查询语言等方面的内容。下面将对这些核心知识点进行详细...

    mysql基础教程-mysql的基本curd操作

    接着,关系数据库成为主流,如Oracle、DB2、SQL Server和MySQL,其中关系数据库通过表格形式表达实体间的关系。近年来,由于对高性能和可扩展性的需求,非关系型数据库(NoSQL)逐渐兴起,如键值存储、列式存储、...

    黑马程序员 数据库MYSQL.docx

    Oracle 收购了 SUN 公司,收购了 MYSQL。 * DB2:IBM 公司的数据库产品,收费的。常应用在银行系统中。 * SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。 * SyBase:已经淡出历史舞台。提供...

    Oracle讲义

    Oracle是一种关系型数据库管理系统(RDBMS),与其他主流数据库如SQL Server、MySQL、DB2等竞争。SQL(Structured Query Language)是用于管理关系数据库的语言,包括四大类:DQL(数据查询语言)、DML(数据操纵...

    MySql必备基础知识.doc

    常见的数据库系统包括Oracle、IBM的DB2、微软的SQL Server、Sybase和MySQL。其中,Oracle和MySQL都是广泛使用的数据库解决方案。 4. **理解数据库** RDBMS(关系型数据库管理系统)由管理者和数据库组成,数据库...

    达内JAVA软件工程师 培训资料 Oracle数据库部分讲义

    ### 达内JAVA软件工程师培训资料:Oracle数据库部分讲义 #### 1. Oracle数据库简介 在本节中,我们将详细介绍Oracle数据库的基础概念及其组成部分。 ##### 1.1 数据库与数据库管理系统(DBMS) - **数据库**...

    MySql面试题.doc

    【MySQL面试题解析】 MySQL是世界上最流行的关系型数据库管理系统之一,尤其在Web开发领域中广泛应用。以下是一些MySQL面试中的常见问题及其详细解答: 1. 数据库是什么? 数据库是一个用于存储和管理数据的系统...

    超详细Oracle教程

    - **比较分析**:对比Oracle与其他数据库系统(如MySQL、SQL Server、DB2等)的主要差异。 - **应用场景**:探讨不同数据库系统在不同场景下的优劣。 通过以上知识点的梳理,读者可以全面了解Oracle数据库的相关...

    sql语法从入门到精通

    SQL语法的灵活性让它可以与各种数据库程序协同工作,例如MS Access、DB2、Informix、Microsoft SQL Server、Oracle、Sybase以及MySQL等。这些数据库系统都支持SQL标准,但也各自拥有特定的私有扩展。 RDBMS(关系型...

    数据库关键字保留字大全

    这里收录了多种数据库管理系统中的保留字,包括DB2、Oracle、MySQL、SQL Server等。这些保留字是数据库管理系统中不可或缺的一部分,理解和熟悉这些保留字对数据库的设计、开发和管理至关重要。 DB2保留字 DB2是...

    ORACLE 中文教程.PDF

    - **关系型数据库**:例如Oracle、DB2、Microsoft SQL Server 和 MySQL等,这些数据库以表格的形式存储数据,支持SQL语言。 - **非关系型数据库**:例如dBase 和 FoxBase等,这类数据库不使用表格形式来组织数据。 ...

    01.MySQL 安装配置及日常管理-20150403.pdf

    接下来的部分将详细介绍MySQL的安装配置步骤以及日常管理的相关知识,包括基本参数设置、常用命令、SQL语法等方面的内容。这部分知识对于初学者和专业DBA都非常有用,可以帮助他们更好地管理和优化MySQL数据库。 - ...

    Mysql 全部教程

    关系型数据库如MySQL、Oracle、DB2、SQL Server和SQLite等,以表格的形式存储数据,每行代表一条记录,每列代表特定的数据。 在MySQL中,数据存储在数据库中,每个数据库由多个表组成。创建一个新的数据库可以使用`...

    深入浅出MySQL数据库1

    ### 深入浅出MySQL数据库1 #### 1. 什么是数据库? 数据库(Database)是一种按照特定数据结构来组织、存储和管理数据的仓库。它不仅存储数据本身,还包括了与这些数据相关的各种元数据(例如数据的类型、长度等)...

    JAVA_WEB06_mysql.doc

    3. **常见关系型数据库**:商业数据库包括Oracle、SQL Server、DB2和Sybase;开源数据库中,MySQL尤其受欢迎,常用于Web应用程序,尽管已被Oracle公司收购。SQLite则是一种小型、轻量级的数据库,适合嵌入式设备。 ...

Global site tag (gtag.js) - Google Analytics