mysql基础之基本数据类型

系统 1644 0
原文: mysql基础之基本数据类型


列类型学习

mysql 三大列类型

整型

 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill

字符串型  

Char(M)

Varchar(M)

Text  文本类型

 

日期时间类型

Date  日期

Time  时间

Datetime  时间时间类型

Year  年类型


整形:

整型系列所占字节与存储范围的关系 .

定性 占字节越多 , 存储范围越大 .

下图 是具体的数字分析

 

Tinyint 1 个字节  8 个位   0 - 2^8-1  ,  0-255

                -2^7 ----> +2^7-1

 

 

分析 :

Smallint 2 个字节  , 16 位   0----2^16-1 = 65535

                -2^15 ---> +2^15-1, -32768 -> 32767

 

一般而言 , 设某类型  N 字节

N 字节  , 8N .

0 ----> 2^8N-1

 

-2^(8N-1)  ---> +2^(8N-1) -1; 

 

对于 int 型  占的字节越多 , 存储的范围也越大 .

mysql基础之基本数据类型

整型系统的可选参数  : XXint(M)  unsigned zerofill

: age tinyint(4) unsigned , 或者   stunum smallint(6) zerofill;

Unsigned:  代表此列为无符号类型 会影响到列的存储范围 . ( 范围从 0 开始 )

( 不加 unsinged,  则该列默认是有符号类型 , 范围从负数开始 )

 

 

 

Zerofill:  代表 0 填充 如果该数字不足参数 M 则自动补 0,  补够 M .

1:  如果没有 zerofill 属性 单独的参数 M, 没有任何意义 .

2: 如果设置某列为 zerofill, 则该列已经默认为  unsigned, 无符号类型 .

mysql基础之基本数据类型


小数型

 

Float(M,D),decimal(M,D)

  M " 精度 " ----> 代表 " 总位数 ", D " 标度 ", 代表小数位 .( 小数右边的位数 )

 

 

浮点数占多大的空间呢

答:  float  能存 10 ^38 , 10^-38

如果 M<=24,  4 个字节 , 否则占 8 字节

 

用来表示数据中的小数 , 除了 float--- 浮点 .

还有一种叫定点 decimal, 定点是把整数部分 和小数部分 , 分开存储的 .

float 精确 , 他的长度是变化的 .

 

 

 

空间上的区别 :

Float(M,D), M<=24, 4 个字节 , 24 <M <=53, 8 个字节

Decimal () , 变长字节 .

 

区别 : decimal float 精度更高 适合存储货币等要求精确的数字 ,

见下例 :

mysql基础之基本数据类型



字符串性:

Mysql  字符串类型

Char  定长类型

Char(M)  , M  代表宽度 , 0<=M<=255 之间

:Char(10)  , 则能输入 10 个字符 .

 

Varchar  变长类型

Varchar(M), M 代表宽度 , 0<=M<=65535( ascii 字符为例 ,utf822000 左右 )

0000000000

00\0\0\0\0\0 (char , 如果不够 M 个字符 , 内部用空格补齐 , 取出时再把 右侧空格 删掉 )  

: 这意味着 , 如果右侧本身有空格 , 将会丢失 .

通过concat函数可以验证!

M 代表字符长度,和是否是汉字和字母无关。

mysql基础之基本数据类型

Blob, 是二进制类型 , 用来存储图像 , 音频等二进制信息 .

意义 : 2 进制 ,0-255 都有可能出现 .

Blob 在于防止因为字符集的问题 , 导致信息丢失 .

比如 : 一张图片中有 0xFF 字节 这个在 ascii 字符集认为非法 , 在入库的时候 , 被过滤了 .

enum选择一个,set选择多个


日期时间类型

Year  (1 字节 )    95/1995,  [1901-2155],

insert , 可以简写年的后 2 , 但是不推荐这样 .

[00-69] +2000

[70-99] + 1900,   

2 , 表示  1970 - 2069

 

Date  日期   1998-12-31

范围 : 1000/01/01 ,9999/12/31

 

Time  时间   13:56:23

范围 : -838:59:59 -->838:59:59


datetime  时期时间   1998-12-31 13:56:23

范围 : 1000/01//01 00:00:00  ---> 9999:12:31 23:59:59

 

timestamp

 

时间戳

1970-01-01 00:00:00  到当前的秒数

一般存注册时间 , 商品发布时间等 , 并不是用 datetime 存储 , 而是用时间戳 .

因为 datetime 虽然直观 , 但计算不便 .



mysql基础之基本数据类型


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论