:mysql中的数据库名和表名和 *** 作系统有关,在windows *** 作系统中,不区分大小写,在unix
,linux *** 作系统中,是区分大小写的。其实可以到mysql存放数据的data目录下进行查看,可以知道其实一个数据库是对应表,一张表是对应一个
表名+.frm的文件
。
由于在windows *** 作系统中,文件名和目录名是不区分大小写的,
所以mysql数据库名和表名在windows下是大小写不敏感的,而unix,linux则不然。
下面是mysqlmanual原文说明:
in
mysql,
databases
and
tables
correspond
to
directories
and
files
within
those
directories.
consequently,
the
case
sensitivity
of
the
underlying
operating
system
determines
the
case
sensitivity
of
database
and
table
names.
this
means
database
and
table
names
are
case
sensitive
in
unix
and
case
insensitive
in
windows.
列名的大小写说明:
通常我们会遇到一个字段中存储多个相似单词,比如这样:
我们通过like进行查询时 like ‘%teacher%’,但是大写的Teacher也会被我们找到;
原因:由于sql在查询时默认不会进行大小写区分;
这时我们可以使用BINARY类型转换运算符;
BINARY 运算符将紧随其后的 string 转换为 二进制字符串。
主要用来强制进行按字节进行比较(byte by byte),字节而不是字符的字符。
这使得字符串比较 是区分大小写 的, 不管原始的列定义是否是 BINARY 或者 BLOB。
BINARY 也 对字符串末尾的空格敏感 。
sql可以这样写:select * from 表 where name like binary '%teacher%'
1、linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
lower_case_table_names参数详解:
lower_case_table_names = 0
其中 0:区分大小写,1:不区分大小写
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
A、创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
)
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY
C、mysql table editor中直接勾选BINARY项。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)