数据库_MySQL: mysql数据类型的用法介绍

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87979887

MySQL数据类型

建表语法

【语法】
create table [if not exists] `表名`(
字段名 字段类型 [null|not null][default][auto_increment][primary key][comment 备注],
字段名 字段类型,
.....
字段名 字段类型
)[engine=存储引擎] [charset=编码] [collate=校对集];

【说明】
[if not exists] `表名`     判断表是否存在:存在-不管,不存在-创建
[null|not null]			  声明字段值是否可以插入null数据
[default]			     声明字段值如果没有录入数据则使用默认值
[primary key]			  主键(特点:字段值不能重复且不能为null[auto_increment]		  自增(该属性必须配合primary key效果字段值自动增长123[comment 备注]             声明字段的作用
[engine=存储引擎]          存储引擎
[charset=编码]             数据存储编码

字节

1字节(Byte)= 8位(bit)
1KB = 1024 Byte(字节)

英文:1个字符 = 1个字节
中文:1个字符 = 等于3个字节(utf-8) 等于2个字节(gbk)

1、数值型(整数)

在这里插入图片描述

无符号数(unsigned)

create table tint2 (num tinyint(10) unsigned)charset=utf8;
insert into tint2 values (0);
insert into tint2 values (255);
...

tinyint(10)其中10表示存储宽度(存储宽度指:当插入数据位数不够则自动从左侧补0,必须加zerofill属性宽度才会生效)

2、数值型(小数)

  • 浮点型,特点:小数点浮动,有精度丢失
  • 定点型,特点:小数点固定,不会丢失精度
浮点数 语法 占用字节 范围 精度范围
单精度 float(总长度,小数长度) 4 -3.4E+38~3.4E+38 大概为7位左右
双精度 double(总长度,小数长度) 8 -1.79E+308~1.79E+308 大概为15位左右
定点数 decimal(最大65,最大30) 依赖于M和D的值

选择:

未涉及到资金小数可以用浮点型(float或double) 优先用float

涉及资金用decimal(注:decimal小数位一般2位如果没有小数会用0自动补充)例如:金钱money decimal(10,2)

3、日期类型

数据类型 描述 格式 占用字节
datetime 日期时间 年-月-日 小时:分钟:秒 8
date 日期 年-月-日 4
time 时间 小时:分钟:秒 3
year 年份 1
timestamp 时间戳 年-月-日 小时:分钟:秒 4

datetime(占8个字节)和timestamp(占4个字节)在表现上是一样

区别:

  • 存储范围:datetime从1到9999,
  • 存储方为:timestamp从1970年到2038年(原因是timestamp只占用了4个字节,而2038年01月19日11:14:07秒后就超过了4个字节的长度)

选择: 在实际运用中时间类型使用int类型,但是也有公司使用datetime

说明:

选择int类型原因:int比datetime更节省空间

选择datetime类型原因:int同timestamp最大存储时间为2038年

为什么选择int的公司比datetime多

项目不同页面所需格式 int类型 datetime类型
2017/3/8 date('Y/m/d’,时间戳) 先转时间戳,再date函数
2048-3-16 date('Y-m-d’,时间戳) 先转时间戳,再date函数
2014/03/33 12:30:02 date(‘Y/m/d H:i:s’,时间戳) 直接显示
刚刚、24小时前… 调用函数传递时间戳 先转时间戳,再调用函数

4、字符串型

数据类型 描述
char(长度) 定长字符(最多255个字符)
varchar(长度) 可变长度字符(65535个字节
tinytext 大段文本(大块数据) 2^8-1=255个字符
text 大段文本(大块数据) 2^16-1=65535个字符
mediumtext 2^24-1 = 16777215个字符
longtext 2^32-1 = 4294967295个字符

char的执行效率比varchar高(varchar回收空间、char不回收)

选择:

明确数据长度选择char反之用varchar,如:性别char(1) 标题varchar(60)

文章内容或者大块文字时选择text

5、枚举(enum)

只能从集合数据中获取一个值(单选)

语法:sex enum(‘男’, ‘女’)

MySQL枚举值是通过整型的数字来管理的,第一个值对应1,第二个值对应2依次类推

后期推荐使用tinyint类型:1-男,2-女

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/87979887