18:mysql表字段类型

1、数字类型

最常用的一般是tinyint,比如说年龄;还有就是int,主要用来做主键ID;关于float和double有些地方也会用上;

类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
tinyint 1 -128 127
0 255
smallint 2 -32768 32767
0 65535
mediumint 3 -8388608 8388607
0 16777215
int 4 -2147483648 2147483648
0 4294967295
bigint 8 -9223372036854775808 9223372036854775807
0 18446744073709551615
bit(M) 大约(M+7)/8个字节 1 64(最大位数64)
integer(精确计算)
real
double((双精度)浮点数) 8 -1.7976931348623157E+308 -2.2250738585072014E-308
0和2.2250738585072014E-308 1.7976931348623157E+308
float 4 -3.402823466E+38 -1.175494351E-38
0和1.175494351E-38 3.402823466E+38
float(p) 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节
decimal(numeric)
剩余的数字 字节数
0 0
1 1
2 1
3 2
4 2
5 3
6 3
7 4
8 4
9 4
1 65(最大位数65)
unsigned 无符号 ,unsigned zerofil(5) 00001,binary严格区分大小写和空格, on update current_timestamp

 

2、时期时间类型

我知道有很多人喜欢把时期时间直接用int类型,但是我不建议这样做,虽然说存为int的确是有好处,如果你的字段本身就是时期时间类型会更加的好;最常用的是datetime();

date('YYYY-MM-DD') 3 '1000-01-01' '9999-12-31'
time('HH:MM:SS') 3 '-838:59:59' '838:59:59'
timestamp时间戳() 4 '1970-01-01 00:00:00' 2037年
datetime('YYYY-MM-DD HH:MM:SS') 8 '1000-01-01 00:00:00' '9999-12-31 23:59:59'
year(2|4)默认是4位'YYYY' 1 4位格式:1901 2155和0000
2位格式:70(1970年) 69(2069年)

 

3、字符类型

字符类型char()和varchar()用得可以说是最多的,char是定长,varchar是变长;它们各有优点,不同场景用不同类型非常的好!其次就是text类型最常用,主要用来存许多的文章内容,产品详情等;

char(M)(固定长度字符串) M个字节,0 <= M <= 255 0 255
varchar(M)(用一个字节或两个字节的长度) L+1个字节,其中L <= M 且0 <= M <= 65535 0 如果VARCHAR列声明的长度大于255,长度前缀是两个字节。
binary(M)(类似char类型) M个字节,0 <= M <= 255
varbinary(类似varchar类型) L+1个字节,其中L <= M 且0 <= M <= 255
tinyblob L+1个字节,其中L < 2,8 255(2²·⁴–1)2的8次方
tinytext L+1个字节,其中L < 2,8 255(2.8–1)2的8次方
blob L+2个字节,其中L < 2,16 255(2⁴·⁴–1)2的16次方
text L+2个字节,其中L <2,16 65,535(2,16–1)2的16次方,字符的text列
mediumblob L+3个字节,其中L < 2,24 16,777,215(2⁴·³·²–1)2的24次方
longblob L+4个字节,其中L < 2'32 4,294,967,295或4GB(2,32–1)2的32次方
mediumtext L+3个字节,其中L < 2,24 16,777,215(2,24–1)
longtext L+4个字节,其中L < 2,32 4,294,967,295或4GB(2,32–1)字符
enum('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值) enum列最多可以有65,535个截然不同的值
set('value1','value2',...) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员) SET列最多可以有64个成员

 

4、几何类型

目前我还没有用过mysql的几何类型!

point(特定几何类型)
linestring(特定几何类型的值)
polygon(特定几何类型的值)
 geometry(任何几何类型值)
multipoint(仅限于具有特定几何类型的集合成员)
multilinestring(仅限于具有特定几何类型的集合成员)
multipolygon(仅限于具有特定几何类型的集合成员)
geometrycollection(保存任意类型的对象集合)

 

以上的类型几乎是Mysql所有的类型,如果你想做好mysql优化,表字段的类型这一步是必不可缺少的!虽然很多人开发程序选取字段的时候往往都是随意的,那是因为你所做的项目承受的流量还不够大,一旦流量大了,多一个字节,少一个字节结果是不同的;请所有开发程序的人即使你不做Mysql优化,至少你要有这种意识;

 

mysql 表字段类型

 

注意:

1 个字节有 8 个位 , 每个位上有 0,1 两种可能;如下:

0000 0000

 

举例:int类型是4个字节;

int 类型 在磁盘中存 1 是如下的存法:

00000000 00000000 00000000 00000001

    A+
发布日期:2017年01月18日 17:02:21  所属分类:mysql教程
最后更新时间:2017-01-18 17:29:51
付杰
  • ¥ 29.99元
  • 市场价:888元
  • ¥ 999元
  • 市场价:4999元
  • ¥ 298.0元
  • 市场价:598.0元
  • ¥ 298.0元
  • 市场价:899.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: