前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 总结

MySQL 总结

作者头像
acc8226
发布2022-05-17 19:45:28
3850
发布2022-05-17 19:45:28
举报
文章被收录于专栏:叽叽西

引擎类型

与其他 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 中进行配置,可实现一劳永逸

代码语言:javascript
复制
[mysql]
default-character-set=gbk

MySQL 处理重复数据

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

案例 / 技巧

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

代码语言:javascript
复制
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) as num , A from table1 group by A ) bb where num >1

使用 jdbc 连接数据库语法

代码语言:javascript
复制
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。
  2. 修改账户密码加密规则并更新用户密码
代码语言:javascript
复制
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';  
  1. 刷新权限并重置密码
代码语言:javascript
复制
# 刷新权限 
FLUSH PRIVILEGES; 

再重置下密码:

代码语言:javascript
复制
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服务器的话:

代码语言:javascript
复制
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服务器的话:

代码语言:javascript
复制
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” 的数据库话:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引擎类型
  • 复杂的表结构更改一般需要手动删除过程
  • 乱码解决办法
  • MySQL 处理重复数据
  • 案例 / 技巧
  • 使用 jdbc 连接数据库语法
  • MySQL 报错记录
    • 使用 navicat 连接Mysql 8.0 数据库 出现2095- Authentication plugin 'caching_sha2_password' cannot be loaded
      • java.sql.SQLException: Field 'id' doesn't have a default value
        • Mysql is not allowed to connect to this mysql server 报错解决办法
        • sql 优化
        • 参考
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档