MYSQL三:数据操作(含中文数据错误问题)

新增数据

两种方案:

方案1:给全表字段插入数据,不需要指定字段列表:要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致:凡是非数值数据都需要使用引号(建议是单引号)包裹

insert into 表名 values(值列表)[,(值列表)];– 可以一次性插入多条记录

-- 插入数据
insert into my_student values(1,'itcast0001','Jim','male'),
(2,'itcast0002','Tom','female');

方案2:给部分字段插入数据,需要选定字段列表;字段列表出现的顺序与字段的顺序无关;但是值列表的顺序必须与选定的字段顺序一致

insert into 表名 (字段列表) values (值列表)[,值列表];

-- 插入数据:指定字段列表
insert into my_student(number,sex,name,id)
values ('itcast0003','male','ABC',3),
('itcast0004','female','Lily',4);
查看数据

select */字段列表 from 表名 [where条件];

-- 查看所有数据
select * from my_student;
-- 查看指定字段指定条件的数据
select id,number,sex,name from my_student where id=1; -- 查看满足id为1 的学生信息

在这里插入图片描述
在这里插入图片描述

更新数据

update 表名 set 字段= 值 [where条件];-- 建议都有where,要不就是更新全部

-- 更新数据
update my_student set sex='female' where name='Jim';

在这里插入图片描述

更新不一定会成功,如果没有真正需要更新的数据,就不会更新

删除数据

删除不可逆,谨慎操作

delete from 表名 [where条件];

-- 删除数据
delete from my_student where sex='male';

在这里插入图片描述

中文数据问题

中文数据问题本质是字符局问题,

计算机只识别二进制:人类更多是识别符号,需要有个二进制与字符的对应关系(字符集)

-- 插入数据(中文)
insert into my_student values(5,'itcast0005','张越','男');

在这里插入图片描述

插入数据不成功!!!!原因:\xD5\xC5\xD4\xBD代表的是“张越”在当前编码(字符集)下对应的二进制编码转换成的十六进制 服务器没有识别对应字节,,服务器认为数据时UTF8,当前字符集为GBK

-- 查看服务器到底识别哪些字符集
show character set;
-- 查看服务器默认的对外处理的字符集
show variables like 'character_set%';

在这里插入图片描述

问题根源:客户端数据只能是GBK,而服务器认为是UTF8:产生矛盾

解决:改变服务器,默认的接收字符集为GBK

set character_set_client=gbk;

-- 修改服务器认为的客户端数据的字符集为GBK
set character_set_client=gbk;

在这里插入图片描述

插入中文的效果:正常
在这里插入图片描述

查看数据效果:乱码

-- 查看数据
select * from my_student;

在这里插入图片描述

原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK),服务器给的数据是UTF8.。

解决方案:修改服务器给客户端的字符集为GBK

set character_set_results=gbk;

-- 修改服务器给定数据的字符集为gbk
set character_set_results=gbk;

在这里插入图片描述

查看数据效果:正常,,问题解决
在这里插入图片描述

**set 变量=值; **修改只是会话级别(当前客户端,当次连接有效,,关闭失效)

重新进入后效果 变回utf8
在这里插入图片描述

设置服务器对客户端的字符集的认识:可以使用快捷方式:set names 字符集;

-- 快捷设置字符集
set names gbk;

在这里插入图片描述

更改了三个:client;connection;results;

connection:连接层,是字符集转变的中间者,统一了效率更高,不统一也没问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周公子来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值