mysql 案例 ~ mysql字符集与大小写详解

一 谈谈mysql常见的字符集问题

二 字符集统一
  1 character_set_server
  2 character_set_client
  3 java/php等连接字符集
  4 character_set_database
三 字符集分类
  1 server 2 db 3 table 4 cloumn 如果不特意指定,将按照优先级从1-4进行选择
四 字符集使用注意事项
  1 在mysql安装的时候指定 character_set_server 
  2 养成创建库表指定字符集的良好修改,列就不要指定了
五 字符集使用错误案例
  mysql默认字符集是Latin1,建表没有指定字符集就会出现乱码问题
六 字符集更改
 1 系统级别更改
  set global character_set_server=utf8
 2 表级别更改
  1 ALTER TABLE table_name DEFAULT CHARACTER SET character_name; 修改表的默认字符集
  2 ALTER TABLE table_name CONVERT TO CHARACTER SET character_name 修改字段的默认字符集+表的默认字符集
 字符集更改必须要和研发进行沟通,否则可能会给线上造成严重影响,甚至导致系统不可用

七  emoj表情问题

    新环境 table_character  and server_character 必须都为utf8mb4 

    旧环境  1 修改server_character为utf8mb4,需要重启. 修改table_character为utf8mb4

                 2  建立连接 set names utf8mb4  修改table_character为utf8mb4 

     补充 对于能指定utfbmb4的编程语言指定下(python),不能指定的就为utf8(java) 执行set names代替

八  关于大小写相关问题

    1 分类

       1 库名/表名级别的大小写 

       2 查询数据内容的大小写

    2 参数

       1 lower_case_table_names=0 mysql默认是对大小写敏感的,这是个只读参数,只能重启生效 

       2  mysql默认对库表名称的大小写敏感,但是对查询的内容大小写不敏感,列名大小写不敏感。这点要注意

    3 查询数据内容区分大小写解决办法

       1 建表指定列 将字段标记为binary,二进制大小写是敏感的,也可根据DDL更改  alter table modifiy column collat utf8_bin;

       2 建表时设置校对规则(collate)。

         collate规则:

      *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写。
      *_ci: case insensitive collation,不区分大小写 。

      3  在查询条件的字段前加binary,但是不建议这么做,因为会使字段索引失效。

转载于:https://www.cnblogs.com/danhuangpai/p/10408609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值