mysql的使用
一、Liunx安装mysql
创建一个文件夹mysql
mkdir mysql
进入文件夹下载并安装MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
yum -y install mysql57-community-release-el7-10.noarch.rpm
之后就开始安装MySQL服务器。
yum -y install mysql-community-server
至此安装成功!
下面开始配置:
首先启动MySQL
systemctl start mysqld.service
查看MySQL运行状态,运行状态如图:
systemctl status mysqld.service
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
进入mysql,数据上面的初始密码
mysql -uroot -p
因为是初始密码进来的,此时不能做任何操作,需要修改密码
ALTER USER USER() IDENTIFIED BY '123456';
这里有个问题,新密码设置的时候如果设置的过于简单会报错:
输入下边命令修改密码规则
set global validate_password_policy=0;
set global validate_password_length=1;
这样就可以了,但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch
最后,想要外部用连工具连接mysql,还需要修改用户权限
修改前查看
use mysql;
select host,user from user;
修改root权限
update user set host='%' where user='root';
刷新
flush privileges;
即可连接!
安装方式(新)二、
打开官网,https://dev.mysql.com/downloads/mysql/
想下载之前版本可点如下:
centos选择Red Had…
下载服务端和客户端两个rpm包
或者通过 wget命令在线下载
wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-server-5.6.50-1.el7.x86_64.rpm
wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-client-5.6.50-1.el7.x86_64.rpm
分别执行安装命令
yum -y install MySQL-server-5.6.50-1.el7.x86_64.rpm
yum -y install MySQL-client-5.6.50-1.el7.x86_64.rpm
安装服务端的时候默认初始密码在/root/.mysql_secret
中,这是个隐藏文件cat /root/.mysql_secret
服务端,客户端下载安装之后启动进入都同上,设置新密码方式有所区别
SET PASSWORD = PASSWORD('123456');
卸载:https://blog.csdn.net/qq_39470733/article/details/80999080
二、使用 CASE WHEN THEN 完成分段统计
SELECT
SUM(CASE gender WHEN 1 THEN 1 ELSE 0 END) 男性个数,
SUM(CASE gender WHEN 2 THEN 1 ELSE 0 END) 女性个数
FROM user
三、添加索引
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE table_name
ADD PRIMARY KEY ( column
)
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE table_name
ADD UNIQUE ( column
)
3.添加INDEX(普通索引)
mysql>ALTER TABLE table_name
ADD INDEX index_name ( column
)
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE table_name
ADD FULLTEXT ( column
)
5.添加多列索引
mysql>ALTER TABLE table_name
ADD INDEX index_name ( column1
, column2
, column3
)
四、获取创建时间小于10分钟、超过一小时的数据
1、小于十分钟
SELECT * FROM `user` WHERE createTime > NOW() - INTERVAL 10 MINUTE;
2、超过一小时
SELECT * FROM `user` WHERE createTime < NOW() - INTERVAL 60 MINUTE;
五、查询一张表或多张表的数据插入到另一种表中
SELECT CONCAT("INSERT into idmapping_hbt_copy (staffId,guid,hospitalGuid,enabled) VALUES (", b.staffId ,",", a.guid ,",'f1a1d520-a621-480b-a86e-3ae32b4217d7',1);")
FROM user_doctor a INNER JOIN temp b on a.`name`=b.`name` WHERE a.hospital_guid = 'f1a1d520-a621-480b-a86e-3ae32b4217d7';
通过上边的命令查出插入语句,如下图
复制插入语句执行命令,完成插入数据。
六、线上数据量大的表在线修改表
先尝试运行一下看sql是否有问题
model=dry-run
pt-online-schema-change -h master_db -u $user -p $pwd \
--charset=utf8 \
--recursion-method=processlist\
--print --$model \
--no-check-alter\
--nocheck-unique-key-change\
--no-version-check \
--alter \
"\
MODIFY COLUMN openid VARCHAR (100),\
ADD INDEX idx_openId_appid (openId, app_id)\
"\
h=master_db,P=3306,D=taogu91,t=user_patient
实际运行
model=execute
pt-online-schema-change -h master_db -u $user -p $pwd \
--charset=utf8 \
--recursion-method=processlist\
--print --$model \
--no-check-alter\
--nocheck-unique-key-change\
--no-version-check \
--alter \
"\
MODIFY COLUMN openid VARCHAR (100),\
ADD INDEX idx_openId_appid (openId, app_id)\
"\
h=master_db,P=3306,D=taogu91,t=user_patient