powerdesigner生成mysql语句_oracle创建表的sql语句

2022-10-04 19:56:44 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表。表中每个字段的数据类型、中文注释、是否可为NULL 问题,非常影响我们建表的效率。本篇文章,以Mysql数据库表为原表,通过PowerDesigner工具将其转化成Oracle数据库建表语句。

1、以 student(学生表)为例,Mysql数据库中建表语句如下所示。需要注意的是,若要相对完美的将Mysql数据库表转换成Oracle数据库表,需要严格按照以下Mysql数据库表结构方式,标点符号都不能多、不能少。

1.1、表名、字段名,需要去除 ` 符号 ;

1.2、若字段定义过程中有 ‘ COLLATE utf8mb4_bin ‘ 关键字,去掉 ;

1.3、若字段定义过程中缺少 ‘NOT NULL’、 ‘DEFAULT NULL’, 请添加 ;

代码语言:javascript复制
-- 去掉的字符:`
-- 去掉的字符:COLLATE utf8mb4_bin 
-- stu_name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性别',

CREATE TABLE student (
  id int(8) NOT NULL COMMENT '主键',
  stu_name varchar(255) DEFAULT NULL COMMENT '学生姓名',
  stu_sex varchar(8) DEFAULT NULL COMMENT '性别',
  stu_age int(4) DEFAULT NULL COMMENT '学生年龄',
  stu_class varchar(255) DEFAULT NULL COMMENT '学生班级',
  stu_address varchar(255) DEFAULT NULL COMMENT '家庭住址',
  stu_mother varchar(255) DEFAULT NULL COMMENT '学生母亲姓名',
  stu_m_age varchar(255) DEFAULT NULL COMMENT '学生母亲年龄',
  stu_m_phone varchar(255) DEFAULT NULL COMMENT '学生母亲电话',
  stu_father varchar(255) DEFAULT NULL COMMENT '学生父亲姓名',
  stu_f_age varchar(255) DEFAULT NULL COMMENT '学生父亲年龄',
  stu_f_phone varchar(255) DEFAULT NULL COMMENT '学生父亲电话',
  create_date datetime DEFAULT NULL COMMENT '创建日期',
  update_date datetime DEFAULT NULL COMMENT '更新日期',
  start_date datetime DEFAULT NULL COMMENT '入学时间',
  stop_date datetime DEFAULT NULL COMMENT '毕业时间',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';

2、 打开 PowerDesigner 软件, 选择 文件 —> 反向工程 —> Database ,如下图1所示。

图1

3、 之后,会弹出 New Physical Date Model 窗口。 在该窗口 “常规” 选项界面, 由于我们是将Mysql数据库中表转成Oracle数据库中表,所以 “DBMS” 行选择 “MySQL 5.0” 选项,如图2所示。

图2

4、之后,会弹出 “Database Reverse Engineering Options” 窗口, 在该窗口点击 “Add Files (Ctrl N)” 图标,选择Mysql数据库student表sql脚本,如图3、 图4所示。

图3

图4

5、由步骤4操作后,PowerDesigner 软件界面如下图5所示。

图5

6、在 PowerDesigner 软件上,选择 “数据库” —> “Change Current DBMS…” 选项,如下图6所示。

图6

7、之后,会弹出 “Change DBMS” 窗口。 由于我们是将Mysql数据库表转化成Oracle数据库表,在这里 “New 数据库管” 一行选择 “ORACLE Version 11g” 。 “Current 数据库管” 直接手动输入:ORACLE Version 11g ,如下图7所示。

图7

8、使用快捷键: Ctrl G,调用出 “Database Generation” 窗口,选择生成Oracle建表语句文件的路径,并对文件进行命名,如下图8所示。

图8

9、之后,会弹出 “Generated Files” 窗口,由log日志、生成的sql脚本文件可知,程序运行成功。点击 “Generated Files” 窗口中的 “关闭(C)” 按钮后,会弹出 “结果列表” 窗口,该窗口无实际意义,直接关闭。 如下图9、图10所示。

图9

图10

10、打开生成好的SQL脚本,删除语句: constraint PK_STUDENT primary key (id) , 并删除一个多余的逗号。如下图11所示。

图11

11、将SQL脚本中所有的英文半角双引号去掉,可使用NotePad 工具直接替换。如下图12所示,在下图12中,我将转成Oracle建表语句的 student 表名改成了 student003. 因为在我的Oracle数据库中,已经存在了 student 表,这次为了测试检验,故在此将表名更换。

图12

12、在SQL语句中,添加给表建立中文注释的命令、添加给表建立主键的命令。命令如下所示,截图如图13所示。

代码语言:javascript复制
-- 新增命令,给表命名。
COMMENT ON TABLE student IS '学生表';

-- 新增命令,给表添加主键。
alter table student add constraint pk_student primary key(id);

图13

13、经过上述处理之后,SQL脚本即可放到PL/SQL软件中直接运行使用。 图14、 图15、 图16 是效果展示图。

Mysql数据库表转成Oracle数据库表的SQL语句如下所示:

代码语言:javascript复制
/*==============================================================*/
/* DBMS name:      ORACLE Version 11g                           */
/* Created on:     2020/2/14 22:29:28                           */
/*==============================================================*/


drop table student003 cascade constraints;

/*==============================================================*/
/* Table: student003                                             */
/*==============================================================*/
create table student003 
(
   id                 INTEGER              not null,
   stu_name           VARCHAR2(255)        default NULL,
   stu_sex            VARCHAR2(8)          default NULL,
   stu_age            INTEGER              default NULL,
   stu_class          VARCHAR2(255)        default NULL,
   stu_address        VARCHAR2(255)        default NULL,
   stu_mother         VARCHAR2(255)        default NULL,
   stu_m_age          VARCHAR2(255)        default NULL,
   stu_m_phone        VARCHAR2(255)        default NULL,
   stu_father         VARCHAR2(255)        default NULL,
   stu_f_age          VARCHAR2(255)        default NULL,
   stu_f_phone        VARCHAR2(255)        default NULL,
   create_date        DATE                 default NULL,
   update_date        DATE                 default NULL,
   start_date         DATE                 default NULL,
   stop_date          DATE                 default NULL
);

-- 新增命令,给表命名。
COMMENT ON TABLE student003 IS '学生表';

-- 新增命令,给表添加主键。
alter table student003 add constraint pk_student003 primary key(id);


comment on column student003.id is
'主键';

comment on column student003.stu_name is
'学生姓名';

comment on column student003.stu_sex is
'性别';

comment on column student003.stu_age is
'学生年龄';

comment on column student003.stu_class is
'学生班级';

comment on column student003.stu_address is
'家庭住址';

comment on column student003.stu_mother is
'学生母亲姓名';

comment on column student003.stu_m_age is
'学生母亲年龄';

comment on column student003.stu_m_phone is
'学生母亲电话';

comment on column student003.stu_father is
'学生父亲姓名';

comment on column student003.stu_f_age is
'学生父亲年龄';

comment on column student003.stu_f_phone is
'学生父亲电话';

comment on column student003.create_date is
'创建日期';

comment on column student003.update_date is
'更新日期';

comment on column student003.start_date is
'入学时间';

comment on column student003.stop_date is
'毕业时间';

图14

图15

图16

姊妹篇文章: PowerDesigner,如何将Oracle数据库建表语句转化成Mysql数据库建表语句。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/196116.html原文链接:https://javaforall.cn

0 人点赞