本章内容是系列内容的第二部分,主要介绍Navicat工具的使用 。若查看第一部分请见:mysql系列介绍之mysql服务端及客户端的安装(一)
客户端连接
使用Navicat连接数据库在上面已经介绍过 ,不再介绍。这里主要说明一种情况 ,即有时候连接后忘记了密码 ,该如何再次查看呢 ?我们可以通过如下操作进行解密数据库密码。
- 选中已连接的数据库名,
- 点击'文件'-'导出连接',将文件导出到某一路径下
3.将导出后的文件打开,找到password的值,在下面会用到这个值
4.转到
https://tool.lu/coderunner/下,将如下代码拷贝到文本框内(注:全部替换) 。
version = $version;
$this->blowKey = sha1('3DC5CA39', true);
$this->blowIv = hex2bin('d9c7c3c8870d64bd');
}
public function encrypt($string)
{
$result = FALSE;
switch ($this->version) {
case 11:
$result = $this->encryptEleven($string);
break;
case 12:
$result = $this->encryptTwelve($string);
break;
default:
break;
}
return $result;
}
protected function encryptEleven($string)
{
$round = intval(floor(strlen($string) / 8));
$leftLength = strlen($string) % 8;
$result = '';
$currentVector = $this->blowIv;
for ($i = 0; $i < round i temp='$this-'>encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
$currentVector = $this->xorBytes($currentVector, $temp);
$result .= $temp;
}
if ($leftLength) {
$currentVector = $this->encryptBlock($currentVector);
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
}
return strtoupper(bin2hex($result));
}
protected function encryptBlock($block)
{
return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
}
protected function decryptBlock($block)
{
return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
}
protected function xorBytes($str1, $str2)
{
$result = '';
for ($i = 0; $i < strlenstr1 i result .='chr(ord($str1[$i])' ordstr2i return result protected function encrypttwelvestring result='openssl_encrypt($string,' aes-128-cbc this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
return strtoupper(bin2hex($result));
}
public function decrypt($string)
{
$result = FALSE;
switch ($this->version) {
case 11:
$result = $this->decryptEleven($string);
break;
case 12:
$result = $this->decryptTwelve($string);
break;
default:
break;
}
return $result;
}
protected function decryptEleven($upperString)
{
$string = hex2bin(strtolower($upperString));
$round = intval(floor(strlen($string) / 8));
$leftLength = strlen($string) % 8;
$result = '';
$currentVector = $this->blowIv;
for ($i = 0; $i < round i encryptedblock='substr($string,' 8 i 8 temp='$this-'>xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
$currentVector = $this->xorBytes($currentVector, $encryptedBlock);
$result .= $temp;
}
if ($leftLength) {
$currentVector = $this->encryptBlock($currentVector);
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
}
return $result;
}
protected function decryptTwelve($upperString)
{
$string = hex2bin(strtolower($upperString));
return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
}
}
use FatSmallTools\NavicatPassword;
//需要指定版本,11或12
//$navicatPassword = new NavicatPassword(12);
$navicatPassword = new NavicatPassword(11);
//解密
$decode = $navicatPassword->decrypt('15057D7BA390');
echo $decode."\n";
5.然后将password的值复制到倒数第二行,点击运行 。具体如下:
6.执行后,右侧的文本框就会显示解密后的密码 。
数据库操作
创建库创建
- 右击数据库,点击新建数据库。
2.在弹出的窗口中输入数据库名,字符集和排序规则,点击确定 。其中:
- 数据库名 :自己定义
- 字符集:utf-8(倒数第二个)
- 排序规则:utf8_general_ci
创建库删除
选中其中一个数据库右击,点击数据库删除即可 。
数据库连接
- 连接 :在Navicat中双击后就连接上该数据库,同时图标也变为绿色的了 。
- 关闭 :右击该数据库,点击数据库关闭 ,数据库就断开连接 ,颜色变为灰色 。
表的操作
表创建
- 选择其中一个已连接上的数据库,点击表,新建表。
2.输入表的列名 ,类型,长度等,直到所有列都创建成功。
3.点击保存,给表起个名字 。表创建成功
其它操作
右击该表,弹出一个列表,该列表中有很多功能可操作,接下来我们重点介绍常用几种操作
- 打开表 :打开表时加载BLOB字段(图片)
- 打开表(快速) :BLOB字段(图片)将不会被加载直至你点击该单元格
- 新建表 : 新建一张表
- 设计表 : 可以进行修改表字段或查看该表有哪些字典
- 删除表 :将表及数据全部删除
- 清空表 :清除全部数据但不重置自动增长递增值 ,自动递增值可以从表列表查看 。
- 截断表 :清除全部数据且重置自动增长值 。
- 复制表 :可以复制一张表结构相同的表
- 设置权限 : 可以给表设置各种操作权限,如select ,insert ,update ,delete,drop
- 导入/导出向导 : 在下面介绍
- 转储SQL文件 : 在下面介绍
查询表信息
有时候写SQL的时候,我们需要查看是那个表? 或者是那个表中的那个字段 ? 或者是通过数据查询在那张表 ?那么接下来我们就来介绍如下这三张方式 :
- 添加/查询表注释
- 添加/查询字段注释
- 通过数据查询在那张表
添加/查询表注释
操作步骤 :
- 选择一张表 ,右击点击设计表 。
2.在注释一列添加表的备注信息 ,备注表名 ,点击保存。
3.选择查看,点击详细信息 ,然后就可以看到注释中的表名了 。
如果你所使用的业务表都有注释 ,那么通过此种方式就可以快速的找到对应的表,非常的方便 。
添加/查询字段注释
操作步骤:
- 选中其中一张表右击,点击设计表 。
- 选中其中的一个字段,然后在下面的注释中备注上字段的含义 .
3.继续通过设计表查看或者通过如下方式来查看(两种方式都可以)
通过数据查询在那张表
这个功能对测试来说 ,非常有用 。因为你在测试过程中可能会遇到业务操作的数据到底是写到哪张表了 ? 通过上面的方式又找不到 ,怎么办 ?那么就可以使用下面这个功能 ,具体操作步骤:
- 选择要查询的数据库 ,右击选择'在数据库中查找'。 会弹出下面的界面 。
2.在查询输入框中你要查询的数据 ,点击查找 。
数据操作
数据操作主要是指打开一张表后 ,然后对数据进行的操作 ,这里面的功能通过编写SQL也能实现 ,但是如果你在界面操作的话,会比写SQL更快一些 。
底角区
首先我们看下面区域的操作 ,具体如图所示 :
最下面的几个操作图标 ,其实这些图标如果你不理解的话,鼠标移到图标上都能看到中文含义 。
操作区
点击其中一个字段或者选中一条数据 右击 ,然后会出现如下的一些操作 :
- 设置为空白字符串 : 将选中的字段设置空字符串
- 设置为NULL : 将选中的字段设置为NULL
- 复制 :复制选中列或整行的数据 ,这个功能可以和下面添加数据结合使用 ,如想插入一条数据 ,先复制一条数据,然后点击+插入进行修改即可。
- 复制为 : 可以复制为insert或者update语句 ,当你想写一条插入/更新语句 ,若觉得太麻烦 ,直接选择这个选项 ,非常的方便 。
- 保存数据为 :将字段数据保存到本地文件
- 删除记录 : 删除该条记录
- 排序 : 按照所选列进行排序
- 筛选 :按照选中值进行筛选 ,相当于SQL语句加了where语句,如【where 选择列 操作符 选中值 】
- 移除全部排除及筛选 : 移除筛选
- 显示 :这个功能也比较有用 ,可以将某一列进行冻结(像Excel) ,也可以设置格式 ;可以设置行高和宽 ;还可以设置隐藏/显示某列 。
- 刷新 : 刷新变更数据
以上的几个功能 ,其中比较常用到的就是复制数据 ,复制SQL语句 ,以及显示这几个功能 。
快速查询数据
当然也可以通过快捷键快速的查找某条数据 ,可以按Ctrl +F ,输入要查询的关键字 ,就会搜索出你想要的数据 。
数据备份
此部分主要介绍将数据库表中的的数据/表/库通过各种方式,如导出向导、转储SQL文件 、备份等 ,以起到备份数据的作用 。
以下主要介绍如下的三种方式,分别是:
- 导入向导/导出向导
- 转储SQL文件/运行SQL文件
- 备份/恢复
导出向导
Navicat可以支持将数据导出到不同的文件格式中,如 : TXT ,CSV ,HTML ,XML,SQL,JSON等 。
若是导出SQL文件 ,则是具体的SQL语句 ,其余格式都是具体的数据 。
比如,我要导出json格式 ,导出后的数据就是下面这样的 。
无论导出什么格式的文件,导出的目的有两个:
- 进行数据备份,以便后续重新使用 。
- 导出后进行修改数据后,可以再次导入
也就是说导出后最终还是为了导入而使用的 。
导入向导
导入向导就是将导出的文件进行导入 ,选择表的导入向导,选择导入的文件 ,最后进行导入 。
一般情况下,导入数据时最好在原表中没有数据 ,或者向一个新表中导入数据(表结构相同) ,若原表有数据 ,可能会导致导入失败 。
转储SQL文件
转储SQL文件主要是将表结构和数据进行导出一个SQL文件 ,可以起到备份作用或者提供其它数据进行导入 。Navicat提供了两种选择,分别是仅结构 ,结构和数据。
- 仅结构 : 选择该选项,导出的SQL文件中将会是创建表的SQL语句
- 结构和数据 :选择该选项,导出的SQL文件是创建表和插入数据的SQL语句 。
选择转储SQL文件时,可以选择库,也可以选择具体的某个表 。
以下为仅结构导出的SQL语句 :
# 文件:abc.sql
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for abc
-- ----------------------------
DROP TABLE IF EXISTS `abc`;
CREATE TABLE `abc` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`age` smallint(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
运行SQL文件
运行SQL文件 : 是指可以选择外部的SQL文件进行运行 ,然后将数据生成到选择的目标库中 。这里的SQL文件一般是指导出向导产生的SQL文件 或者是 转储SQL文件到的文件 。
备份恢复
通过设置备份,可以将数据库表中数据进行备份 ,当数据出现丢失或损坏的情况下,可以通过备份将数据还原 。
那么如果要进行恢复操作呢 ? 可以选择其中的一个备份点进行恢复操作 。
进行恢复的话,数据库原有的数据将全部被恢复成备份点的数据 。
计划
这里需要注意的是,新建备份只是将当前时刻中当前所有数据进行了备份。若在后续过程中 ,此数据库数据仍在发生变化 ,那么新变化的数据就不会在备份中 ,所以备份都会结合增量备份或者差异备份,将变化的数据进行也定点备份 。而在Navicat中主要是靠计划任务来完成的 。以下为设置计划的步骤 :
- 选择计划 ,点击新建批处理作业 。
2.选择其中的一个库后,点击保存 ,输入保存名字 (这里相当于创建了一个计划任务)。
3.然后设置计划任务,如图所示。这里主要设置的是计划和设置里的选项 。
4.设置计划和设置选项 ,其中计划设置的策略一般都是根据数据量的大小以及数据的重要程度来确定备份策略 。
数据传输
如果你想将其中一个数据库的表,视图,函数等导入到另外一个数据库中 ,除了上面介绍的导入导出、转储SQL等功能之外 ,同样也可以使用数据传输的方式进行 ,而且这种方式更加直接一些 。
数据传输 : 其实就是将其中一个数据库的数据直接导入另外一个连接的库中,
以下为导入后的效果 。
查询
查询是我们最常用的功能之一 ,我们所编写的SQL都是查询里面 。打开的文本输入框就可以编写SQL语句 。
以下为新建查询中编写的SQL语句 。
这里面有两种运行选择,分别是运行 和 运行已选择的 ,它们的区别是 :
- 运行 : 点击此选项 ,会将当前窗口下的SQL语句都进行运行 ,语句多了很有可能会报错 。
- 运行已选择的 : 只运行当前选中的SQL语句 ,一般运行SQL都选择此选项 。
视图
有时候我们因为编写了大量的SQL语句 ,每一条SQL语句都代表一个具体的业务实现 ,但是因为编写得太多 ,导致每次查找起来都不太方便 。
但如果你使用视图的话,就可以根据视图名称快速地找到你的业务实现 。新建视图步骤如下:
- 点击视图选项 ,点击新建视图 。
2.在弹出的文本框中编写SQL语句或者将已经写好的粘贴到这里来 。
3.最终新建后,将变为如下的形式 。如果想运行那个场景直接点击,即可查询出对应的数据 ,跟在查询中选中运行的SQL一样的效果。是不是非常的方便 。
快捷键
快捷键可以帮我们提高工作效率, 下面我们来看看Navicat有哪些快捷键 。
常规快捷键
快捷键 | 动作 |
F8 | Navicat主窗口或者对象选项卡 |
CTRL + Q | 新建查询 |
F1 | 帮助 |
CTRL + G | 打开设置位置的文件夹 |
F6 | 命令列界面 |
CTRL +N | 新建对象 ,若选中表,则是新建表 |
CTRL + SHIFT +F | 在数据库或模式中查找 |
表快捷键
快捷键 | 动作 |
F5 | 刷新数据 |
ESC | 选中数据 |
CTRL += 或 CTRL + 滑动滚轮向上 | 放大窗口字体 |
CTRL +- 或 CTRL + 滑动滚轮向下 | 缩小 |
CTRL + / | 注释行 |
CTRL + 0 | 重置缩放 |
CTRL + O | 打开表 |
CTRL +F | 查找数据 |
F3 | 查找下一个 |
SHIFT + F3 | 查找上一个 |
CTRL + D | 打开设计表 |
CTRL + Q | 打开查询对象 |
SHIFT + 方向键 | 选择单元格 |
ENTER | 打开编辑器来编辑数据 |
INSERT or CTRL + N | 添加记录 |
CTRL + DELETE | 删除记录 |
CTRL + S | 应用记录更改 |
ESC | 放弃记录更改 |
CTRL + T | 停止加载数据 |
CTRL + O | 导入SQL ,此功能非常牛 ,打开查询编辑器,直接CTRL + O就可以打开外部窗口 |
CTRL + E | 选择当前语句 |
CTRL + R | 运行或运行已选择的 |
SHIFT + CTRL + R | 运行当前语句 |
CTRL +T | 停止 |