ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql:数据类型介绍

2022-09-16 11:30:08  阅读:279  来源: 互联网

标签:存储 数据类型 数据库 字符集 介绍 字段 Mysql 类型 create


字段数据类型

image

整数类型

只能存储整数的数字。不同的整数类型区别在于存储数字的大小。如果说平时保存的数字很小不超过3位数,可以使用tinyint,保存数字特别大则可用bigint
常用整数类型:tinyint,int,bigint
image
上面是各整数类型的存值范围(有无符号表示有无加unsigned);然后相信大家经常还能看到类似:int(11),tinyint(4)...后面括号里的数字表示宽度,即在能存储的范围内,能接受数字的最大位数(包括负号),比如说 12就是2位,2122就4位。

但重点来了,他这个宽度没啥很大用处,在mysql8.0被优化掉了,所以大家了解下就好。

浮点类型

只能存储数字,但可存储有小数点的数字。如1,1.11都可进行存储。但会出现精度丢失的情况,因此实际在开发和生产很少去使用浮点类型

定点数类型

典型代表decimal,decimal的作用和浮点类型一样,但不同是不会出现精度丢失,因此在涉及金额或者不允许误差的业务场景下,使用的频率非常高。基本代替了浮点类型的使用
然后经常能看到decimal类型的字段有 decimal(M,D)的形式,M表示精度,D表示标度。说人话就是:M是保存数值能接受的最大位数(记住这里的位数不包括符号和小数点号),D表示必须保留的小数位数,不够位后面补0;
举个例子,假设decimal(5,2),

  1. 传123.45,实际保存123.45(5位)
  2. 传12.45,实际保存12.45(4位)
  3. 传12.4,实际保存12.40(4位)
  4. 传0,实际保存0.00(3位)

日期时间类型

保存日期或时间。
常用日期时间类型:Date(年月日)、DateTime(年月日时分秒)、TIMESTAMP(年月日时分秒)
Date插入示例:

INSERT INTO test_date1 
VALUES
('2020-10-01'), 
('20201001'),
(20201001);

DateTime和TIMESTAMP插入示例:

INSERT INTO test_datetime_timestamp 
VALUES
('2021-01-01 06:50:30'), 
('20210101065030');

开发建议

用得最多的日期时间类型,就是 DATETIME 。虽然 MySQL 也支持 YEAR(年)、 TIME(时间)、DATE(日期),以及 TIMESTAMP 类型,但是在实际项目中,尽量用 DATETIME 类型。因为这个数据类型包括了完整的日期和时间信息,取值范围也最大,使用起来比较方便。毕竟,如果日期时间信息分散在好几个字段,很不容易记,而且查询的时候,SQL 语句也会更加复杂。
此外,一般存注册时间、商品发布时间等,不建议使用DATETIME存储,而是使用 时间戳 ,因为DATETIME虽然直观,但不便于计算。

文本字符串类型

用于保存字符串。上面列举都可存储字符串,不同还是存储字符串的大小。
常用文本字符串类型:varchar(最常见)、text(小作文啥的可用)、LongText(大文本使用,如base64字符串)
MySQL5.0版本以上,varchar(20):指的是20字符。一个字符包括字母,数字,汉字。
InnoDB 存储引擎,建议使用VARCHAR类型,所以无脑用varchar就可以了。

二进制类型

用于保存字节数据。像音频、视频、图片不能用字符串或者数字类型表示,就可以字节的方式存储在二进制类型的字段里
但是平时特别少见,考虑到数据库数据量和读取,不会把大数据的东西放在Mysql、Oracle等关系型数据库中,一般优先考虑非关系型数据库进行存储

创建表指定字段 或 添加字段时涉及关键字

image

unsigned:用于在数字类型的字段,此字段只能为正数不允许负数
characted set '字符集':指定数据库 或 数据表 或 字段的字符集。示例如下:

数据库指定字符集:
create database if not exists 数据库名 characted set '字符集';//指定字符集
show create database 数据库名;//查看数据库库字符集情况

创建表指定字符集:
create table 表名(
	字段1 数据类型1
) characted set '字符集';//指定表的字符集

show create table 表名;//查看表的字符集情况

创建表时指定字段的字符集:
create table 表名(
	字段1 数据类型1 characted set '字符集'
);//指定字段的字符集

show create table 表名;//查看字段的字符集情况

注意:如果字段没指定字符集,按表来,表没有,按数据库来。如果数据库没有,可以使用如下命令:

show variables like 'character_%'

image
红色部分的则是数据库未指定字符集情况下默认的字符集。

标签:存储,数据类型,数据库,字符集,介绍,字段,Mysql,类型,create
来源: https://www.cnblogs.com/ibcdwx/p/16696094.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有