一、Linux下的MySQL的安装与使用:
卸载MySQL:
1.关闭当前MySQL服务:systemctl stop mysql.service
2.查看当前mysql安装状况:rpm -qa | grep -i mysql
3.卸载上述命令查询出的已安装的程序:yum remove mysql-xxx mysql-xxx mysql-xxxx
4.删除mysql相关文件:
(1)查找相关文件:find / -name mysql
(2)删除上述命令查找出的相关文件:rm -rf xxx
5.删除my.cnf配置文件:rm -rf /etc/my.cnf
二、安装MySQL:
1.MySQL的3大版本:
(1)MySQL Community Server社区版本:开源免费,自由下载,但不提供官方支持,适用于大部分普通用户。
(2)MySQL Enterprise Edition企业版本:需付费,不能在线下载。提供了更多的功能和完善的技术支持,更适合于对数据库的功能和可靠性要求较高的客户
(3)MySQL Cluster集群版:开源免费,用于架构集群服务器,可以将几个MySQL Server封装成为一个Server,需要在社区版或企业版的基础上使用
2.下载MySQL指定版本
保留的文件:
(1)mysql-community-common-8.0.25-1.e17.x86_64.rpm
(2)mysql-community-client-plugins-8.0.25-1.e17.x86_64.rpm
(3)mysql-community-libs-8.0.25-1.el7.x86_64.rpm
(4)mysql-community-client-8.0.25-1.e17.x86_64.rpm
(5)mysql-community-server-8.0.25-1.el7.x86_64.rpm
3.CentOS7下检查MySQL依赖:
(1)检查/tmp临时目录权限:chmod -R 777 /tmp
(2)安装前检查依赖:rpm -qa|grep libaio;rpm -qa|grep net-tools;
4.安装过程:
在MySQL的安装文件目录下依次执行:
(1)rpm -ivh mysql-community-common-8.0.25-1.e17.x86_64.rpm
(2)rpm -ivh mysql-community-client-plugins-8.0.25-1.e17.x86_64.rpm
(3)rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
(4)rpm -ivh mysql-community-client-8.0.25-1.e17.x86_64.rpm
(5)rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
执行如下命令查看MySQL版本:mysql --version
服务初始化:mysql --initialize --user-mysql
查看密码:cat /var/log/mysqld.log
启动MySQL服务:systemctl start mysqld
设置开机自启动:system enable mysqld
三、字符集相关操作:
1.修改MySQL5.7字符集:
在MySQL8.0之前,默认字符集为latin1。utf8字符集指向的是utf8mb3,网站开发人员在数据库设计时往往会将编码修改为utf8字符集。如果未修改则会出现乱码的问题。从MySQL8.0开始,数据库的默认编码变为utf8mb4,从而避免上述的乱码问题。
查看默认使用的字符集:show variables like '%char%';
修改字符集:vim /etc/my.cnf;在文件的最后添加character_set_server = utf8;
2.已有数据库/数据表的字符集变更
alter database/table 数据库名/数据表名 character set 'utf8';
3.各个级别的字符集:
(1)服务器级别字符集
(2)数据库级别字符集:如果创建数据库未指明数据库级别的字符集时则会使用服务器级别的字符集和比较规则作为数据库的字符集和比较规则
(3)表级别:如果创建数据表未指明数据表级别的字符集时则会使用当前数据库级别的字符集和比较规则作为数据表的字符集和比较规则
(4)列级别:如果创建数据表中的字段未指明列级别的字符集时则会使用当前数据表级别的字符集和比较规则作为当前列级别的字符集和比较规则
变量名称 | 对应含义 |
character_set_server | 服务器级别的字符集 |
character_set_database | 当前数据库的字符集 |
character_set_client | 服务器解码请求时使用的字符集 |
character_set_connection | 服务器处理请求时会把字符串从character_set_client转变为character_set_connection |
character_set_results | 服务器向客户端返回数据时使用的字符集 |
4.请求到响应过程中字符集的变化
(1)客户端发送请求所使用的字符集:一般情况下客户端所使用的字符集和当前操作系统的字符集一致,不同的操作系统使用的字符集可能不一样
(2)服务器接收到客户端发送来的请求实际上是一串二进制的字节,它会认为这串字节采用的字符集是character_set_client,然后把这串字节转换为character_set_connection字符集编码的字符。
(3)根据表中对应字段的字符集查找相应的记录,character_set_connection转换为表中对应字段的字符集
(4)将查询结果从具体的列使用的字符集转换为character_set_results
(5)使用操作系统的字符集解码响应的字节串
五、SQL大小写规范:
1.Windows和Linux平台的区别:
在SQL中,关键字和函数名是不区分大小写的,不过Windows系统默认大小写不敏感,Linux大小写敏感。可通过查看变量lower_case_table_names判断是否区分大小写,其中:
(1).lower_case_table_names = 0表示大小写敏感
(2).lower_case_table_names = 1表示大小写不敏感,创建的表和数据库都是以小写形式放在磁盘上,对于sql语句都是转换为小写对表和数据库进行查找
(3).lower_case_table_names = 2表示创建的表和数据库依据语句上的格式存放,凡是查找都是转换为小写进行。
MySQL在LInux下的数据库名、表名、列名的大小写规则:
(1)数据库名、表名、表的别名、变量名都是严格区分大小写的
(2)关键字、函数名在SQL中不区分大小写
(3)列名与列的别名在所有情况下都是忽略大小写的
SQL编写建议:
(1)关键字和函数名称全部大写
(2)数据库名、表名、表别名、字段名、字段别名等全部小写
(3)SQL语句必须以分号结尾