范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  本章内容是系列内容的第二部分,主要介绍Navicat工具的使用 。若查看第一部分请见:mysql系列介绍之mysql服务端及客户端的安装(一)客户端连接
  使用Navicat连接数据库在上面已经介绍过 ,不再介绍。这里主要说明一种情况 ,即有时候连接后忘记了密码 ,该如何再次查看呢 ?我们可以通过如下操作进行解密数据库密码。 选中已连接的数据库名, 点击"文件"-"导出连接",将文件导出到某一路径下
  3.将导出后的文件打开,找到password的值,在下面会用到这个值
  4.转到https://tool.lu/coderunner/下,将如下代码拷贝到文本框内(注:全部替换) 。 <?php namespace FatSmallTools; class NavicatPassword {     protected $version = 0;     protected $aesKey = "libcckeylibcckey";     protected $aesIv = "libcciv libcciv ";     protected $blowString = "3DC5CA39";     protected $blowKey = null;     protected $blowIv = null;     public function __construct($version = 12)     {         $this->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 < strlen($str1); $i++) {             $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));         }         return $result;     }      protected function encryptTwelve($string)     {         $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 FatSmallToolsNavicatPassword;   //需要指定版本,11或12  //$navicatPassword = new NavicatPassword(12);  $navicatPassword = new NavicatPassword(11);   //解密 $decode = $navicatPassword->decrypt("15057D7BA390"); echo $decode." ";
  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
  停止

微信拟推出聊天记录云备份功能每年付费180元,你能接受吗随着移动互联网时代的到来,微信已经成为国内最基本的社交和通讯工具,方便的消息收发和语音通话也逐渐取代传统的电话和短信。微信事业群总裁张小龙在2021微信公开课PRO上总结了微信十年突破技术壁垒!首个中国二维码国际标准发布为什么不用二维码?因为我只用中国的汉信码。汉信码准确地说,是中国版的二维码。二维码本身是一个舶来品,最初于20世纪80年代中期在美国问世,90年代中期发展成熟,相继出现DataMa2021中国国际数字经济博览会三大境外展团将亮相博览会9月6日8日,2021中国国际数字经济博览会将在石家庄(正定)国际会展中心举办。从2021中国国际数字经济博览会执委会获悉,本届数字经济博览会吸引了印度展览集团组织20家印度知名企同学一字不差的搬运,每天稳定10w阅读,是不是该放弃原创?头条上太多搬运工。一个复制粘贴,就OK了。可是,他永远只是别人文字的搬运工。即便他10W,或者20W,我也不会生出一丝一毫的羡慕。我还是喜欢原创,喜欢写自己心里的感受,感动,所思所如果你有一大笔钱,你会投资什么?为什么?如果有钱了,我认为应该要进行这样的资产配置1刚需房要先买无论房价高低,该买的还是要买,不能因为房价贵了租一辈子的房,那怕你在郊区置业,房子永远是人生奋斗的第一目标。要知道,将来成家中国一旦攻克汽车引擎难题,汽车引擎会变白菜价吗?绝对不会变白菜价,而且可以确定价格一定会涨到天花板!!!华为攻克了手机硬件软件一部分难题,采用国产部件的新款手机价格就上涨了40现在汽车市场有合资车压着,国产车还不敢浪,不过吉利,外星人的科技会比地球发达吗?其实这个问题我们可以退一步来类比思考外国人就一定比我们中国人科技发达吗?答案自然就清楚了。所谓外星人,指的是在地球以外的外星球独立演化形成的智慧生命,现在这个概念已经不仅仅局限于人苏联曾想挖穿地球,为何在12262米时停止?科拉超深钻孔深达12262米,据称里面黄金钻石成堆,为何苏联停止了钻探的步伐?世界上最高的山峰珠穆朗玛峰只有8844米,但是少有人知道,有那么一口井,它的深度居然达到了12,262快捷又安全的数字人民币跟支付宝有啥区别来源中国青年报客户端中国青年报客户端北京9月4日电(中青报中青网记者李若一王林宋潞)数字开启未来,服务促进发展是本届服贸会的主题。在中国银行展台,融数字与服务于一体的数字人民币大受阿里巴巴在服贸会发布全链路数字化绿色减碳等领域新技术新成果近日,2021年中国国际服务贸易交易会正式拉开帷幕,本届服贸会聚焦数字开启未来,服务促进发展主题,由阿里巴巴国际站盒马高德天猫新文创等组成的阿里巴巴集团展厅亮相服贸会数字服务专题展最新手机排名公布,9月换机必备,买对不买贵刚刚进入9月,安兔兔就发布了最新一期的旗舰手机性能排行榜,由于上个月接连发布了多款旗舰新机,因此最新的榜单排名也发生了一些变化,有新机入榜,也有一些之前的旗舰机被挤出前十。那到底榜
保留2。0L自吸6AT实属难得,家用的不二之选,解析起亚智跑Ace起亚智跑是一款非常经典的紧凑型SUV,曾经也是能够挑战本田CRV丰田RAV4荣放的车型,但今时不同往日,随着这几年韩系品牌的影响力持续走低,现在的起亚智跑绝对要低人家一头,但并不代上海市场算个啥?完全不影响五菱宏光MINIEV的全国销量近日,五菱宏光MINIEV无法申领上海市新能源汽车免费专用牌照的新闻登上了热搜,而我们也咨询了上海当地的经销商,经销商也证实了此事,不过对于宏光MINIEV来说,单单一个上海市场并然并卵GalaxyS22Ultra将按惯例创下显示亮度记录据报道,GalaxyS22Ultra将打破AMOLED显示屏亮度记录,并在这一领域设定新标准。因此,在三星旗舰手机领域,一切照旧。三星多年来一直在打破每一款新旗舰的屏幕亮度记录,因Model3已是过去式,国产纯电动车才是未来,评极氪0012021年上海车展开幕之前,特斯拉Model3还是一款众星捧月的纯电动车,但现在却跌下了神坛,3月份的销量还有25352辆,但4月份仅卖出6264辆,不管特斯拉怎么应对这件事,我感为万物互联打基础,解析塞力斯SF5华为智选版,4。68秒破百越来越多的科技公司宣布造车,小米跟华为作为国内手机出货量最高的两家公司,也纷纷宣布入局新能源汽车市场,但两个公司的策略完全不同,小米属于完全自主研发,而华为则更倾向于技术植入,这也五菱又放大招!将推出全新两门两座纯电动车,起售价或不到2万一年前,上汽通用五菱推出了宏光MINIEV,不仅快速成长为国内新能源汽车的销冠,同时也成功打入时尚圈,成为很多年轻人彰显个性的工具,在这样的背景下,五菱又放了一记大招,它将推出全新约人民币46万起售,新款英菲尼迪QX80北美售价曝光,V8大排量自吸日前,我们从相关渠道获悉,新款英菲尼迪QX80在北美市场的售价疑似曝光,其中基础价格区间为7199583630美元,折算成人民币约4653万元,如果选装英菲尼迪全模式四驱系统的话,JEEP大切诺基降10万,全系六缸自吸8AT,标配全时四驱空气悬架相信很多人都听说过不是所有的吉普都叫JEEP这句话,这是JEEP的广告语,同时也彰显了该品牌在越野车领域的地位,但现在的JEEP品牌早就没有之前那么硬派了,除了牧马人还在坚持走专业这三款发动机算是目前中国自主品牌的最高水平吗?最近几年,国内汽车市场经历了一次比较大的洗牌,一些不思进取的车企被淘汰,而大部分自主车企都是好样的,每天投入大量人力财力物力搞技术研发,有耕耘就会有收获,而2021年正是收获的季节一汽红旗言出必行!红旗H9已正式交付给中国奥运健儿9月10日,红旗H9迎来了一场盛大的交付仪式,而它们的主人正是在2020东京奥运会上获得奖牌的中国奥运健儿们,一汽红旗言出必行,体现出了大企业的担当,同时也是对中国奥运健儿最好的激给我极致游戏体验,并有大电池和快充加持保证的竟然是这款手机作为年轻人,基本上每个人的手机里都会有游戏,我们都喜欢玩游戏,但是有时游戏过大,手机带不动,让我们的游戏体验大大降低。直到我看到了红米发的官方微博,即将发布一款游戏手机RedmiK