MySQL在cmd执行insert无法插入中文、中文显示乱码

原因
  • 前提:MySQL在安装时选择编码为utf8,数据库、表创建时的编码也是utf8,但在cmd下无法输入中文。
  • 根本原因:客户端、服务器、数据库/表的编码不一致。
  • 即:cmd写入显示的字符编码是gbk,与MySQL 的配置不一致。
关于修改cmd字符编码为utf8

​ 由于中文操作系统的cmd默认编码是gbk,网络上很多建议把cmd编码设置为utf8,即用chcp命令改为65001(utf8字符编码) ,可这样修改之后根本无法输入中文,在执行inset into…命令时mysql直接退出。

思路

所以既然修改cmd的编码行不通,我们:

  • 要么在cmd里告诉mysql我们的cmd客户端输入的编码是gbk,然后能接收的编码也是gbk即可。
  • 要么修改MySQL配置文件,把client的编码配置修改为何cmd一致的gbk
解决方案
临时解决方案
  • **set names gbk;**相当于是告诉mysql服务器软件,我们在当前命令行下输入的内容是GBK编码。当命令窗口关闭后,它再输入中文就会出现问题

在这里插入图片描述
​ --MySQL 5.1参考手册

  • set character_set_client=gbk;set character_set_results=gbk;

其实,只要保证cmd客户端和MySQL两者编码一致即可。但现实是cmd默认的是gbk,而mySQL一般是utf8。所以我们需要在cmd中告诉MySQL:

——cmd这边发送给MySQL的是gbk的。

——cdm这边接受的数据要求是gbk的。

在这里插入图片描述

永久解决办法
  • 修改my.ini配置

    ​ 暂停mysql服务

    ​ MySQL配置文件:C:\Program Files\MySQL\MySQL Server 5.5\my.ini,修改client配置的编码为gbk。

    ​ 保存文件退出

    ​ 重启mysql服务

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MySQL ,可以使用 INSERT INTO SELECT 和 UNION 这两种方法执行多次插入操作。 1. 使用 INSERT INTO SELECT INSERT INTO SELECT 语句用于将一张表的数据插入到另一张表。可以使用这个语句来多次插入数据,只需要编写多个 SELECT 语句并使用 UNION ALL 连接起来。 例如,假设我们有一个名为 orders 的表,其包含以下数据: | id | customer_id | order_date | |----|-------------|------------| | 1 | 1001 | 2020-01-01 | | 2 | 1002 | 2020-01-02 | | 3 | 1003 | 2020-01-03 | 现在,我们想将这些订单数据插入到一个名为 all_orders 的新表。我们可以使用以下 INSERT INTO SELECT 语句: ``` INSERT INTO all_orders (customer_id, order_date) SELECT customer_id, order_date FROM orders WHERE id = 1 UNION ALL SELECT customer_id, order_date FROM orders WHERE id = 2 UNION ALL SELECT customer_id, order_date FROM orders WHERE id = 3; ``` 这个语句将会把 orders 表 id 为 1、2 和 3 的订单数据插入到 all_orders 表。 2. 使用 UNION UNION 语句用于将两个或多个 SELECT 语句的结果合并成一个结果集。可以使用这个语句来多次插入数据,只需要编写多个 SELECT 语句并使用 UNION ALL 连接起来。 例如,假设我们有一个名为 customers 的表,其包含以下数据: | id | name | |----|-----------| | 1 | Alice | | 2 | Bob | | 3 | Charlie | 现在,我们想将这些客户数据插入到一个名为 all_customers 的新表。我们可以使用以下 UNION 语句: ``` INSERT INTO all_customers (name) SELECT name FROM customers WHERE id = 1 UNION ALL SELECT name FROM customers WHERE id = 2 UNION ALL SELECT name FROM customers WHERE id = 3; ``` 这个语句将会把 customers 表 id 为 1、2 和 3 的客户数据插入到 all_customers 表。注意,我们只选择了一个列,因为 all_customers 表只有一个列。如果 all_customers 表有多个列,那么我们需要在每个 SELECT 语句选择相同的列,并确保它们的数据类型相同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值