Mysql数据类型,校对集操作辩析.docx
文本预览下载声明
校对集,collate校对集指的是字符之间的比较关系!如:a B c 三个字母如何排序?在 ASCII 码下的排序为:B a c在mysql命令客户端下,使用 order by 对结果排序,看结果:顺序为 a-B-c 忽略了大小写!但是这种顺序可以被校对集改变:利用 show collation; 语句,可以查看所有的校对集校对集,依赖于字符集校对集:指的是,在某个字符集下,字符的排序关系应该是什么,称之为校对集!再创建一个utf8_bin校对集表,再对 a,B,c 进行排序:?create table collate_2 (c varchar(10)) charset=utf8 collate=utf8_bin;再插入同样的三个字母:insert into collate_2 values(a),(B),(c);排序结果如下:典型的后缀:_bin :二进制编码层面直接比较_ci :忽略大小写比较(大小写不敏感)_cs:大小写第三比较MYSQL数据类型(列类型,字段类型)三大类:数值,字符串,日期时间数值整数型类型字节最小值(有符号/无符号)最大值(有符号/无符号)tinyint1-128/0127/255smallint2-32768/032767/65535mediumint3-838860816777215int/intege4-2147483648/02147483647/4294967295bigint8-9223372036854775808/09223372036854775807/18446744073709551615如何选择:通过业务逻辑判断!常见的是 int , tinyint !mysql的整型,有php整型不具备的概念:1:无符号,只能表示整数或0。那么最大的整数会很大????默认是有符号!可通过整型的 unsigned 选项, int unsigned 设置整型无符号2:显示宽度????显示宽度不决定整数的范围,而决定在显示出该数之后,如果宽度不够,则采用前导零补齐。此时需要 zerofill 来设置如:create table type_int_3 (num int unsigned zerofill);insert into type_int_3 values (0);insert into type_int_3 values (1000);insert into type_int_3 values (1000000);可见,无符号,默认的宽度是10,因此全都使用0来补齐可以设置整型的显示宽度! int(M) 即可! M 最大为 255!M的值不决定范围,只决定显示宽度!create table type_int_4 (num int(30) unsigned zerofill);insert into type_int_4 values (0);insert into type_int_4 values (1000);insert into type_int_4 values (1000000);注意:如果走出了宽度范围,则直接显示!额外的,mysql中,没有布尔型!但存在 Boolean 这个关键字,表示 tinyint(1)典型的,0表示假,1表示真????小数类型类型存储空间(字节)最小值(理论)最大值(理论)FLOAT4-3.402823466E+383.402823466E+38DOUBLE8-1.7976931348623157E+3081.7976931348623157E+308DECIMAL变长,大致是每9个数字,采用4个字节存储。整数和分数分开计算M,最大是65D,最大是30默认是10,2-(65个9)(+65个9)单精度、双精度默认的有效位数:在定义浮点数时,典型的需要指明其有效位数,和小数位数float(M,D);double(M,D);M:所有的有效位数D:其中的小数位数以上两个值,决定一个浮点数的有效范围!典型的浮点数:float(10,2);注意:浮点数是近似值,不是精确值!如果一个数,很大,接近最大值,可能会出错一旦出现精确数据(小数)需要保存,则要用到定点数。定点数:小数点是固定的!decimal,与定义浮点数一样,也有有效位数与小数位数的概念:decimal(M,D);不是数的形式存储,类似于字符串的形式存储!注意:关于小数1:支持科学计数法2:同样支持 unsigned,无符号3:同样支持 zerofill?字符串类型类型最大长度备注char255Char(M),M字符数varchar65535,但需要1-2个保存信息,同时由于记录的限制,因此最大为65532编码不同字符数不同:Gbklt;=32767Utf8lt;=21845tiny
显示全部