文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL数据类型(精)

2021-02-11 16:49

关注

MySQL数据类型(精)

数据类型(精)

MySQL中的数据类型

整型类型

类型介绍

可选属性

M

设置字段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

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

ZEROFILL

适用场景

如何选择

要兼容存储空间和可靠性

最好用大的存储(考虑扩容等)

浮点类型

类型介绍

数据精度说明

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

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

精度误差

DOUBLE 和 FLOAT 都存在误差

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

定点数类型(最好使用)

最好加上精度和标度

定点数是以字符串类型存储的

默认DECIMAL(10,0)

也会和浮点数一样的四舍五入的规则

定点数和浮点数

位类型

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

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

日期和时间类型

建议都用‘’来括起来

YEAR类型

insert into test_year(f1)
values("2155"),("69"),("70"),(0),("00");#最好用大写

DATE类型

#添加指定时间
INSERT INTO 表(字段)
VALUES ("1999-01-12");
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT()),(CURRENT_DATE()),(NOW());

TiME类型

#添加指定时间
INSERT INTO 表(字段)
VALUES ("2 12:13:14"),("12:12"),("45");
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT()),(CURRENT_TIME()),(NOW());

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

#添加指定时间
INSERT INTO 表(字段)
VALUES ("2001-01-01 12:12:12");
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT_TIMESTAMP()),(NOW()),(SYSDATE());

TIMESTAMP类型

#添加指定时间
INSERT INTO 表(字段)
VALUES ("1998-01-01 12:2:12");
#添加当前时间
INSERT INTO 表(字段)
VALUES (CURRENT_TIMESTAMP()),(NOW()),(SYSDATE());

DATETIME和TIMESTAMP的区别

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";

文本字符串类型

CHAR与VARCHAR类型

CHAR类型

VARCHAR类型(必须写M)

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

CHAR 与 VARCHAR 的选择

  1. 适用于非CHAR的情况
  2. InnoDB存储引擎(主要影响性能的因素时数据行使用的存储总量)

TEXT类型

用来保存文本型字符串,不需要预先定义长度

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

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

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

ENUM(枚举)类型

添加时,忽略大小写

可以使用索引来完成调用

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

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

SET类型

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 的区别类似

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上

TEXT和BLOB的使用事项

JSON类型

CREATE TABLE test_json(
js json
);
insert into test_json(js)
values("{"name":"wht","age":20,"address":{"province":"beijing","city":"beijing"}}"); 

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

空间类型(了解)

小结和建议

整型:INT

小数:DECIMAL(M,D)

日期时间:DATETIME

字符串:见阿里巴巴《开发手册》

原文地址:https://www.cnblogs.com/wht-de-bk/archive/2022/03/11/15995488.html

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯