mysql 第一天_Mysql 第一天

在数据库对应的文件夹下, 表对应的文件(与存储引擎有关)也会被删除

2bcd169cd0372a9c3ef6e6307c5aed4c.png

注意: 删除有危险,操作需谨慎(不可逆)

数据操作

新增数据

有两种方案

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

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

0e6f2517b1800e25ce99904b616a502e.png

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

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

d977feaaf520d7493e20c742340121b5.png

查看数据

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

查看所有数据

b8294b161f458a9bbe980039f1c995cb.png

查看指定字段,指定条件的数据.

39afebe8fb2cd554b8e953056d3364d6.png

更新数据

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

505ece9ea6fab1aed53d1a9ba45d4d7c.png

更新不一定会成功: 如没有真正要更新的数据

f1e2e677a0ae97568b5f37885ca4ad86.png

删除数据

删除是不可逆的: 谨慎删除

Delete from 表名 [where条件];

9fd4b1478fe635425bdda103d7172e38.png

中文数据问题

中文数据问题本质是字符集问题.

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

客户端向服务器插入中文数据: 没有成功

6f87dc63c13f58dfb75d217d38443e3a.png

原因: \xD5\xC5\xD4\xBD代表的是"张越"在当前编码(字符集)下对应的二进制编码转换成的十六进制: 两个汉字 => 四个字节(GBK)

ea4f71ac1fe1d961831f892e4d788c75.png

报错: 服务器没有识别对应的四个字节: 服务器认为数据是UTF8, 一个汉字有三个字节: 读取三个字节转换成汉字(失败),剩余的再读三个字节(不够): 最终失败.

所有的数据库服务器认为(表现)的一些特性都是通过服务器端的变量来保存: 系统先读取自己的变量,看看应该怎么表现.

//查看服务器到底识别哪些字符集

Show character set;

cd4882937d0688b7e00c366df4bc14cb.png

基本上: 服务器是万能,什么字符集都支持

//既然服务器识别这么多: 总有一种是服务器默认的跟客户端打交道的字符集

Show variables like 'character_set%';

730a55ecda93ca06db726fe37ae0336e.png

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

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

Set character_set_client = gbk;

092482f95b80c096bbc21f929599424d.png

插入中文的效果

9a60d0e6032cffe3cdedfc86498f497b.png

查看数据效果: 依然是乱码

1b8fd77cebfd9c3c84b666868862aabb.png

原因: 数据来源是服务器, 解析数据是客户端(客户端只识别GBK: 只会两个字节一个汉字): 但是事实服务器给的数据却是UTF8,三个字节一个汉字: 乱码

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

Set character_set_results = GBK ;

906c0f1b638995186672a63d97e97b0e.png

查看数据效果

089fa118af77446ab39a34c9b9ee781c.png

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

c159f884248761263df5662a6d6fce88.png

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

Set names gbk; ====> character_set_client,character_set_results,character_set_connection

2ddb14b0b1b26d60f6c4642739832cba.png

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

校对集问题

校对集: 数据比较的方式

校对集有三种格式

_bin: binary,二进制比较, 取出二进制位,一位一位的比较, 区分大小写

_cs: case sensitive,大小写敏感, 区分大小写

_ci: case insensitice,大小写不敏感,不区分大小写

查看数据库所支持的校对集: show collation;

b64b9cc43521adc26269748cef7d1672.png

校对集应用: 只有当数据产生比较的时候,校对集才会生效.

6ca308a4ba08a97b3a25a2c6c7445fe1.png

对比: 使用utf8 的_bin和_ci来验证不同的校对集的效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值