bigint对应java什么类型_MySQL(1)——数据类型的选择(一)

一、三个原则

  1. 更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。
  2. 简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。比如,使用整型存储 IP 地址。
  3. 尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。不过一般将 NULL 的列改为非 NULL 性能提升比较小,在对应列建索引时应避免设计为可为 NULL。

二、整数类型

1,存储整数,可以使用的类型及存储空间如下

bigint对应java什么类型_MySQL(1)——数据类型的选择(一)_第1张图片

2,整数类型有可选的 UNSIGNED 属性,表示不允许负值,这基本可以使正数的上限提升一倍

3,整数计算一般使用 64 位的 BIGINT 整数。

4,MySQL 可以为整数类型指定宽度,比如 INT(11),对大多数应用来说是没有意义的,对于存储来说也没有影响。

三、实数类型

  1. 可以使用 DECIMAL 存储比 BIGINT 还大的整数。
  2. DECIMAL 用于存储精确的小数,并能进行精确计算。
  3. DECIMAL 类型可以指定精度。存储占用是每 4 个字节存 9 个数字。比如 DECIAML(18,9)小数点两边个存储 9 个数字,一共占用 9 个字节:小数点前后数字各用 4 个字节,小数点本身占 1 个字节。
  4. DECIMAL 只是一种存储格式,在计算时会转换为 DOUBLE 类型。并且 DECIMAL 占用空间比 FLOAT 和 DOUBLE 大,如果只是存储不计算,可以使用 FLOAT。
  5. 数据量大的情况下,可以使用 BIGINT 替代,进行相应位数的乘除倍数就行,存储比 DECIMAL 小,计算精确。

四、VARCHAR 和 CHAR 类型

  1. varchar ① varchar 是变长的,比定长更节省空间,因为它仅使用必要的空间。 ② varchar 需要使用 1 或 2 个额外字节记录字符串的长度。如果列长 <= 255 个字节,使用 1 个字节记录长度,否则使用 2 个字节。 ③ InnoDB 会把过长的 VARCHAR 类型存储为 BLOB
  2. char ① char 类型是定长的。当存储 char 值时, MySQL 会删除所有的末尾空格 ② char 适合存储很短的字符串,或所有值都接近同一个长度
  3. 两者使用区别 ① 对于经常变更的列,使用 char 更好,因为定长的 char 不容易产生碎片,而 varchar 容易产生。 ② 对于非常短的列,适合 char ,因为使用 varchar 还是多个字节存储长度 ③ 使用 UTF-8 这样的字符集,适合 varchar 变长存储 ④ 注意: 使用 varchar 时,比如 varchar(5) 和 varchar (100) 都能满足时,最好使用短的。因为虽然存储时只使用了具体值大小的空间,但是在使用内存临时表进行操作时会很糟糕,Memory 引擎只支持定长的行,变长字段也会根据最大长度分配。
  4. varchar 和 char 对行尾空格的处理 ①. 创建表-- 建表 CREATE TABLE `char_test` ( char_col CHAR(10) COMMENT 'char类型', varchar_col VARCHAR(10) COMMENT 'varchar类型' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 插入数据 insert into char_test(char_col, varchar_col) VALUE ('string1','string1'),(' string2',' string2'),('string3 ','string3 '); ②. 查询select CONCAT("'",char_col,"'") as char_col from char_test; select CONCAT("'",varchar_col,"'") as varchar_col from char_test; ③. 结果 char 类型的 char_col:

bigint对应java什么类型_MySQL(1)——数据类型的选择(一)_第2张图片

varchar 类型的 varchar_col:

bigint对应java什么类型_MySQL(1)——数据类型的选择(一)_第3张图片

④. 结论:char 类型存储字符会剔除末尾的空格,而 varchar 存储会保留所有字符。

原文:MySQL(1)--数据类型的选择(一) - 云+社区 - 腾讯云
作者:凡人飞

你可能感兴趣的:(hive,int,bigint,强类型,mysql,decimal,mysql,varchar)