mysql常用数据类型总结

1.char和varchar的区别

(1)char的长度是固定的,而varchar的长度是可以变化的。比如,存储字符串“abc",对于char(10),表示你存储的字符将占10个字节(包括7个空字符),而同样的varchar(10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。

(2)char的效率比varchar的效率稍高。char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节

2.int(N)、char(N)、varchar(N)的说明

(1)int(N),N标识最大显示宽度(字段设置zerofill属性时可查看区别),不指定N时,默认为11。N的值跟int(N)所占多少存储空间或最大能存储多大长度数据并无任何关系。也就是说int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

(2)char(N)、varchar(N)。char(N)的N取值范围为255。varchar(N)的N取值范围为65535,超过了自动转换为text类型。其中N,不管针对char还是varcahr均有最大字符长度不允许超过N的意思,

varchar(50)和varchar(100)是否一样?

硬盘存储需求一样,内存需求不一样。即对于VARCHAR数据类型来说,硬盘上的存储空间是根据实际字符长度来分配存储空间的,而对于内存来说,是使用N个字符空间的内存块来保存值,即varchar(50)占用50个字符内存空间,varchar(100)占用100个字符内存空间。

3.bigint、int、smallint、tinyint的区别

(1)bigint。从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

(2)int。从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

(3)smallint。从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

(4)tinyint。从 0 到 255 的整型数据。存储大小为 1 字节。

4.float、double、decimal类型的区别。

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。

FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。DECIMAL数据类型用于要求非常高的精确度的计算中。

5.datetime、date、timestamp、time的区别

(1)DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”意味着尽管更早的值可能工作,但不能保证他们可以。)

(2)DATE类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以'YYYY-MM-DD'格式显示DATE值,支持的范围是'1000-01-01'到'9999-12-31'。

(3)TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。

(4)TIME数据类型表示一天中的时间。MySQL检索并且以"HH:MM:SS"格式显示TIME值。支持的范围是'00:00:00'到'23:59:59'。

6.性别的类型

(1)数值型:可以使用0,1,2来表示,未知,男,女,优点搜索快,缺点显示/存储都要转换

(2)字符串:直接存储男/女,优点显示/存储便捷,缺点搜索慢

(3)真/假(布尔):使用真/假来设定男/女,优点搜索快,缺点显示/存储都要转换,而且没有第三种的未知状态

7.int和varchar的选择

设计数据库时,电话号码和邮编等,虽然是数字形式,但是应该设计为varchar类型,如果设计为int型,插入数据库会失效,比如电话会变成另外一串数字,插入0921,结果插入为921.因为int是以数字计算,varchar是以字符串计算。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值