Mysql 的数据类型
在使用数据库中,需要尽可能的减小数据的类型,因此合理的选用数据定义的类型是很重要的,数据的类型就决定了数据库的大小;
NOTE: 在mysql 中,字段名称是部分大小写的。但是数据库名称和数据表名称是区分大小写的;
7.1 数字 类型
数字类型分为 整型和浮点型两大类,此处不再赘述;
NOTE: 所有的数字类型允许两个选项 UNSIGNED & ZEROFILL;
UNSIGNED 表示数据不为负数;
ZEROFILL 表述数据为O;并且自动变为UNSIGNED;
7.1.1 数字类型列表
7.1.2实例
| mysql> CREATE TABLE test -> (tiny_int TINYINT(1), -> bool_int BOOL, -> bit_int BIT, -> small_int SMALLINT(1), -> medium_int MEDIUMINT(1), -> int_int INT(1), -> big_int BIGINT(1), -> integer_int INTEGER); Query OK, 0 rows affected (0.07 sec) mysql> desc test; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | tiny_int | tinyint(1) | YES | | NULL | | | bool_int | tinyint(1) | YES | | NULL | | | bit_int | bit(1) | YES | | NULL | | | small_int | smallint(1) | YES | | NULL | | | medium_int | mediumint(1) | YES | | NULL | | | int_int | int(1) | YES | | NULL | | | big_int | bigint(1) | YES | | NULL | | | integer_int | int(11) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 8 rows in set (0.09 sec) mysql> insert into test (tiny_int, bool_int, bit_int, small_int, medium_int, int_int, big_int, integer_int) values (100000000,10000000,1000,1000,1000,1000,1000,1000), (-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000)\c mysql> insert into test (tiny_int, bool_int, bit_int, small_int, medium_int, -> int_int, big_int, integer_int) -> values -> (9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999, -> 9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999), -> (-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999, -> -9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999); Query OK, 2 rows affected, 29 warnings (0.07 sec) Records: 2 Duplicates: 0 Warnings: 29 mysql> select * from test; +----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+ | tiny_int | bool_int | bit_int | small_int | medium_int | int_int | big_int | integer_int | +----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+ | 127 | 127 | | 32767 | 8388607 | 2147483647 | 9223372036854775807 | 2147483647 | | -128 | -128 | | -32768 | -8388608 | -2147483648 | -9223372036854775808 | -2147483648 | +----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+ 4 rows in set (0.00 sec) |
7.1.3 数字类型注意事项
NOTE: 数据选型时,应注意以下几点:
1.选择最小的可用类型;
2.能用整数型尽可能的化为整数型存储;
3.对于高精度的,必须注意在存储过程中因类型定义而丢失精度,如有有必要,可定义为整型,在程序中进行换算;
4.对于数据的类型,M值可定义的比类型定义值大时,系统将不会超出类型定义的值;
5.宽度小于指定列宽值,可选择宽度左边补齐显示;即加上ZEROFILL标识,但DESCIMAL除外;
7.2 字符串类型
7.2.1 字符串类型列表
7.2.2 字符串数据类型选用注意事项
NOTE:
1.不要在字符串列中存储数字;
2.在CHAR & VARCHAR之间,我们应多选用CHAR 来节省空间,和提高效率,但要注意将要存储对象的长度;
3.如果进行已知数据选择时,应使用ENUM;枚举;
4.一列中可对应多项数据时,应使用SET;集合;
5.对于图像和二进制对象,不应存储在数据库中。应存储在文件系统中;
6. 对于CHAR 和VARCHAR 类型的数据,在搜索的时候是不区分大小写的,如果要区分,则应在定义数据表时使用BINARY 关键字;
7. ENUM 在添加数据列时,如果添加了无效值,则会插入一个(“”)空串;在ENUM 类型中,(“”)空串的索引为0,其他的索引依次累加;
在插入数据时,也可直接插入索引值来进行选择插入的数据内容,枚举的索引是根据定义时定义的顺序进行定义索引值的。如果选择的索引值超出了ENUM 的枚举项,则会插入空串(“”);
8. SET 集合是类似ENUM 的工作方式的,具体参考ENUM;
7.3 日期和时间列类型
7.3.1 时间日期类型列表
7.3.2 日期时间格式注意事项
NOTE:
1.mysql 日期处理函数接收的数据格式是很宽限的,连字符可以用几种标点符号进行代替;
本文详细介绍了MySQL中数字类型、字符串类型、日期和时间类型的特点与使用注意事项,并提供了关键信息的概述。
1212

被折叠的 条评论
为什么被折叠?



