前言:
而今看官们对“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中姓名用什么数据类型