pd 生成mysql语句_PDMan + Navicat Premium + MySQL 数据库设计和工具
Navicat Premium 和 MySQL查看以前的一些文章
PDMan
簡介
PDMan是一款數據庫建模工具,國產開源易用。支持常用的MySQL、Oracal等數據庫,具體信息查看官網:http://www.pdman.cn/
使用
下載安裝
image.png
下載完成后,一路安裝即可。(windows最新版本2.2.0有bug,沒有同步按鈕,因此安裝了2.1.6)
安裝完成后,打開軟件是如下界面:
在這里插入圖片描述
創建新模塊
點擊下圖左側新建模塊
在這里插入圖片描述
建好模塊后,在數據表下,新建表:
image.png
點擊字段信息,即可編輯該表的字段:
image.png
字段名表示字段描述信息,邏輯名表示表的字段名
image.png
開始菜單欄
設置功能
點擊設置按鈕
在這里插入圖片描述
會顯示如下默認配置,每次建表時,都會加上如下字段
在這里插入圖片描述
這里可以根據情況修改一下
數據庫連接
點擊如下按鈕,可以連接到數據庫
在這里插入圖片描述
image.png
image.png
測試連接
image.png
同步數據到數據庫
選擇 模型版本 選項卡:
在這里插入圖片描述
點擊 初始化基線 出現如下頁面:
在這里插入圖片描述
填寫好信息后點擊確定,可以看到數據庫生成了一張 PDMAN_DB_VERSION 表用來記錄版本信息:
在這里插入圖片描述
再回到PDMan 發現界面如下:
在這里插入圖片描述
點擊下方的 未同步 按鈕,即可進行同步表操作。
修改數據庫同步
修改數據庫pdman會刪除原來的表格ums_member,生成臨時復制的表pdman_up_ums_member,如下圖:
image.png
image.png
注意說明COMMENT 里面的字符串出現英文的;報錯。還有就是默認值丟失DEFAULT 4,如下圖
image.png
同步成功如下圖
刷新Navicat數據庫,臨時表會刪除,然后更新修改
image.png
可以看到pdman_db_version這個是記錄我們更新記錄的,不要手動更改
image.png
自定義建表語句、刪除數據代碼語句、重建數據代表碼
在原本的數據庫表中存在desc字段,我們在使用數據庫備份的時候,一般都會給表名與字段名加上引號,如:
-- ----------------------------
-- Table structure for lwt_game_groupitem
-- ----------------------------
DROP TABLE IF EXISTS `lwt_game_groupitem`;
CREATE TABLE `lwt_game_groupitem` (
`ID` varchar(32) NOT NULL,
`NAME` varchar(32) DEFAULT NULL,
`TITLE` varchar(32) DEFAULT NULL,
`CODE` varchar(32) DEFAULT NULL,
`GROUPID` varchar(32) DEFAULT NULL,
`TYPE` varchar(32) DEFAULT NULL,
`MEMO` varchar(255) DEFAULT NULL,
`ORGI` varchar(32) DEFAULT NULL,
`STATUS` varchar(32) DEFAULT NULL,
`CREATETIME` timestamp NULL DEFAULT NULL,
`UPDATETIME` timestamp NULL DEFAULT NULL,
`CREATER` varchar(255) DEFAULT NULL,
`PLAYWAYID` varchar(32) DEFAULT NULL,
`GAME` varchar(32) DEFAULT NULL,
`DEFAULTVALUE` tinyint(4) DEFAULT NULL,
`VALUE` varchar(255) DEFAULT NULL,
`SORTINDEX` int(11) DEFAULT '0',
UNIQUE KEY `SQL121227155530400` (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是在使用pdman逆向數據后得到的表,并沒有加引號``,導致在同步數據庫的時候并初始化版本的時候,會報異常,此時我們就應該自定義建表語句、刪除數據代碼語句、重建數據代表碼
在這里插入圖片描述
創建數據表:
CREATE TABLE `{{=it.entity.title}}`(
{{ pkList = [] ; }}
{{~it.entity.fields:field:index}}
{{? field.pk }}{{ pkList.push(field.name) }}{{?}}
`{{=field.name}}` {{=field.type}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTO_INCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }} COMMENT '{{=it.func.join(field.chnname,field.remark,' ')}}' {{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}
{{~}}
{{? pkList.length >0 }}
PRIMARY KEY ({{~pkList:pkName:i}}`{{= pkName }}`{{= i
{{?}}
) COMMENT = '{{=it.func.join(it.entity.chnname,it.entity.remark,' ') }}';{{=it.separator}}
$blankline
刪除數據表:
DROP TABLE `{{=it.entity.title}}`;{{=it.separator}}/*SkipError*/
重建表數據:
DROP TABLE `PDMAN_UP_{{=it.oldEntity.title}}`;{{=it.separator}}/*SkipError*/
create table `PDMAN_UP_{{=it.oldEntity.title}}`
as select * from `{{=it.oldEntity.title}}`;{{=it.separator}}
$blankline
drop table `{{=it.oldEntity.title}}`;{{=it.separator}}
$blankline
CREATE TABLE `{{=it.newEntity.title}}`(
{{ pkList = [] ; }}
{{~it.newEntity.fields:field:index}}
{{? field.pk }}{{ pkList.push(field.name) }}{{?}}
`{{=field.name}}` {{=field.type}} {{= field.notNull ? 'NOT NULL' : '' }} COMMENT '{{=it.func.join(field.chnname,field.remark,';')}}' {{= index < it.newEntity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}
{{~}}
{{? pkList.length >0 }}
PRIMARY KEY ({{~pkList:pkName:i}}`{{= pkName }}`{{= i
{{?}}
) COMMENT = '{{=it.func.join(it.newEntity.chnname,it.newEntity.remark,';') }}';{{=it.separator}}
$blankline
{{ sameCols = it.func.intersect(it.newEntity.fields,it.oldEntity.fields) ;}}
insert into `{{=it.newEntity.title}}`(
{{~sameCols:field:index}}
`{{=field.name}}`{{? index
{{~}}
)
select
{{~sameCols:field:index}}
`{{=field.name}}`{{? index
{{~}}
from `PDMAN_UP_{{=it.oldEntity.title}}`;{{=it.separator}}
$blankline
drop table `PDMAN_UP_{{=it.oldEntity.title}}`;{{=it.separator}}
$blankline
{{~it.newEntity.indexs:index}}
ALTER TABLE `{{=it.newEntity.title}}` ADD {{? index.isUnique}}UNIQUE{{??}}INDEX{{?}} `{{=index.name}}`({{=it.func.join(...index.fields,',')}});{{=it.separator}}
{{~}}
總結
以上是生活随笔為你收集整理的pd 生成mysql语句_PDMan + Navicat Premium + MySQL 数据库设计和工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 踩过的坑_MySQL数据库踩
- 下一篇: mysql 压缩表_MySQL Inno