zoukankan      html  css  js  c++  java
  • mysql 大小写 整理

    mysql字段的值默认不区分大小写,如果有主键的表,主键列就不能插入重复的值(大小写不同)

    实验

    默认方式创建

    CREATE TABLE `t1` (
      `ID` varchar(40) CHARACTER SET utf8 NOT NULL,
      `NAME` varchar(254) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`ID`,`NAME`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
    

    插入数据

    insert into t1 values( 'Test','test');
    

    再次插入数据

    insert into t1 values( 'test','test');
    

    提示错误

    ERROR 1062 (23000): Duplicate entry 'test-test' for key 'PRIMARY'
    

    修改字段类型

    CREATE TABLE `t2` (
      `ID` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `NAME` varchar(254) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      PRIMARY KEY (`ID`,`NAME`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
    

    插入数据

    insert into t2 values( 'Test','test');
    

    再次插入数据

    insert into t2 values( 'test','test');
    

    查询数据

    mysql> select * from t2;
    +------+------+
    | ID   | NAME |
    +------+------+
    | Test | test |
    | test | test |
    +------+------+
    

    变量名不区分大小写

    mysql> set @var1 = 'Test';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select *, @var1 from t2 where id=@Var1;
    +------+------+-------+
    | ID   | NAME | @var1 |
    +------+------+-------+
    | Test | test | Test  |
    +------+------+-------+
    1 row in set (0.00 sec)
    

    结论

    Linux下mysql默认:

    1. 区分 库名,表名,表名的别名 的大小写
    2. 不区分列名,列名的别名,变量名 的大小写

    备注

    配置/etc/my.cnf,支持不区分大小写

    my.cnf 如下

    [mysqld]
    lower_case_table_names=1
    

    重启MYSQL服务即可

    lower_case_table_names = 0  默认区分大小写
    0:区分大小写
    1:不区分大小写
    

    MySQL在Windows下都不区分大小写。

    若需要区分字段值的大小写,则字段需要设置BINARY属性。

    设置方法:

    • 创建时设置:create table t3(id VARCHAR(10) BINARY);
    • alter修改:alter table t3 modify column id VARCHAR(45) BINARY;
  • 相关阅读:
    .net core之log4net和过滤器
    记录待掌握的.net组件或框架或技术
    Spring 注释 @Autowired 和@Resource
    Java——Cookie与Session
    Hadoop
    分布式系统!
    mybatis 学习!
    Java动态代理一Proxy
    JavaWeb学习--Servlet认识
    Angular.JS
  • 原文地址:https://www.cnblogs.com/brookin/p/4740974.html
Copyright © 2011-2022 走看看