📇 本类导航
本页自动汇总「MySQL」分类下的全部笔记(含子分类),随笔记增删实时更新。
前两天申请了个云服务器,然后去关掉防火墙方便调试,结果没两天MySQL就被黑了
一个库被删,多了一个库
内容如下:All your data is a backed up. You must pay 0.1 BTC to 19sPh8TP3RKHkEG2x9y8y1yXHTChMgrSXU 48 hours for recover it. After 48 hours expiration we will sell all your data on dark markets and the database dump will be dropped from our server!You can buy bitcoin here, [https://localbitcoins.com](https://localbitcoins.com) or [https://buy.moonpay.io/](https://buy.moonpay.io/) After paying write to us in the mail with your DB IP: recmydb+2@onionmail.org and you will receive a link to download your database dump.对此我想说:
1、年轻人劝你不要不讲码德!!!
2、也提醒各位,千万要记得开防火墙,MySQL千万要改密码:
3、记得把多余的库z_readme_to_recover和表xrlbrp及user的可疑账号server信息删除。如果觉得不放心可以重装MySQL,哈哈~
字段的类型为:timestamp,
往下看,默认那里改为 ==CURRENT_TIMESTAMP==
数据库存储数据的特点
1、将数据放到表中,表再放到库中
2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。
4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性”
5、表中的数据是按行存储的,每一行类似于java中的“对象”。
一、常用的聚合函数(以下都是求以列为单位)
count(col) 表示求指定列的总行数
max(col): 表示求指定列的最大值
min(col): 表示求指定列的最小值
sum(col): 表示求指定列的和
avg(col): 表示求指定列的平均值
1、求总行数
– 返回非NULL数据的总行数
select count(height) from students;– 返回总行数,包含null值记录
select count(*) from students;2、求最大值
– 查询女生的编号最大值
select max(id) from students where gender = 2;3、求最小值
– 查询未删除的学生最小编号
select min(id) from students where is_delete = 0;4、求和
– 查询男生的总身高
select sum(height) from students where gender = 1;– 平均身高
select sum(height) / count(*) from students where gender = 1;– 求男生的平均身高, 聚合函数不统计null值,平均身高有误
select avg(height) from students where gender = 1;– 求男生的平均身高, 包含身高是null的
select avg(ifnull(height,0)) from students where gender = 1;说明:ifnull函数:表示判断指定字段的值是否为null,如果为空使用自己提供的值
聚合函数的特点
聚合函数默认忽略字段为null的记录 要想列值为null的记录也参与计算,必须使用ifnull函数对null值做替换(详情请看第⑥的第二个例子即可,就在上面一点)
假设有两个表 T1,T2
表的结构如下图所示
一、内连接(inner join)【普通外键引用】
如果想把用户信息、积分、等级都列出来,那么一般会这样写:
select * from T1 ,T2 where T1.userid = T2.userid
(其实这样的结果等同于select * from T1 inner join T2 on T1.userid=T2.userid )。把两个表中都存在userid的行拼成一行(即内联),但后者的效率会比前者高很多,建议用后者(内联)的写法。
SQL语句:select * from T1 inner join T2 on T1.userid=T2.userid
二、外连接
① 左外连接(left join)
显示左表T1中的所有行,并把右表T2中符合条件加到左表T1中;右表T2中不符合条件,就不用加入结果表中,并且NULL表示。
SQL语句:select * from T1 left join T2 on T1.userid=T2.userid
② 右外连接(right join)
显示右表T2中的所有行,并把左表T1中符合条件加到右表T2中;左表T1中不符合条件,就不用加入结果表中,并且NULL表示。
SQL语句:select * from T1 right join T2 on T1.userid=T2.userid
③全联(full join)
显示左表T1、右表T2两边中的所有行,即把左联结果表+右联结果表组合在一起,然后过滤掉重复的。
SQL语句:select * from T1 full join T2 on T1.userid=T2.userid
==说明你上一次生成的id就是乱序了==
解决方法:
使用 navicat ,右键表名,选择截断表截断表:清空数据表中所有数据,然后ID从1开始 清空表:清空数据表中所有数据
如果是重装数据库的话,直接把MySQL文件夹下的data文件夹删掉,再从4.1往后按流程走即可 (先看我!!!)
一、下载MySQL压缩包
dev.mysql.com/downloads/mysql/5.5.html#downloads
也可以直接用我这个v8.1.0版本
pan.baidu.com/s/1ImE4HX1zCwe5CeiMF1UfJw?pwd=xo08
提取码:xo08
–来自百度网盘超级会员V4的分享二、配置环境变量
如下图所示
三、配置用户配置
第一步:在D:\MySQL\mysql-8.1.0-winx64目录下创建一个新的文件后缀名为 .ini 的 my.ini空白文件。
第二步:编辑创建好的my.ini文件,用于初始化mysql数据库
主要修改下面第 ==5== 和 ==7== 行的路径即可 tips:路径必须为“\”的形式。[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 ----------是你的文件路径------------- basedir=D:\\software\\MySQL\\mysql-8.1.0-winx64 # 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建 datadir=D:\\software\\MySQL\\mysql-8.1.0-winx64\\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4四、安装MySQL服务
4.1
如果先前在电脑中装过mysql,请在cmd命令窗口输入 sc delete mysql 删除之前的mysql服务。第一次安装请忽略打开命令行,输入mysqld --initialize 进行初始化mysql。
输入上述命令,按回车,会发现文件夹下会多出一个新的文件夹data。
等待初始化完成会生成一个后缀名为.err的文件(在刚刚生成的data文件夹中),里面存放的是初始化登录mysql的密码;
打开.err文件:找到下图中所示的root账户和root密码;
4.2
打开cmd窗口,输入mysqld --install 命令;
ps!!!: 如果出现 Install/Remove of the Service Denied! 错误的话。解决办法: 使用管理员身份运行cmd
接上,输入 net start mysql 开启mysql服务;
使用root账户和刚刚文件里查看的密码进行登录;
出现以下界面说明mysql登录成功;
4.3
修改mysql root账户密码:使用命令:
# 本地 alter user 'root'@'localhost' identified with mysql_native_password by '**G#t9WhZr2@qL7BmPnXeD**';** # 远程 ALTER USER 'root'@'%' IDENTIFIED BY 'G#t9WhZr2@qL7BmPnXeD'(密码); # 修改密码:记得flush privileges一下 flush privileges;












