zoukankan      html  css  js  c++  java
  • 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,但是不建议这么做,因为会使字段索引失效。

  • 相关阅读:
    向量、矩阵常用范数
    关于HP M451网络连接的资料
    pyqt程序最小化到系统托盘(未测试)
    博客园美化大集合2020最新!不用担心失效问题!
    添加QQ聊天
    关于加密
    python抓取谷歌学术关键词下文章题目
    如何确定网站可否可爬取
    灵狐浏览器
    利用beautifulsoup进行对标签的二次查找-以打印网易云歌单内容为例
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/10408609.html
Copyright © 2011-2022 走看看