百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

mysql系列之一文详解Navicat工具的使用(二)

ztj100 2025-04-11 09:49 83 浏览 0 评论


本章内容是系列内容的第二部分,主要介绍Navicat工具的使用 。若查看第一部分请见:mysql系列介绍之mysql服务端及客户端的安装(一)

客户端连接

使用Navicat连接数据库在上面已经介绍过 ,不再介绍。这里主要说明一种情况 ,即有时候连接后忘记了密码 ,该如何再次查看呢 ?我们可以通过如下操作进行解密数据库密码。

  1. 选中已连接的数据库名,
  2. 点击'文件'-'导出连接',将文件导出到某一路径下

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.执行后,右侧的文本框就会显示解密后的密码 。

数据库操作

创建库创建

  1. 右击数据库,点击新建数据库。

2.在弹出的窗口中输入数据库名,字符集和排序规则,点击确定 。其中:

  • 数据库名 :自己定义
  • 字符集:utf-8(倒数第二个)
  • 排序规则:utf8_general_ci

创建库删除

选中其中一个数据库右击,点击数据库删除即可 。

数据库连接

  • 连接 :在Navicat中双击后就连接上该数据库,同时图标也变为绿色的了 。
  • 关闭 :右击该数据库,点击数据库关闭 ,数据库就断开连接 ,颜色变为灰色 。


表的操作

表创建

  1. 选择其中一个已连接上的数据库,点击表,新建表。

2.输入表的列名 ,类型,长度等,直到所有列都创建成功。

3.点击保存,给表起个名字 。表创建成功


其它操作

右击该表,弹出一个列表,该列表中有很多功能可操作,接下来我们重点介绍常用几种操作

  • 打开表 :打开表时加载BLOB字段(图片)
  • 打开表(快速) :BLOB字段(图片)将不会被加载直至你点击该单元格
  • 新建表 : 新建一张表
  • 设计表 : 可以进行修改表字段或查看该表有哪些字典
  • 删除表 :将表及数据全部删除
  • 清空表 :清除全部数据但不重置自动增长递增值 ,自动递增值可以从表列表查看 。
  • 截断表 :清除全部数据且重置自动增长值 。
  • 复制表 :可以复制一张表结构相同的表
  • 设置权限 : 可以给表设置各种操作权限,如select ,insert ,update ,delete,drop
  • 导入/导出向导 : 在下面介绍
  • 转储SQL文件 : 在下面介绍

查询表信息

有时候写SQL的时候,我们需要查看是那个表? 或者是那个表中的那个字段 ? 或者是通过数据查询在那张表 ?那么接下来我们就来介绍如下这三张方式 :

  • 添加/查询表注释
  • 添加/查询字段注释
  • 通过数据查询在那张表

添加/查询表注释

操作步骤 :

  1. 选择一张表 ,右击点击设计表 。

2.在注释一列添加表的备注信息 ,备注表名 ,点击保存。

3.选择查看,点击详细信息 ,然后就可以看到注释中的表名了 。

如果你所使用的业务表都有注释 ,那么通过此种方式就可以快速的找到对应的表,非常的方便 。

添加/查询字段注释

操作步骤:

  1. 选中其中一张表右击,点击设计表 。
  2. 选中其中的一个字段,然后在下面的注释中备注上字段的含义 .

3.继续通过设计表查看或者通过如下方式来查看(两种方式都可以)

通过数据查询在那张表

这个功能对测试来说 ,非常有用 。因为你在测试过程中可能会遇到业务操作的数据到底是写到哪张表了 ? 通过上面的方式又找不到 ,怎么办 ?那么就可以使用下面这个功能 ,具体操作步骤:

  1. 选择要查询的数据库 ,右击选择'在数据库中查找'。 会弹出下面的界面 。

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中主要是靠计划任务来完成的 。以下为设置计划的步骤 :

  1. 选择计划 ,点击新建批处理作业 。

2.选择其中的一个库后,点击保存 ,输入保存名字 (这里相当于创建了一个计划任务)。

3.然后设置计划任务,如图所示。这里主要设置的是计划和设置里的选项 。

4.设置计划和设置选项 ,其中计划设置的策略一般都是根据数据量的大小以及数据的重要程度来确定备份策略 。


数据传输

如果你想将其中一个数据库的表,视图,函数等导入到另外一个数据库中 ,除了上面介绍的导入导出、转储SQL等功能之外 ,同样也可以使用数据传输的方式进行 ,而且这种方式更加直接一些 。

数据传输 : 其实就是将其中一个数据库的数据直接导入另外一个连接的库中,

以下为导入后的效果 。

查询

查询是我们最常用的功能之一 ,我们所编写的SQL都是查询里面 。打开的文本输入框就可以编写SQL语句 。

以下为新建查询中编写的SQL语句 。

这里面有两种运行选择,分别是运行 和 运行已选择的 ,它们的区别是 :

  • 运行 : 点击此选项 ,会将当前窗口下的SQL语句都进行运行 ,语句多了很有可能会报错 。
  • 运行已选择的 : 只运行当前选中的SQL语句 ,一般运行SQL都选择此选项 。

视图

有时候我们因为编写了大量的SQL语句 ,每一条SQL语句都代表一个具体的业务实现 ,但是因为编写得太多 ,导致每次查找起来都不太方便 。

但如果你使用视图的话,就可以根据视图名称快速地找到你的业务实现 。新建视图步骤如下:

  1. 点击视图选项 ,点击新建视图 。

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

停止



相关推荐

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

强烈推荐!Python 这个宝藏库 re 正则匹配

Python的re模块(RegularExpression正则表达式)提供各种正则表达式的匹配操作。...

Python爬虫中正则表达式的用法,只讲如何应用,不讲原理

Python爬虫:正则的用法(非原理)。大家好,这节课给大家讲正则的实际用法,不讲原理,通俗易懂的讲如何用正则抓取内容。·导入re库,这里是需要从html这段字符串中提取出中间的那几个文字。实例一个对...

Python数据分析实战-正则提取文本的URL网址和邮箱(源码和效果)

实现功能:Python数据分析实战-利用正则表达式提取文本中的URL网址和邮箱...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...

深入理解re模块:Python中的正则表达式神器解析

在Python中,"re"是一个强大的模块,用于处理正则表达式(regularexpressions)。正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换或提取特定模式...

如何使用正则表达式和 Python 匹配不以模式开头的字符串

需要在Python中使用正则表达式来匹配不以给定模式开头的字符串吗?如果是这样,你可以使用下面的语法来查找所有的字符串,除了那些不以https开始的字符串。r"^(?!https).*&...

先Mark后用!8分钟读懂 Python 性能优化

从本文总结了Python开发时,遇到的性能优化问题的定位和解决。概述:性能优化的原则——优化需要优化的部分。性能优化的一般步骤:首先,让你的程序跑起来结果一切正常。然后,运行这个结果正常的代码,看看它...

Python“三步”即可爬取,毋庸置疑

声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块importreimportrequests#第二步获取你想爬取的网页地址,发送请求,获取网页内...

简单学Python——re库(正则表达式)2(split、findall、和sub)

1、split():分割字符串,返回列表语法:re.split('分隔符','目标字符串')例如:importrere.split(',','...

Lavazza拉瓦萨再度牵手上海大师赛

阅读此文前,麻烦您点击一下“关注”,方便您进行讨论和分享。Lavazza拉瓦萨再度牵手上海大师赛标题:2024上海大师赛:网球与咖啡的浪漫邂逅在2024年的上海劳力士大师赛上,拉瓦萨咖啡再次成为官...

ArkUI-X构建Android平台AAR及使用

本教程主要讲述如何利用ArkUI-XSDK完成AndroidAAR开发,实现基于ArkTS的声明式开发范式在android平台显示。包括:1.跨平台Library工程开发介绍...

Deepseek写歌详细教程(怎样用deepseek写歌功能)

以下为结合DeepSeek及相关工具实现AI写歌的详细教程,涵盖作词、作曲、演唱全流程:一、核心流程三步法1.AI生成歌词-打开DeepSeek(网页/APP/API),使用结构化提示词生成歌词:...

“AI说唱解说影视”走红,“零基础入行”靠谱吗?本报记者实测

“手里翻找冻鱼,精心的布局;老漠却不言语,脸上带笑意……”《狂飙》剧情被写成歌词,再配上“科目三”背景音乐的演唱,这段1分钟30秒的视频受到了无数网友的点赞。最近一段时间随着AI技术的发展,说唱解说影...

AI音乐制作神器揭秘!3款工具让你秒变高手

在音乐创作的领域里,每个人都有一颗想要成为大师的心。但是面对复杂的乐理知识和繁复的制作过程,许多人的热情被一点点消磨。...

取消回复欢迎 发表评论: