mysql学习--使用navicat查看数据库密码

news2024/11/18 1:47:33

数据库通常分为两种:关系型数据库非关系型数据库,关系型数据库通常会建立很多二维数据表,形成一对一、一对多、多对多等关系;之后利用SQL语句查询我们所需要的数据;非关系型数据库基于Key-Value的对应关系,并且查询的过程中不需要经过SQL解析

在公司中,使用关系型数据库较多,其中非关系型数据库更多的是用在爬取数据中。
学习mysql更多的是学习SQL语句,SQL语句是我们与数据库沟通的语言

SQL语句分类

  1. DDL

数据定义语言,可以通过DDL语句对数据库或者表进行创建、删除、修改等操作

  1. DML

数据操作语言,可以通过DML语句对表进行添加、删除、修改等操作

  1. DQL

数据查询语言,可以通过DQL从数据库中查询记录

  1. DCL

数据控制语言,对数据库、表格的权限进行相关访问操作

在SQL的学习中DQL语句是重点内容,需要特别学习,同时也需要知道基本的数据库、表的增删改查操作

数据库的、表增删改SQL语句

  • 对表操作
-- 查看当前数据库中有那些表
SHOW TABLES;
-- 查看某一张表的表结构
DESC t_singer;
-- 创建一张新的表(如果不存在)
CREATE TABLE IF NOT EXISTS `users`(
name VARCHAR(10),
age INT,
height DOUBLE
);
-- 删除一个表(如果表存在)
DROP TABLE IF EXISTS `users`;
-- 创建一个完整的表结构
-- 	默认值为0 DEFAULT(0)
-- 	唯一且不为空 UNIQUE NOT NULL
CREATE TABLE IF NOT EXISTS `users`(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) UNIQUE NOT NULL,
	level INT DEFAULT(0),
	telPhone VARCHAR(20) UNIQUE
);
-- 修改表结构
-- 修改表名字
ALTER TABLE `users` RENAME `t_users`;
-- 添加新字段(createTime TIMESTAMP类型)
ALTER TABLE `t_users` ADD createTime TIMESTAMP;
ALTER TABLE `t_users` ADD updateTime TIMESTAMP;
-- 修改字段名称(修改createTime为createAt DATETIME类型)
ALTER TABLE `t_users` CHANGE createTime createAt DATETIME;
-- 删除某一个字段
ALTER TABLE `t_users` DROP updateTime;
-- 修改某一字段的类型(将id改为bigint类型)
ALTER TABLE `t_users` MODIFY id BIGINT;
  • 对数据进行操作
CREATE TABLE IF NOT EXISTS `products`(
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`title` VARCHAR(20),
	`description` VARCHAR(200),
	`price` DOUBLE,
	`publishTime` DATETIME
);
-- 插入数据
INSERT INTO `products` (title,description,price,publishTime) VALUES ('苹果','苹果只要998',998,'2122-09-10');
INSERT INTO `products` (title,description,price,publishTime) VALUES ('香蕉','香蕉只要888',888,'2123-09-10');
INSERT INTO `products` (title,description,price,publishTime) VALUES ('栗子','栗子只要666',666,'2127-06-06');
-- 删除数据(全部删除)
-- DELETE FROM `products`
-- 删除某条数据
DELETE FROM `products` WHERE id=5;
-- 修改数据(表中全部数据)
UPDATE `products` SET price=8888;
-- 修改数据(根据条件修改某一条数据)
UPDATE `products` SET price=8888 WHERE id=6;
UPDATE `products` SET price=8888,title='栗子好吃' WHERE id=6;

-- 当修改某一条数据时,使用最新的时间记录
ALTER TABLE `products` ADD `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

查询操作

  • 基本查询
CREATE TABLE IF NOT EXISTS `t_products` (
	id INT PRIMARY KEY AUTO_INCREMENT,
	brand VARCHAR(20),
	title VARCHAR(100) NOT NULL,
	price DOUBLE NOT NULL,
	score DECIMAL (2,1),
	voteCnt INT,
	URL VARCHAR(100),
	pid INT
);

-- 基本查询
-- 查询所有数据的所有字段
SELECT * FROM `t_products`;
-- 查询所有字段,并且指定对应的字段
SELECT id,brand,title,price FROM `t_products`;
-- 查询字段后给字段重命名(起一个别名 AS可以省略)
SELECT id AS phoneId,brand AS phoneBrand,title AS phoneTitle,price AS phonePrice FROM `t_products`;
-- WHERE的比较运算符
SELECT * FROM `t_products` WHERE price <1000;
-- 大于等于
SELECT * FROM `t_products` WHERE price >=3000;
-- 等于
SELECT * FROM `t_products` WHERE price =2699;
-- 查询所有品牌
SELECT * FROM `t_products` WHERE brand='栗子';
-- 查询不是苹果品牌
SELECT * FROM `t_products` WHERE brand!='苹果';

-- 查询brand为华为,并且价格小于2000的手机
SELECT * FROM `t_products` WHERE brand='栗子' && price<3000;
SELECT * FROM `t_products` WHERE brand='栗子' AND price<3000;
-- 查询华为手机或价格大于5000的手机
SELECT * FROM `t_products` WHERE brand='栗子' || price>5000;
SELECT * FROM `t_products` WHERE brand='栗子' OR price>5000;
-- 查询区间范围
SELECT * FROM `t_products` WHERE price>=1000 && price<=2000;
SELECT * FROM `t_products` WHERE price BETWEEN 1000 AND 2000;

-- 枚举多个结果,其中之一 小米或华为
SELECT * FROM `t_products` WHERE brand ='香蕉' OR brand ='栗子';
SELECT * FROM `t_products` WHERE brand IN ('香蕉','栗子');

-- 模糊查询
-- 查询所有title以v开头的商品
SELECT * FROM `t_products` WHERE title LIKE 'v%';
-- 查询所有title中带v的商品
SELECT * FROM `t_products` WHERE title LIKE '%v%';
-- 查询所有title带M,并且M必须是第三个字符
SELECT * FROM `t_products` WHERE title LIKE '__M%';

-- 对结果进行排序
-- 查询所有价格大于1000的产品,并且按照评分的降序获取结果
SELECT * FROM `t_products` WHERE price>1000 ORDER BY score DESC;

SELECT * FROM `t_products` WHERE price>1000 ORDER BY score ASC;

-- 分页查询(查询20条数据从41条开始查找)
SELECT * FROM `t_products` LIMIT 20 OFFSET 40;

  • 聚合函数
-- 计算华为手机的平均价格
SELECT AVG(price) FROM `t_products` WHERE brand='栗子';
-- 计算华为手机的平均分数
SELECT AVG(score) AS miAvgScore FROM `t_products` WHERE brand='香蕉';

-- 选择手机中评分最高/最低的分数
SELECT MAX(score) FROM `t_products`;
SELECT MIN(score) FROM `t_products`;

-- 计算所有手机一共有多少投票
SELECT SUM(voteCnt) from `t_products`;

-- 计算一共有多少商品(填*的原因是因为填写其他字段可能为空)
SELECT COUNT(*) FROM `t_products`;
-- 计算华为
SELECT COUNT(*) FROM `t_products` WHERE brand='栗子';
-- 计算华为手机的平均价格
SELECT AVG(price) FROM `t_products` WHERE brand='香蕉';
-- 计算华为手机的平均分数
SELECT AVG(score) AS miAvgScore FROM `t_products` WHERE brand='香蕉';

-- 选择手机中评分最高/最低的分数
SELECT MAX(score) FROM `t_products`;
SELECT MIN(score) FROM `t_products`;

-- 计算所有手机一共有多少投票
SELECT SUM(voteCnt) from `t_products`;

-- 计算一共有多少商品(填*的原因是因为填写其他字段可能为空)
SELECT COUNT(*) FROM `t_products`;
-- 计算华为
SELECT COUNT(*) FROM `t_products` WHERE brand='栗子';

-- GROUP BY 对数据根据品牌进行分组ROUND(AVG(score),2)保留两位小数
SELECT
	brand,
	MAX( price ) maxPrice,
	MIN( price ) minPrice,
	ROUND( AVG( price ), 2 ) avgPrice,
	ROUND( AVG( score ), 2 ) avgScore
FROM
	`t_products` 
GROUP BY
	brand
	HAVING avgScore>7 AND avgPrice>4000;
-- 	对分组查询结果进行约束(平均分大于7的并且平均价格大于4000的)

基本的查询语句就这么多,查询语句也包含左连接、右连接等操作,篇幅有限,下次分享,剩下的就来分享我遇到的一些问题。

遇到问题

在刚学mysql的时候,需要连接数据库,之前我在navicat连接过我本地的数据库,但是由于时间比较长,我把密码忘了,那样就没法使用代码连接到数据库了,经过百度,我找到了使用navicat查看数据库密码的一个操作。

  1. 导出连接
    在这里插入图片描述
    选择要导出的数据库,记住要勾选下边的导出密码,
  2. 找到加密后的密码
    在导出的文件中找到Password,复制后边加密的密码
  3. 打开破解网站复制下列代码
<?php
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);
    }
};
 
 
$navicatPassword = new NavicatPassword(12);
$decode = $navicatPassword->decrypt('复制出来的密码');
echo $decode."\n";
?>
  1. 点击执行破解
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习 day24(多类分类模型,Softmax回归算法及其损失函数)

多类分类 多类分类问题仍然是分类问题&#xff0c;所以预测y的可能结果是少量的&#xff0c;而不是无穷多个&#xff0c;且对于多类分类它&#xff1e;2 如上图&#xff1a;左侧为二分类&#xff0c;右侧为多分类&#xff0c;可以通过决策边界来划分区域 Softmax回归算法 …

记录--在高德地图实现卷帘效果

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 介绍 今天介绍一个非常简单的入门级小案例&#xff0c;就是地图的卷帘效果实现&#xff0c;各大地图引擎供应商都有相关示例&#xff0c;很奇怪高德居然没有&#xff0c;我看了下文档发现其实也是可以…

Fastpillars论文解读

本论文是美团在pointpillar算法的基础上的改进。 主要改进点分为一下两个&#xff1a; 1.引入注意力机制对pillar内的特征进行提取&#xff0c;改善直接maxpooling导致的细粒度信息丢失。 2.参考CSPNet和RepVGG构建了一个全新的轻量化backbone。 一、pillar注意力机制特征提…

怎么把MP4转换成GIF?分享几个方法轻松转换!

如何将mp4转换为gif&#xff1f;在分享视频剪辑素材到社交媒体时&#xff0c;许多人会选择将其转换为gif格式。这是因为GIF文件加载速度更快&#xff0c;文件大小更小。此外&#xff0c;将MP4转换为GIF也方便人们在电子邮件和聊天应用程序中发送动态图像。下面&#xff0c;我们…

【Linux】文件描述符 (上篇)

文章目录 &#x1f4d6; 前言1. 文件的预备知识2. 复习C语言的文件操作3. Linux系统级文件接口3.1 open、 close、 read、 write 接口&#xff1a;3.2 内核当中实现的映射关系&#xff1a;3.3 如何理解Linux下一切皆文件&#xff1a; &#x1f4d6; 前言 本章开始&#xff0c;…

python绘制带有误差棒的条形图

文章目录 bar和barh加入误差棒定制误差棒颜色 bar和barh 在matplotlib中&#xff0c;通过bar和barh来绘制条形图&#xff0c;分别表示纵向和横向的条形图。二者的输入数据均主要为高度x和标签height&#xff0c;示例如下 import matplotlib.pyplot as plt import numpy as np…

MySQL CDC技术方案梳理

本篇主要探讨MySQL数据同步的各类常见技术方案及优劣势对比分析&#xff0c;从而更加深层次的理解方案&#xff0c;进而在后续的实际业务中&#xff0c;更好的选择方案。 1 CDC概念 CDC即Change Data Capture&#xff0c;变更数据捕获&#xff0c;即当数据发生变更时&#xff…

Ubuntu: scp命令使用及Permission denied错误解决方案

scp命令介绍 scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 Ubuntu 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp local_file remote_usernameremote_ip:remote_folder scp /Users/X.pem root192.168.1.247:/usr/local/ssl Permission…

java项目之高校校园点餐系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的闲一品交易平台。技术交流和部署相关看文末&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&#…

傻瓜式一键生成主子表

文章目录 傻瓜式一键生成主子表 简介创建主子表示例 根据已有主表创建子表示例 创建空属性主子表示例 总结 傻瓜式一键生成主子表 直接将xml导入到Studio里即可。下载文件连接&#xff1a; CSDN链接阿里云盘 简介 很多同学在创建主子表时&#xff0c;都会可能遇到如下一些问…

日本留学托福要求多少分才及格呢?

日本有悠久的历史和文化&#xff0c;吸引了越来越多的留学生前往探索和学习。那么&#xff0c;日本留学托福要求多少分才及格呢&#xff1f; 日本留学托福成绩要求 综合类&#xff1a;通常要求申请者取得托福总分在80以上&#xff0c;各项分数要求分别为口语20以上&#xff0c…

LinuxI2C应用编程——I2C-Tools的使用

文章目录 I2C 硬件框架I2C 软件框架I2C协议&#xff08;传输数据的格式&#xff09;写操作读操作I2C 信号 SMBus 协议概述硬件和软件上的区别SMBus 协议分析符号的含义SMBus Quick CommandSMBus Receive ByteSMBus Send ByteSMBus Read ByteSMBus Read WordSMBus Write ByteSMB…

11_Linux阻塞与非阻塞

目录 阻塞和非阻塞IO简介 等待队列 等待队列头 等待队列项 轮询 Linux驱动下的poll操作函数 阻塞式访问IO实验 阻塞式访问IO驱动程序编写 运行测试 非阻塞式IO实验 运行测试 阻塞和非阻塞IO简介 阻塞和非阻塞IO是Linux驱动开发里面很常见的两种设备访问模式,在编写…

充分利用测试自动化的 10 个最佳实践

目录 前言&#xff1a; 实践1&#xff1a;手动和自动测试结合 实践2&#xff1a;特别注意回归测试 实践3&#xff1a;包括端到端测试 实践4&#xff1a;为自动化测试提供集体所有权 实践5&#xff1a;详细计划与测试相关的所有流程 实践6&#xff1a;选择适合您需求的自…

Python随机生成2堆三维点云点,有固定的重复率并可视化

Python随机生成2堆三维点云点&#xff0c;有固定的重复率并可视化 1. 效果图2. 源码 这篇博客源于博友的提问&#xff0c;刚好电脑在旁边没啥事&#xff0c;那就开整吧。 np.random 生成随机点&#xff08;提供了俩种方法&#xff0c;1. xyz限制都是0~MAX值&#xff0c;2. xyz分…

IDEA中使用.env文件配置信息

一、说明 我们以配置阿里云的 Access Key 的信息为例&#xff08;配置别的信息当然也可以&#xff0c;我只是举个例子&#xff01;&#xff01;&#xff01;&#xff09;&#xff0c;假设我们的代码中需要用到它。Access Key有两个属性&#xff0c;分别为【ALIBABA_CLOUD_ACCE…

【剧前爆米花--前端三剑客】html的一些常用标签及其实例

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于html前端的文章&#xff0c;在这篇文章中我会简单介绍一些常用的html标签&#xff0c;并给出他们的应用实例&#xff0c;希望对你有所帮助&#xff01; 目录 html常见标签 标题标…

python_day3_tuple

元组tuple &#xff1a;无法修改&#xff08;只读的列表&#xff09; t1 () t2 tuple() t3 (1, java, True, ()) print(f"t1的数据类型是&#xff1a;{type(t1)}") print(f"t2的数据类型是&#xff1a;{type(t2)}") print(f"t3的数据类型是&#…

ChatLaw:北大团队智能法律助手,国产大模型成功应用普惠法律服务

“ 技术发展的本质是普惠&#xff0c;用技术降低普通人获取法律知识的成本&#xff0c;向社会输出普惠的公平正义。—— 北京大学 ChatLaw 项目组” 刚刚清华团队升级了国产大模型&#xff1a;ChatGLM2-6B&#xff0c;ChatGLM2-6B 初体验。 转眼这两天北大团队推出的智能法律助…

DAY36:贪心算法(三)最大子数组和+买卖股票最佳时机

文章目录 53.最大子数组和枚举思路暴力解法贪心思路完整版时间复杂度 122.买卖股票的最佳时机Ⅱ&#xff08;解法比较巧妙&#xff09;思路完整版总结 53.最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元…