LINUX系统下mysql的大小写区分问题
- 格式:doc
- 大小:25.50 KB
- 文档页数:2
是的,MySQL 8 默认情况下区分大小写。
这意味着在查询和操作数据库时,表名、列
名和数据库名的大小写将会被严格区分。
在 MySQL 8 中,如果你创建了一个名为 "myTable" 的表,那么查询 "SELECT * FROM mytable" 将会返回错误,因为它不会将 "mytable" 视为与 "myTable" 相同的表名。
相反,你需要使用正确的大小写来引用表名,即 "SELECT * FROM myTable" 才能成功查询。
然而,需要注意的是,虽然 MySQL 8 默认区分大小写,但在某些情况下,比如在Windows 操作系统上的默认安装中,可能会被配置为不区分大小写。
这是由于Windows 文件系统对文件和目录名称默认是不区分大小写的。
如果你需要确保 MySQL 8 在所有环境中都区分大小写,可以在配置文件中显式设置参数
`lower_case_table_names=2`。
mysql中的字段名命名规则在MySQL中,字段名命名规则是一种约定俗成的规范,用于命名数据库表中的字段。
遵循规范的字段命名可以提高代码可读性和维护性。
以下是一些常见的字段名命名规则:1. 使用有意义的字段名:字段名应该清晰地描述该字段所代表的数据内容。
避免使用无意义的缩写或单个字母作为字段名,而应该使用具备可读性的单词或短语。
2. 使用小写字母:在MySQL中,字段名是区分大小写的。
为了避免混淆和不必要的麻烦,建议使用小写字母来命名字段。
例如,"first_name"而不是"FirstName"。
3. 使用下划线分隔单词:为了增加字段名的可读性,可以使用下划线 "_" 来分隔单词。
例如,"last_name"而不是"lastName"。
这样可以使字段名更加清晰易懂。
4. 避免使用保留字:MySQL拥有许多保留字,这些字用于指定特定的操作和功能。
为了避免与这些保留字冲突,不要将保留字用作字段名。
如果非得使用保留字,可以使用反引号 "`" 将字段名括起来,例如"`select`"。
5. 不使用特殊字符或空格:字段名应该只包含字母、数字和下划线。
避免使用特殊字符、空格或其他特殊符号来命名字段。
这有助于减少在编码和查询过程中的错误和冲突。
总之,良好的字段命名规范是编写高质量MySQL代码的重要组成部分。
准确地遵循字段命名规则可提高代码的可读性和易于理解,更好地组织和管理数据库表的结构。
使用有意义、小写字母、下划线分隔、避免使用保留字和特殊字符的字段名命名规则将使得数据库设计更加规范和易于维护。
数据库的表名字段名⼤⼩写问题 今天发现它真的是⼀个问题。
拿我最喜欢的Oracle来说吧。
⼀般情况下,建表不管⼤⼩写,建完表名、字段名总是⼤写的,这样你不得不在单词之间加下划线,从⽽增加了字段名长度,有时就超长了。
在select的结果中显⽰也不美观。
Oracle也⽀持以双引号括起来的字段名,不过,你可要注意啦,⽤"Ok"建的字段名⽤"OK"、"ok"和Ok都是查不到的,必须⽤"Ok"。
我只想说⼀句,Oracle在这点上你就搞不懂⽤户的需求了吧。
也许Oracle 也很委屈:“⼤⼩写敏感和不敏感的⽅案我都提供了,你们还要我怎么样?” 我认为,良好的⼤⼩写⽅案应该是这样的:忠实地记录建表时的⼤⼩写,显⽰也美观,也不必加下划线了。
对select等DML语句⼤⼩写不敏感。
⽐如⽤Ok建的字段,⽤ok、OK、Ok、oK都能查到,结果显⽰为Ok。
这就完美了。
对了,Sql Server就是这么⼲的。
MySql呢,需要修改config⽂件的⼀个参数,但这个参数的值还有版本的兼容问题,有些版本需要修改值为2,有些版本不⽀持2,汗。
----我是分隔线----Q:为什么要忠实记录建表时的⼤⼩写时?A:⼀是因为显⽰的美观,不⽤加下划线就⽐加下划线美观,多个单词全⼤写(全⼩写)没有分隔就相当不美观,简直⽆法看。
⼆是从数据库来⽣成代码的时候,代码需要⼤⼩写。
Q:为什么DML语句需要⼤⼩写不敏感?A:⼈⼯书写DML⽅便。
----我是分隔线---- 以上是⼀家之⾔,也许具有深厚的Windows使⽤习惯,在不要⼈参公鸡的前提下,欢迎来表达你的观点。
各种观点。
MySQL模糊查询(like)时区分⼤⼩写问题说明:通过上⾯的语句,你会发现MySQL的like查询是不区分⼤⼩写的,因为我的失误,把Joe写成了joe才发现了这个东东吧。
但是,有时候,我们需要区分⼤⼩写的是,该怎么办呢?解决⽅法如下:⽅法⼀(查询时,指定区分⼤⼩写)很简单,在like的后⾯加个binary就可以了,适⽤于表的结构不易改变的情况下。
⼤多数⼈发现这个问题的时候,往往表的结构是不能改变的,所以,这种⽅法还是很好的。
接下来还有其他的⽅法,是在建表的时候,设置好区分⼤⼩的。
也可以在建表时,加以标识create table table_name(a varchar (20) binary)深⼊了解:⾸先,你要了解的是:在MySQL中,对于Column Collate其约定的命名⽅法如下:*_bin: 表⽰的是binary case sensitive collation,也就是说是区分⼤⼩写的*_cs: case sensitive collation,区分⼤⼩写*_ci: case insensitive collation,不区分⼤⼩写建表的过程中设置字符区分⼤⼩写,然后插⼊3条记录测试。
很多时候,我们的⾸次建表都是不全⾯的,我在想,能不能以后添加,修改表的特征,这个是可以的。
就刚才那个student_web表吧。
但是,失败了。
我不知道为什么,希望您可以给我帮助。
上⾯使⽤_bin来区分⼤⼩写的,还可以使⽤create table table_name (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;或者,在查询时指定collation建表时:mysql> create table table_name (word VARCHAR(10)) CHARACTER SET latin1;查询时:mysql> SELECT * FROM table_name WHERE word COLLATE latin1_bin LIKE 'F%'; 放在like前⾯或:mysql> SELECT * FROM table_name WHERE word LIKE 'F%' COLLATE latin1_bin; 放在最后或:mysql> SELECT * FROM case_test WHERE word LIKE 'F%' COLLATE latin1_general_cs;参考⽂献:。
MySQL的排序规则是基于字符集和校对规则的。
对于数字、字母和汉字,MySQL使用不同的校对规则。
1. 数字: 数字是按照数值大小进行排序的,这是默认的排序方式。
2. 字母: 字母的排序通常依赖于校对规则。
例如,使用`utf8_general_ci`校对规则,字母是按照字母表顺序进行排序的。
`ci`表示大小写不敏感。
3. 汉字: 对于汉字,排序规则更加复杂。
汉字有多个不同的字符集,如`utf8`、`utf8mb4`等。
排序规则如`utf8_general_ci`或`utf8_bin`会影响汉字的排序方式。
* `utf8_general_ci`: 按照一般的汉字习惯进行排序,不区分声调、笔画、部首等。
* `utf8_bin`: 按照二进制值进行排序,这通常意味着按照字符的字节顺序进行排序。
如果你想对数字、字母和汉字进行排序,你需要明确指定校对规则。
例如,如果你想按照汉字的笔画顺序进行排序,你可能需要使用第三方插件或自定义的校对规则。
总的来说,MySQL的排序规则取决于字符集和校对规则的设置。
如果你需要特定的排序行为,你可能需要调整这些设置或者使用自定义的排序函数。
阿⾥:MySQL数据库规范阿⾥:MySQL数据库规范简介:基于阿⾥数据库设计规范扩展⽽来设计规范1.【推荐】字段允许适当冗余,以提⾼查询性能,但必须考虑数据⼀致。
冗余字段应遵循:不是频繁修改的字段。
不是 varchar 超长字段,更不能是 text 字段。
正例:商品类⽬名称使⽤频率⾼,字段长度短,名称基本⼀成不变,可在相关联的表中冗余存储类⽬名称,避免关联查询。
2.【推荐】单表⾏数超过 500 万⾏或者单表容量超过 2GB,才推荐进⾏分库分表。
说明:如果预计2年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。
3.【推荐】id必须是主键,每个表必须有主键,且保持增长趋势的,⼩型系统可以依赖于 MySQL 的⾃增主键,⼤型系统或者需要分库分表时才使⽤内置的ID ⽣成器4.【强制】id类型没有特殊要求,必须使⽤bigint unsigned,禁⽌使⽤int,即使现在的数据量很⼩。
id如果是数字类型的话,必须是8个字节。
参见最后例⼦⽅便对接外部系统,还有可能产⽣很多废数据避免废弃数据对系统id的影响未来分库分表,⾃动⽣成id,⼀般也是8个字节5.【推荐】字段尽量设置为 NOT NULL,为字段提供默认值。
如字符型的默认值为⼀个空字符值串’’;数值型默认值为数值 0;逻辑型的默认值为数值 0;6.【推荐】每个字段和表必须提供清晰的注释7.【推荐】时间统⼀格式:‘YYYY-MM-DD HH:MM:SS’8.【强制】更新数据表记录时,必须同时更新记录对应的 gmt_modified 字段值为当前时间命名规范1.【强制】表达是与否概念的字段,必须使⽤ is_xxx 的⽅式命名,数据类型是 unsigned tinyint ( 1表⽰是,0表⽰否)。
说明:任何字段如果为⾮负数,必须是 unsigned。
正例:表达逻辑删除的字段名 is_deleted,1 表⽰删除,0 表⽰未删除。
2.【强制】表名、字段名必须使⽤⼩写字母或数字,禁⽌出现数字开头,禁⽌两个下划线中间只出现数字。
MySQL报错Ignoringquerytootherdatabase的真正原因1.使用了未定义的数据库名:2.在查询中使用了错误的权限:3.使用了错误的连接参数:如果在连接MySQL时使用了错误的连接参数,也会导致该错误。
比如在连接字符串中指定了错误的数据库名。
要解决这个问题,可以确保使用正确的连接参数来连接MySQL。
4.使用了错误的语法或语句顺序:有时候,该错误可能是由于使用了错误的语法或语句顺序导致的。
比如在使用多个数据库时,可能需要使用"USE"语句来切换数据库,或者在查询中使用完整的表名(包括数据库名)。
要解决这个问题,可以仔细检查查询语句的语法和顺序,并确保语句正确。
5.数据库名或表名大小写敏感性不匹配:MySQL默认情况下是大小写不敏感的,但在一些情况下,可能会出现大小写不匹配的问题。
比如,在Linux上的文件系统是大小写敏感的情况下,数据库名或表名使用了不同的大小写。
要解决这个问题,可以使用正确的大小写来访问数据库和表。
6.数据库不存在或不可用:如果查询中使用的数据库不存在或不可用,也会导致该错误。
要解决这个问题,可以检查数据库是否存在,并确保数据库是可用的。
综上所述,MySQL报错"Ignoring query to other database"的真正原因可能是使用了未定义的数据库名、使用了错误的权限、使用了错误的连接参数、使用了错误的语法或语句顺序、数据库名或表名的大小写敏感性不匹配,以及数据库不存在或不可用等。
解决这个问题的方法包括确保使用正确和已定义的数据库名、检查和更新用户的权限设置、使用正确的连接参数、使用正确的语法和语句顺序、使用正确的大小写,以及确保数据库存在并可用。
mysql表名命名规则一、关于MySQL表名的命名规则:1.MySQL表名必须使用字母或下划线,不能包含数字,特殊字符和空格。
2.MySQL表名的长度最多64个字符。
3.MySQL表名可以是任意大小写,但是建议使用小写。
4.MySQL表名中不能使用MySQL关键字,例如select,update等。
5.MySQL表名不能以数字开头。
6.MySQL表名不能包含空格,可以使用下划线来代替空格。
7.MySQL表名中不能使用保留字,如Date,Time 等。
二、MySQL表名称的规范:1. 命名时应该尽量使用有意义的单词,避免使用拼音,另外,应该尽量使用短语而不是单词,以便增加表名的易读性。
2. 尽量使用容易理解的名称,比如在注册用户表建立user_info表,而不是reg_user。
3. 为了更好的组织表,可以使用前缀,例如tbl_user_info,tbl_order_detail等。
4. 尽量在表名中增加描述性的信息,例如用户表可以命名为customer_info,而不是只命名为user_info。
5. 表名应该尽量减少拼写错误,并且要尽量保证表名的简洁性和可读性。
6. 为了避免出现命名冲突,可以在表名中增加版本号,例如user_info_v1,user_info_v2。
三、MySQL表名的样式:1. 用下划线分隔的小写字母:例如:user_info、order_detail。
2. 驼峰命名法:例如:userInfo、orderDetail。
3. 模块化:例如:user_module_info、order_module_detail。
4. 缩写:例如:usr_info、ord_detail。
五、MySQL表名的命名原则:1. 命名应当简洁明了:应该尽量使用有意义的单词,可以使用缩写,但是不应该使用拼音,也不应该使用太多不相关的单词。
2. 命名应当有描述性:表名应该包含一些有意义的单词,以便更容易理解表的内容。
lower_case_table_names在MySQL中,数据库对应数据⽬录中的⽬录。
数据库中的每个表⾄少对应数据库⽬录中的⼀个⽂件(也可能是多个,取决于存储引擎)。
因此,所使⽤操作系统的⼤⼩写敏感性决定了数据库名和表名的⼤⼩写敏感性。
在⼤多数Unix中数据库名和表名对⼤⼩写敏感,⽽在Windows中对⼤⼩写不敏感。
⼀个显著的例外情况是Mac OS X,它基于Unix但使⽤默认⽂件系统类型(HFS+),对⼤⼩写不敏感。
然⽽,Mac OS X也⽀持UFS卷,该卷对⼤⼩写敏感,就像Unix⼀样。
变量lower_case_file_system说明是否数据⽬录所在的⽂件系统对⽂件名的⼤⼩写敏感。
ON说明对⽂件名的⼤⼩写不敏感,OFF表⽰敏感。
例如在windows下查看:说明windows系统对⼤⼩写不敏感,mysql也默认设置为对⼤⼩写不敏感。
linux下:数据库名与表名是严格区分⼤⼩写的;表的别名是严格区分⼤⼩写的;列名与列的别名在所有的情况下均是忽略⼤⼩写的;变量名也是严格区分⼤⼩写的;windows下:都不区分⼤⼩写Mac OS下(⾮UFS卷):都不区分⼤⼩写unix下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2 .参数值解释0使⽤CREATE TABLE或CREATE DATABASE语句指定的⼤⼩写字母在硬盘上保存表名和数据库名。
名称⽐较对⼤⼩写敏感。
在⼤⼩写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在⼤⼩写不敏感的⽂件系统上将--lowercase-table-names强制设为0,并且使⽤不同的⼤⼩写访问MyISAM表名,可能会导致索引破坏。
1表名在硬盘上以⼩写保存,名称⽐较对⼤⼩写不敏感。
MySQL将所有表名转换为⼩写在存储和查找表上。
该⾏为也适合数据库名和表的别名。
该值为Windows的默认值。
Mysql⼤⼩写敏感的问题⼀、1 CREATE TABLE NAME(name VARCHAR(10));对这个表,缺省情况下,下⾯两个查询的结果是⼀样的:复制代码代码如下:SELECT * FROM TABLE NAME WHERE name='clip';SELECT * FROM TABLE NAME WHERE name='Clip';MySql默认查询是不区分⼤⼩写的,如果需要区分他,必须在建表的时候,Binary标⽰敏感的属性.复制代码代码如下:CREATE TABLE NAME(name VARCHAR(10) BINARY);2 在SQL语句中实现 SELECT * FROM TABLE NAME WHERE BINARY name='Clip';3 设置字符集:utf8_general_ci --不区分⼤⼩写utf8_bin--区分⼤⼩写⼆、 MySQL在windows下是不区分⼤⼩写的,将script⽂件导⼊MySQL后表名也会⾃动转化为⼩写,结果再想要将数据库导出放到linux服务器中使⽤时就出错了。
因为在linux下表名区分⼤⼩写⽽找不到表,查了很多都是说在linux下更改MySQL的设置使其也不区分⼤⼩写,但是有没有办法反过来让windows 下⼤⼩写敏感呢。
其实⽅法是⼀样的,相应的更改windows中MySQL的设置就⾏了。
具体操作:在MySQL的配置⽂件my.ini中增加⼀⾏:lower_case_table_names = 0其中 0:区分⼤⼩写,1:不区分⼤⼩写MySQL在Linux下数据库名、表名、列名、别名⼤⼩写规则是这样的: 1、数据库名与表名是严格区分⼤⼩写的; 2、表的别名是严格区分⼤⼩写的; 3、列名与列的别名在所有的情况下均是忽略⼤⼩写的; 4、变量名也是严格区分⼤⼩写的; MySQL在Windows下都不区分⼤⼩写以上就是本⽂的全部内容了,希望⼤家能够喜欢。
LINUX系统下MYSQL的大小写区分问题
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项。