大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
在实际工作中,一张表,我们可能需要在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’, 请添加 ;
-- 去掉的字符:`
-- 去掉的字符: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所示。
-- 新增命令,给表命名。
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语句如下所示:
/*==============================================================*/
/* 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数据库建表语句。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196116.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...