👻
🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈
👻
数据库是用来存放数据的,而数据往往对应着不同的数据类型
1. 数值类型
👻从整体上分为整型和浮点
数据类型 | 大小 | 说明 | 对应的Java类型 |
BIT[(M)] | M指定位数,默认为1,即bit | 二进制的数,M的范围从1~64,存储数的范围为2^M -1 | 常用Boolean对应BIT,此时默认为1位,只能存0和1,表示正负 |
TINYINT | 1字节 | -128~127 | Byte |
SAMLLINT | 2字节 | -32768~32767 | Short |
INT | 4字节 | -2147483648~2147483647 | Integer |
BIGINT | 8字节 | 最大值:9223372036854775807 最小值:-9223372036854775808 | Long |
FLOAT(M,D) | 4字节 | 单精度,M指定长度,D指定小数点位数,会发生精度缺失 | Float |
DOUBLE(M,D) | 8字节 | 双精度,M指定长度,D指定小数点后的位数,会发生精度缺失 | Double |
DECIMAL(M,D) | M是数字的精度,其范围为1~65,默认值是10;D是小数点右侧数字的数目,其范围是0~30,但不得超过M,没有精度缺失 | BigDecmial | |
NUMBRIC(M,D) | 同上 | BigDecmial |
👻数值类型中,最常用的为 int 和 decimal 。int 表示整型,decimal 表示小数类型。整型可以取无符号类型(unsigned),表示不取负数,但在实际工作中,尽量不要使用无符号类型。因为 int 放不下,unsigned int 也可能放不下,不如直接采用 bigint 。
👻可能有人会有疑惑:为什么不用 float 和 double 表示小数呢?
🎈由于 float 和 double 存在精度缺失,而数据库中可能含有成千上百万个数据,可能因为这一点精度缺失,就会导致查询或者访问的结果出现差错(个人理解)
2.字符串类型
数据类型 | 大小 | 说明 | 对应Java的类型 |
VARCHAR(SZIE) | SIZE取(0~65535)字节 | 可变长度字符串 | String |
TEXT | 最大容纳65535字节 | 长文本数据 | String |
MEDIUMTEXT | 最大容纳16777215 | 中等长度文本数据 | String |
BLOB | 最大容纳65535字节 | 二进制形式的长文本数据 | byte[] |
👻字符串类型中,最常用的是 varchar(size) size取0~65535。
🐱🚀在选择数据类型的时候,一定要选择合适的数据类型,不能过大,也不过小。过大会导致存储空间的浪费,过小会导致存储不下需要的数据。
3. 日期类型
数据类型 | 大小 | 说明 | 对应的Java类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | Java.util.Date、Java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | Java.util.Date、Java.sql.Timestamp |
👻 timestamp 时间戳从北京时间1970-01-01 08:00:00 开始计时。
时间戳(Unix timestamp)转换工具 - 在线工具 (tool.lu)https://tool.lu/timestamp/