龙空技术网

Mysql 列数据类型的选择

寒笛过霜天 42

前言:

而今看官们对“mysql查看列的数据类型”大体比较注意,朋友们都需要学习一些“mysql查看列的数据类型”的相关资讯。那么小编在网络上网罗了一些关于“mysql查看列的数据类型””的相关知识,希望大家能喜欢,小伙伴们一起来学习一下吧!

列类型的选择

1、为什么要学习列类型的选择

在我们以前的学习中, 数据表字段类型的选择完全是凭感觉设计。这样就会对数据的操作造成很大的影响, 尤其是大数据的情况!

所以, 在实际项目开发中, 选择一个合适的列类型也是一门学问!

2、整型数据的选取

整型数据的选取依据:整型数据的选取主要看列所储存的数据范围, 根据范围选择合适的整型数据!

例1:存储一个人的年龄, 使用tinyint比较合适

例2:存储一个乌龟的年龄, 使用smallinti比较合适

例3:存储一个文章表的主键id

如果文章的数量小于1600万, 建议使用mediumint

如果文章的数量大于1600万, 建议使用int

3、浮点型(小数类型)数据的选取

float浮点类型

decimal双精度浮点类型

浮点型数据选取的依据:数据的精度, float适合精度要求不是特别高的情况(能够保留的有效数字只有6位), decimal适和精度要求较高的情况。

create table t_float(

f1 float(10,2),

d2 decimal(10,2)

) engine = myisam default charset=utf8;

> insert into t_float values(132075.32, 131075.32);

> insert into t_float values(2323.32, 2323.38);

mysql> select * from t_float;

+-----------+-----------+

| f1 | d2 |

+-----------+-----------+

| 132075.31 | 131075.32 |

| 2323.32 | 2323.38 |

+-----------+-----------+

2 rows in set (0.00 sec)

4、字符串类型的选取

char类型、varchar类型、text类型

① char类型与varchar类型选取依据:主要看字符串小于255字符主要看变化形式。

char(255字符), varchar(65535字节), 如果是UTF8则最大65535/3 - 2个字符, 因为要预留1-2字节空间存放该字段的字符数目)

小于255个字符, 用一个字节空间存放该字段的字符数目, 大于255个字符, 需要用两个字节空间存放该字段的字符数目。

固定长度char与变换长度varchar

在实际项目开发中:

1) 如果要存储的数据是固定长度的, 建议使用char类型, 如邮政编码、手机号码、md5加密后的等等都适合使用char类型。

2) 如果要存储的数据是变化长度的(长度未知), 如姓名、文章标题、描述等等都适合使用varchar类型

② char类型与varchar类型对字符串尾部空格的处理方式不同

create table t_string(

c1 char(11),

v2 varchar(11)

) engine = myisam default charset=utf8;

> insert into t_string values('abcdefg ','abcdefg ');

mysql> select concat(c1,'+'), concat(v2,'+') from t_string;

+----------------+----------------+

| concat(c1,'+') | concat(v2,'+') |

+----------------+----------------+

| abcdefg+ | abcdefg + |

+----------------+----------------+

1 row in set (0.00 sec)

由上图可知, char类型会自动删除字符串尾部空格而varchar类型则会保留空格!

③ char类型与varchar类型存储机制不同

char(11)首先开辟一块连续的空间, 存储11个字符, 即使插入的字符串不足11个字符长度, 系统也会占用11个字符的存储空间

varchar(11)首先插入字符串, 如果插入的字符串不足11个字符, 则只占用实际字符串的存储空间。

所以由此可知, 在实际项目开发中, 固定长度就应该选择char类型, 变化长度就应该选择varchar类型, char类型执行速度要略快于varchar类型!

④ varchar类型与text类型的选取

在实际项目应用中, 如果字符长度超过255个字符, 则建议使用text类型, 反之则建议使用varchar类型!

5、时间类型的选取

datetime:时间格式, 2016-07-14 00:00:00

date:时间格式, 2016-07-14

time:时间格式, 00:00:00

year:时间格式, 2016

timestamp:时间戳格式, YYYYMMDDHHMMSS

① 但是在实际项目开发中, 由于时间类型占用的字节长度比较大, 所以大型项目中通常采用int类型来存储时间的时间戳格式以减少字段所占用的空间大小!

② 在PHP中, 我们可以使用date函数对时间戳格式进行格式转化!

6、枚举类型与集合类型

枚举类型(单选): 常用于性别操作, 如enum('男', '女', '保密');

集合类型(多选): 常用于爱好操作, 如set('吃饭', '睡觉', '打豆豆');

7、IP与整型数据的转换

① 如果以后存储IP地址, 可以考虑使用MySQL内置函数

inet_aton(ip):把IP地址转化为整型数据。

mysql> select inet_aton('221.234.43.154');

+-----------------------------+

| inet_aton('221.234.43.154') |

+-----------------------------+

| 3723111322 |

+-----------------------------+

1 row in set (0.11 sec)

inet_ntoa(数字) :把整型数据转换为IP地址。

mysql> select inet_ntoa(3723111322);

+-----------------------+

| inet_ntoa(3723111322) |

+-----------------------+

| 221.234.43.154 |

+-----------------------+

1 row in set (0.00 sec)

② 如果以后存储IP地址, 也可以考虑使用PHP内置函数

ip2long(ip): 把一个IP地址转化为整型数字

long2ip(数字):把一个数字转化为IP地址

<?php

$ip = "221.234.43.154";

echo ip2long($ip); //-571855974

echo "<hr>";

echo long2ip(-571855974); //221.234.43.154

?>

标签: #mysql查看列的数据类型 #mysql中名字用什么数据类型 #mysql姓名用什么类型 #mysql中姓名用什么数据类型