栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

MySQL数据类型相关内容

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL数据类型相关内容

MySQL数据类型
  • 类型介绍
  • char(5)与 int(5)
  • int、char以及varchar的性能对比
  • 字符串和数值作比较的时会发生什么
  • 标准建表模板
  • 数据库字段类型和Java的对应关系

类型介绍
  • int:整型使用int定义,可以设置有符号和无符号(UNSIGNED),一个int占4字节,int后面可以不加(位数),加了也没有意义,同时,还有TINYINT、BIGINT等,类似java中bity、长整形

  • 浮点:MySQL中可以指定浮点数和定点数的精度,浮点型使用float或者double保存,后面一般是(M,D),M表示该数据的总位数,D表示小数点后面精度

  • decimal:定点数一般来说比浮点数好,它使用string来存放小数点后的数据,这样就不会出现精度丢失的问题,它也是(M,D)形式的。decimal型的默认整数位为10,小数位为0,即默认为整数

  • varchar:字符型分用于存放较短的字符char(长度不可变,插入的长度比定义小也会使用定义长度的空间,效率较高,后面括号内数字表示可以存放多少字符)和varchar(长度可变,使用插入长度的空间),存储大文本使用text

  • 日期:日期类型有DATE(存放年月日,使用三个字节,时间范围为‘1000-01-01’ to ‘9999-12-31’),DATETIME(存放年月日时分秒,使用八个字节,‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’)

  • DATASTAMP(存放年月日时分秒,使用四个字节,‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’。timestamp翻译为汉语即"时间戳",它是当前时间到 Unix元年(1970 年 1 月 1 日 0 时 0 分 0 秒)的秒数。对于某些时间的计算,如果是以 datetime 的形式会比较困难,假如我是 1994-1-20 06:06:06 出生,现在的时间是 2016-10-1 20:04:50 ,那么要计算我活了多少秒钟用 datetime 还需要函数进行转换,但是 timestamp 直接相减就行。同时timestamp 只占 4 个字节,而且是以utc的格式储存, 它会自动检索当前时区并进行转换,这个禁止使用)

  • ENUM 和 SET:有限而且固定值列,比如enum(‘男’, ‘女’)去定义性别,ENUM类型最多允许65536个值,SET类型最多允许64个值,不要使用ENUM,因为数据迁移的时候,他几乎不可能被其他数据库所支持;enum的枚举值对应的索引是从1开始的,可能会造成一些疑惑的问题

char(5)与 int(5)

1,在每个数据类型后,都可以加数字,这个数字代表这个类型最多多少,比如char(20)代表20个字符,char(5)代表5个字符

2,值得注意的是,int类型后面的数字代表自动补全,不管它设置多少,int型都占4字节;在使用int(3)的时候如果你输入的是10,那么显示给你的字符宽度就为3,会默认给你显示3位,当你不足3位时,会帮你补齐3位,当你超过3位时,就没有任何的影响,不会报错(其他的数据类型比如double,char超过了都会报错),如果你存1000,显示这个值就是1000

int、char以及varchar的性能对比

当它们同时存放数据的时候,不管是有索引还是无索引,int类型都是最快的,因为整数得益于原生支持,而char和varchar的性能差不多

字符串和数值作比较的时会发生什么

字符串和数值都会转换成浮点数进行比较,字符串在转浮点数时,如果字符串开头是数字,那就一直截取,直到截取到的不是数字是其他字符为止。若开头不是数字,那么转换数值类型的结果就直接取0

标准建表模板

基于阿里编程规范

  • 临时库、表名必须以tmp为前缀,并以日期为后缀。例如 tmp_test01_20130704
  • 备份库、表必须以bak为前缀,并以日期为后缀。例如 bak_test01_20130704
  • 所有表都需要添加注释;除主键外的其他字段都需要增加注释,定义引擎与字符集
  • 使用TINYINT来代替ENUM类型以及boolean类型
  • 使用VARBINARY存储大小写敏感的变长字符串或二进制内容
  • 所有字段均定义为NOT NULL
  • 使用DATETIME,禁止使用timestamp
  • 非唯一索引按照“idx_字段名称_字段名称”进用行命名。例如idx_age_name。
  • 表必须有主键,推荐使用UNSIGNED自增列作为主键
  • 唯一索引按照“uniq_字段名称_字段名称”进用行命名。例如uniq_age_name
  • 所有int类型在Java中用Integer表示,这样不会出现null与0混淆的情况
数据库字段类型和Java的对应关系

CHAR、VARCHAR 、LONGVARCHAR —> String

SMALLINT —> Short

INTEGER —> Int

不要用DOUBLE和FLOAT存放小数

DECIMAL 、 NUMERIC —> BigDecimal

java中日期类别用Date了

DATE —> LocalDate

TIME(存放时分秒) —> LocalTime

TIMESTAMP、DATETIME —> LocalDateTime

TINYINT —> 自己定义的枚举类

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号