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;

mysql 大小写 整理的更多相关文章

  1. 最全mysql笔记整理

    mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...

  2. mysql大小写问题

    以前做企业项目的时候,用的都是oracle数据库,在新公司项目用的是mysql,有关mysql大小写的问题 1   windows下默认mysql是不区分大小写的,要想让其支持大小写.更改方法 在my ...

  3. MySQL基础整理(一)之SQL基础(未完成)

    大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...

  4. MySQL 安全整理

    MySQL 安全整理 关闭外网的端口访问. 使用高位的端口号. 如果需要外网访问不给最高的权限. 如果需要外网访问也是绑定客户端. To be continued

  5. PHP调用mysql函数整理

    mysql函数整理 名称:mysql_connect() 用途:打开非持久的 MySQL 连接.如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE. 语法:mysql_connect( ...

  6. mysql命令整理

    MySQL大小写通用. 一.常见用的mysql指令 1.show databases; #查看当前所有库 2.show tables; #查看所在库中的所有表 3.use 库名; #进入该库 4.sh ...

  7. MySQL 语句整理 2019-5-3

    MySQL 语句整理 在整理完Oracle的一些常见用语句后,由于MySQL的语法跟Oracle略有不同,随跟PN的MySQL视频进行了间接整理. 查询薪水大于1800, 并且部门编号为20或30的员 ...

  8. MySQL大小写补坑记

    背景:由于项目开始时数据库设计经验不足,数据库名和部分数据表名都含有大写字母.但问题是,Linux上数据库名和表名是区分大小写的,而Windows上是不区分大小写的.结果就是在看本地的数据库的时候,对 ...

  9. mysql基本命令整理

    1.replace into(insert into 的增强版) replace into tbl_name(col_name, ...) values(...)replace into tbl_na ...

随机推荐

  1. NodeJs http.get 方法请求时间过长问题处理!

    NodeJs 获取网页内容 http.get 默认请求超时过长了,程序要卡死好一会. 根据网上资料现改造了一个带超时设置的获取网页内容方法. 主要方法使用 setTimeout 来超时, 代码如下: ...

  2. jquery跨域请求jsonp

    服务端PHP代码  header('Content-Type:application/json; charset=utf-8'); $arr = array('a'=>1, 'b'=>2, ...

  3. javascript性能优化总结二(转载)

    上面一篇文章大致介绍了一些javascript当中使用的一些小技巧,当下这篇文章继续介绍一下内存管理.松散耦合.性能方面的一些小知识.为避免错误应该注意的点 内存管理 1.循环引用 如果循环引用中包含 ...

  4. SQL Server 2012将数据库备份到网络中的共享文件夹

    把计算机computer1 中的数据库备份到计算机computer2(IP:192.168.0.130)中的一个共享文件夹下 在computer2中的F盘下建一个共享文件夹叫DBBackupShare ...

  5. PHP中的Libevent学习

    wangbin@2012,1,3 目录 Libevent在php中的应用学习 1.      Libevent介绍 2.      为什么要学习libevent 3.      Php libeven ...

  6. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

  7. 圆内接三角形(X神的代码玩的真好)

    设$S$为半径等于$1$的圆内接三角形的面积,则$4S+\dfrac 9S$的最小值是_______. [分析与解] 先证明$S$的最大值为$\dfrac{3\sqrt 3}4$.设$\triangl ...

  8. (转)pdf文件结构

    PDF文件结构(一)  ————物理结构 PDF(Portable   Document   Format,便携式文档结构)是一种很有用的文件格式,其最大的特点是平台无关而且功能强大(支持文字/图象/ ...

  9. XE6移动开发环境搭建之IOS篇(8):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 安装PAServer ...

  10. shutdown immediate时 hang住 (转载)

    shutdown immediate 经常关库时hang住,在alert中有 License high water mark = 4All dispatchers and shared servers ...