MySQL数据类型(精)

数据类型(精)

MySQL中的数据类型

MySQL数据类型(精)

MySQL数据类型(精)

整型类型

类型介绍

MySQL数据类型(精)

可选属性

M

MySQL数据类型(精)
  • 显示宽度 不会影响类型的实际宽度
设置字段f1,f2,f3
f1 INT,
f2 INT(5),
f3 INT(5) ZEROFILL#不足宽度时,会自动补0;并且自动变成UNSIGNED

添加数据
INSERT INTO 表名(f1,f2,f3)
VALUES(123,123,123)(123456,123456,123456);

结果不会报错
#但是在显示f3时,123前面会补出两0

UNSIGNED

MySQL数据类型(精)

如果确定没有负数,则最好使用无符号数

[En]

If it is determined that there are no negative numbers, it is best to use unsigned numbers

ZEROFILL

MySQL数据类型(精)

适用场景

MySQL数据类型(精)

如何选择

要兼容存储空间和可靠性

最好使用大容量存储(考虑容量扩展等)

[En]

It is best to use large storage (consider capacity expansion, etc.)

浮点类型

类型介绍

MySQL数据类型(精)

数据精度说明

DOUBLE(M,D)(非标准语法)

  1. M:精度:整数位+小数位(D,255)
  2. D:标度:小数位(0,30)
  3. 存在四舍五入(只限于小数位超过指定的大小,且大约后的数据不越界)

精度误差

DOUBLE 和 FLOAT 都存在误差

使用浮点型数据时,尽量不要用”=”来判断两数是否相等

定点数类型(最好使用)

MySQL数据类型(精)

最好加上精度和标度

固定点数以字符串形式存储。

[En]

The fixed point number is stored as a string.

默认DECIMAL(10,0)

将与浮点数一样进行四舍五入。

[En]

Will be rounded the same as floating-point numbers.

定点数和浮点数

  • 定点:精度高,取值范围小
    [En]

    fixed points: high precision and small range of values*

  • 浮点:取值范围广,误差小
    [En]

    floating point: a wide range of values can be used with small errors*

位类型

MySQL数据类型(精)

只能添加0和1(10进制下)

默认以16进制来实现,可以使用函数BIN()(2进制)来改变输出形式;在字段后面加0,则以10进制来实现

日期和时间类型

建议都用”来括起来

MySQL数据类型(精)

YEAR类型

  • 以四个字符串或是数字格式来表示:YYYY(推荐)
  • 以两种字符串格式表示:
    [En]

    expressed in two string formats:*

MySQL数据类型(精)
insert into test_year(f1)
values('2155'),('69'),('70'),(0),('00');#最好用大写

MySQL数据类型(精)

DATE类型

  • 格式:YYYY-MM-DD(年-月-日)(推荐)

MySQL数据类型(精)
#添加指定时间
INSERT INTO 表(字段)
VALUES ('1999-01-12');
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT()),(CURRENT_DATE()),(NOW());

TiME类型

  • 格式:HH:MM:SS(时:分:秒)

MySQL数据类型(精)
#添加指定时间
INSERT INTO 表(字段)
VALUES ('2 12:13:14'),('12:12')/*小时:分钟*/,('45')/*秒*/;
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT()),(CURRENT_TIME()),(NOW());

DATETIME类型(占8个字节,使用频率较高)

  • 格式:YYYY-MM-DD HH:MM:SS(年-月-日 时:分:秒)

MySQL数据类型(精)
#添加指定时间
INSERT INTO 表(字段)
VALUES ('2001-01-01 12:12:12');
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT_TIMESTAMP()),(NOW()),(SYSDATE());

TIMESTAMP类型

  • 格式:YYYY-MM-DD HH:MM:SS(年-月-日 时:分:秒)
  • 注意时间的越界

MySQL数据类型(精)
#添加指定时间
INSERT INTO 表(字段)
VALUES ('1998-01-01 12:2:12');
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT_TIMESTAMP()),(NOW()),(SYSDATE());

DATETIME和TIMESTAMP的区别

MySQL数据类型(精)
insert into temp_time values ('2021-9-2 14:45:52','2021-9-2 14:45:52');
insert into temp_time values(now(),now());
#修改时区
SET time_zone = '+9:00';

MySQL数据类型(精)

文本字符串类型

MySQL数据类型(精)

CHAR与VARCHAR类型

  • CHAR:固定长度(M),范围(0,255),M个字节
  • VARCHAR:可变长度(M),范围(0,65535),实际长度+1个字节

CHAR类型

MySQL数据类型(精)

VARCHAR类型(必须写M)

最大范围不可以写65535,而应该写21845

MySQL数据类型(精)

CHAR 与 VARCHAR 的选择

  • CHAR:浪费存储空间,效率高
 1. 适用于存储不大,效率要求高的
 2. 十分平凡的修改column的
 3. MyISAM和MEMORY存储引擎
  • VARCHACR:节约存储空间,效率低

  • 适用于非CHAR的情况

  • InnoDB存储引擎(主要影响性能的因素时数据行使用的存储总量)

TEXT类型

用于保存没有预定义长度的文本类型字符串

[En]

Used to save text-type strings without pre-defined length

由于实际长度不确定,MySQL不允许TEXT类型的字段做主键(可以采用CHAR(M)或是VARCHAR(M))

频繁使用的表不建议使用TEXT类型,建议单独用一个表

create table tst_text(
t1 TEXT
);
insert into (t1)
values ('hello word');#记得最好大写

ENUM(枚举)类型

MySQL数据类型(精)

添加时,忽略大小写

可以使用索引来完成调用

null也可以添加(没有限制非空)

create table tst_enum(
e1 enum('春','夏','秋','冬')#添加时从4个里面选*一个*
      #   1    2    3    4
);
insert into (e1)
values ('春'),('冬');#记得最好大写

SET类型

MySQL数据类型(精)
create table tst_set(#记得最好大写
s1 SET('A','B','C')
);
insert into (s1)
values ('A')('A,B');
insert into (s1)
values ('A')('A,B,C,A');#重复的A会过滤掉
insert into (s1)
values ('A')('A,B,C,D');#会报错,应为D不存在

二进制字符串类型

BINARY与VARBINARY类型

与CHAR 和 VARCHAR 的区别类似

MySQL数据类型(精)

binary 一旦确定了长度,就不会改变

create table tst_binary(#记得最好大写
f1 binary,#默认是1
f2 binary(3),
f3 varbinary,#默认是1
f4 varbinary(10)
);
insert into (f1,f2)
values ('a','abc');

BLOB类型

BLOB是一个 二进制大对象,可以容纳可变数量的数据(像图片,视频等)

MySQL一般不会在数据库中使用BLOB类型,往往是将它们存储到 服务器的硬盘上,将访问路径存储到MySQL上

MySQL数据类型(精)

TEXT和BLOB的使用事项

MySQL数据类型(精)

JSON类型

MySQL数据类型(精)
CREATE TABLE test_json(
js json
);
insert into test_json(js)
values('{"name":"wht","age":20,"address":{"province":"beijing","city":"beijing"}}');

MySQL数据类型(精)
#提取其中的数据(->)
select js -> '$.name' as NAME,js -> '$.age' as AGE,js -> '$.address.province' as PROVINCE,js ->'$.address.city' as CITY
from test_json;

MySQL数据类型(精)

空间类型(了解)

MySQL数据类型(精)

小结和建议

整型:INT

小数:DECIMAL(M,D)

日期时间:DATETIME

字符串:请参阅阿里巴巴的发展手册

[En]

String: see Alibaba’s Development Manual

MySQL数据类型(精)

Original: https://www.cnblogs.com/wht-de-bk/p/15995488.html
Author: T,a,o
Title: MySQL数据类型(精)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505578/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Git 环境搭建

    安装 Git:官网 👉https://git-scm.com/ GIt基础配置(以下操作均在 git bash 窗口下进行) git config –global user.na…

    数据库 2023年6月6日
    068
  • FTP文件上传

    一、配置FTP文件服务器 以Ubuntu为例 FTP两种模式简介 PORT(主动模式)第一步FTP客户端首先随机选择一个大于1024的端口p1,并通过此端口发送请求连接到FTP服务…

    数据库 2023年6月6日
    085
  • MySQL实战45讲 15

    15 | 答疑文章(一):日志和索引相关问题 日志相关 binlog(归档日志)和redo log(重做日志)配合崩溃恢复,在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎…

    数据库 2023年6月16日
    0128
  • 关于那些我们都听过的营销工具—优惠券

    相信大家对优惠券都不陌生,特别是在现在这个互联网特别发达的时代,优惠券是我们运营推广营销的一种工具,它可以降低产品的价格,是一种常见的消费者营业推广工具, 作为一种信息的载体,它不…

    数据库 2023年6月14日
    070
  • 安装node、npm、vue cli脚手架

    1、node https://www.runoob.com/nodejs/nodejs-install-setup.html 2、npm 安装好node就默认安装好npm 不需要单…

    数据库 2023年6月9日
    073
  • java实现有道翻译爬虫

    我的博文地址 https://www.cnblogs.com/lingdurebing/p/11618902.html 使用的库 1.commons-codec 主要是为了加密,可…

    数据库 2023年6月11日
    087
  • Django 报ckeditor/skins/moono/skin.js 404

    环境: Django:v3.2.5 (pip list查看版本号) django-ckeditor:v6.1.0 bug描述:在admin后台,进行编辑文章的时候,在console…

    数据库 2023年6月9日
    064
  • loadrunner 无法保存许可信息

    1.CONFUGURATION—>loadrunner license—>New License页面,输入许可信息,提示:无法保存许可信息 2.解决方法,使用管理员角色…

    数据库 2023年6月14日
    096
  • B树-删除

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 删除 根据B树的以下两个特性 每一个非叶子结点(除根结点)最少有 ⌈ m/2⌉ 个子结点 有k…

    数据库 2023年6月14日
    067
  • MySQL事务提交流程详解

    一. 事务的提交流程。 获取 MDL_key::COMMIT 锁: FTWRL会阻塞 commit 操作。 XID_Event生成并写入binlog cache中。会首先将事务中的…

    数据库 2023年5月24日
    081
  • 爬虫基础

    1.爬虫是什么? 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 2.爬虫原理 _3.第一个爬虫程序 _ 1.扒取网页 : 扒取网页和基本代码 首先我们调…

    数据库 2023年6月11日
    064
  • MySQL学习笔记

    MySQL学习笔记 解决MYSQL中文乱码问题 一、乱码的原因: 1、 client客户端的编码不是utf8 2、server端的编码不是utf8 3、database数据库的编码…

    数据库 2023年6月14日
    081
  • mysql拆分字符串做条件查询

    mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以 ,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个d…

    数据库 2023年6月16日
    060
  • MySQL45讲之函数转换导致不使用索引

    本文介绍了由于函数转换而不使用索引的三个问题。请注意,不使用索引意味着不使用树搜索,而是使用全表扫描索引树。 [En] This article introduces three …

    数据库 2023年5月24日
    066
  • 【黄啊码】MySQL入门—6、掌握这些数据筛选技能比你学python还有用-2

    大家好!我是黄啊码,上节课我们将了DISTINCT、 FROM 、 GROUP BY、 HAVING 、 ORDER BY 这些筛选数据的技能,是不是总感觉少了些啥? 你:啊码,你…

    数据库 2023年6月16日
    0100
  • 工程师成长阶段感悟

    从 2013 年陆续开始做软件研发工作, 去过不少公司, 做过一些类型项目, 桌面开发, web 开发, 手游开发, 端游开发, 棋牌, 视频云服务, 电商. 刚毕业那会在国企, …

    数据库 2023年6月9日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球