MySQL 总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 引擎类型与其他 DBMS 一样,MySQL 有一个具体管理和处理数据的内部引擎。在你使用CREATE TABLE 语句时,该引擎具体创建表,而在你使用 SELECT 语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在 DBMS 内,不需要过多关注它。但 MySQL 与其他 DBMS 不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行 CREATE TABLE 和 SELECT 等命令。为什么要发行多种引擎呢?因为它们具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。以下是几个需要知道的引擎:❑

引擎类型



与其他 DBMS 一样,MySQL 有一个具体管理和处理数据的内部引擎。在你使用CREATE TABLE 语句时,该引擎具体创建表,而在你使用 SELECT 语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在 DBMS 内,不需要过多关注它。但 MySQL 与其他 DBMS 不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行 CREATE TABLE 和 SELECT 等命令。为什么要发行多种引擎呢?因为它们具有各自不同的功能和特性,为不同的任务选择正确的引擎能获得良好的功能和灵活性。


以下是几个需要知道的引擎:


❑ InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索;


❑ MEMORY在功能等同于MyISAM,但由于数据存储在内存中,速度很快(特别适合于临时表);


❑ MyISAM 是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。


外键不能跨引擎 混用引擎类型有一个大缺陷。外键(用于强制实施引用完整性,如第1章所述)不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。


复杂的表结构更改一般需要手动删除过程



它涉及以下步骤:


❑ 用新的列布局创建一个新表;


❑ 使用INSERT SELECT语句(关于这条语句的详细介绍,请参阅第19章)从旧表复制数据到新表。如果有必要,可使用转换函数和计算字段;


❑ 检验包含所需数据的新表;


❑ 重命名旧表(如果确定,可以删除它);


❑ 用旧表原来的名字重命名新表;


❑ 根据需要,重新创建触发器、存储过程、索引和外键。


乱码解决办法



default-character-client 客户端发送什么编码的数据


default-character-result 数据采用什么编码发给客户端


在总配置文件 my.ini 中进行配置,可实现一劳永逸

[mysql]
default-character-set=gbk


MySQL 处理重复数据



你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。


案例 / 技巧



从 t_user表中,取出 user_name字段相同的记录中,id最大的那一行数据

select  id,user_name from t_user 
where  id in (select max(id) from t_user group by user_name )


sql server 中查询一个表中某个数据重复条数大于1的所有信息


select * from (


select count(A) asnum , A from table1 group by A


) bb


where num >1


使用 jdbc 连接数据库语法



jdbc.url=jdbc:mysql:///test?characterEncoding=utf-8&serverTimezone=Asia/Shanghai


如果使用高版本 mysql-conn 包,则需要配置 serverTimezone。


MySQL 报错记录


使用 navicat 连接Mysql 8.0 数据库 出现2095- Authentication plugin 'caching_sha2_password' cannot be loaded


原因:因为 MySQL8.0 与以前的版本加密方式不同,需要更改一下加密方法


  1. 管理员权限运行命令提示符,登录 MySQL。


  1. 修改账户密码加密规则并更新用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';


  1. 刷新权限并重置密码

# 刷新权限 
FLUSH PRIVILEGES;


再重置下密码:

alter user 'root'@'localhost' identified by '123456';


java.sql.SQLException: Field 'id' doesn't have a default value


在 mysql 数据库中,如果自增长 id 没有设为Auto Increment,在java程序中就会报java.sql.SQLException: Field 'id' doesn't have a default value错误。


Mysql is not allowed to connect to this mysql server 报错解决办法


现象


第一次在服务器上安装mysql后,使用客户端连接服务器的mysql,报错“host xxx is not allowed to connect to this mysql server”。


解决方式一


如果希望使用用户名为”username”,使用密码”password”从任何主机连接到mysql服务器的话:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)


如果希望使用用户名为”username”,使用密码 ”password” 从IP地址为


192.168.0.100 的主机连接到mysql服务器的话:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.0.100' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;


如果希望使用用户名为 ”username”,使用密码 ”password” 从IP地址为


192.168.0.100 的主机连接 mysql 服务器的名字叫 ”mydatabase” 的数据库话:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'username'@'192.168.0.100' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;


注意,执行完赋权后,一定要执行 ”FLUSH PRIVILEGES;”,否则不会生效。


解决方式二


报"Host ‘169.254.213.3’ is not allowed to connect to this MySQL server主要的意思是这个host主机不能访问本机的mysql服务,原因需要连接非本机的mysql的时候,默认host是localhost,我们需要将这个mysql连接权限设置成%,更改方法直接通过软件更改和命令行更改:选择mysql这个数据库,里面有一个user表,进入表中有一个host字段将localhost值更改为%这个保存后,刷新或者重启MySQL服务都行。 刷新的命令是

flush privileges; 注意这里需要有;号否则不执行。


sql 优化



https://www.eversql.com/


https://www.eversql.com/sql-order-of-operations-sql-query-order-of-execution/


参考


Mysql is not allowed to connect to this mysql server报错解决办法_wtopps的专栏-CSDN博客


https://blog.csdn.net/wtopps/article/details/81626656


Host 'ip地址' is not allowed to connect to this MySQL server报错解决方法_CXRS_LIU的博客-CSDN博客


https://blog.csdn.net/CXRS_LIU/article/details/90478519




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 搜索推荐 关系型数据库
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
133 0
MySQL 入门教程:全网最全,MySQL 增删改查高级命令硬核总结
|
SQL 存储 Oracle
MySQL总结
一.SQL语句简介 1.什么是SQL? SQL(Structured Query Language):结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”
MySQL总结
|
SQL 存储 前端开发
MySQL知识点总结
MySQL知识点总结
143 0
MySQL知识点总结
|
关系型数据库 MySQL 数据库
【MySQL】MySQL命令总结 | 数据库与数据表的创建删除与查询
【MySQL】MySQL命令总结 | 数据库与数据表的创建删除与查询
168 0
|
SQL 存储 Oracle
(一)MySQL_数据库概述技术总结
简介:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,2008年被Sun公司收购,2009年Sun 被Oracle收购。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
221 6
(一)MySQL_数据库概述技术总结
|
存储 SQL 关系型数据库
MYSQL约束的总结和小练习
约束笔记: 1:主键约束默认是唯一且非空的 2:AUTO_INCREMENT在MYSQL8.0中会将自增主键保存到重做日志中,即使关闭后重启,存储引擎innoDB仍然会根据重做日志初始化计数器内存值。 3:设置了外键约束后,如果要删除主表的内容,则需要先把从表的相关内容给删除。 4:建表时一般设置not null default '' 或default 0,因为nul这个特殊值不好比较,而且查找效率低。 5:外键约束不能跨引擎使用,且mysql中其有一定成本,不适合大并发SQL操作,开发中一般在.
175 0
MYSQL约束的总结和小练习
|
存储 SQL JSON
MySQL技能树学习总结
MySQL技能树学习总结
197 0
MySQL技能树学习总结
|
SQL 存储 数据可视化
|
SQL 关系型数据库 MySQL
mysql中lock tables与unlock tables(锁表/解锁)使用总结
mysql中lock tables与unlock tables(锁表/解锁)使用总结
305 0