关于MySQL随想(一)

来源:互联网 发布:风云同步卧底软件 编辑:程序博客网 时间:2024/05/31 19:16

(一)MySQL查询不区分大小写问题
以前网上有说在字段后面加binary或者在查询时加binary可以使其区分大小写(见我其他博文),现在忽然想明白了这件事。这是跟MySQL的默认字符集和排序规则有关,MySQL默认使用latin1字符集和latin1_swedish_ci排序规则,这种排序规则是不区分大小写的。即使你指定了默认的字符集为utf8,但其默认的排序规则utf8_general_ci还是不区分大小写的。字符集名binary比较特殊,当将某个非二进制串列指定为binary字符集时,相当于把该列定义为相应的二进制串类型。此时就相当于指定了该列的二进制排序规则为当前的字符集的二进制排序规则,因为二进制排序规则是根据二进制数值来定的,并没有大小写之分,但大小写字符的二进制数值又不同,因此也达到了区分大小写的效果。

(二)int字节长度误解
之前一直会将整型数的主键定义为id int(11) primary key auto_increment,一直以为此时的int占11个字节。原来一直处于一种误区中,int类型始终占4个字节,括号中的数值表示显示宽度,并不会影响到int实际所占的字节数。对于显示宽度,指的的是对数值位数小于显示宽度的数值的一种显示效果,因为大于的话会显示出实际的宽度,如果不指定的话则默认宽度通常是该列里“最长”值得位数。若指定了显示宽度的话,默认的话还是显示正常数值,如果你指定了该列的ZEROFILL属性,则前面不足的位数会填充0。

0 0