mysql的数据类型_MySql的回顾八数据类型介绍

漆黑的夜空,总能让人产生无数的遐想,不知屏幕前的你,这周过得怎么样?玩耍也好,"修炼"也好,总之时间在不断从我们各处穿梭而过,

但你既然都点进来了,那在这短短的5分钟内我就来带你领来温习一下Mysql数据类型吧!

#常见的数据类型

数值型:

整型

小数:

定点数

浮点型

字符型:

较短的文本:char,varchr

较长的文本:text,blob(较长的二进制数据)

一.整型

072403c215a06dd9c397cc875029119f.png

6307375b2b390b6aa5adb53d8e50065c.png

分类:

tinyint,smallint,mediumint,int/integer,bigint1 2 3 4 8特点:

①如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,

需要添加UNSIGNED关键字。

②如果插入的数值超出了整数的范围,会报outifrange异常,并且插入临界值

③如果不设置无符号和有符号,有符号的Int长度默认11,无符号Int的默认长度10

④长度代表了显示的最大宽度,如果不够用会用0在左边填充,

但必须搭配ZEROFILL使用。

#案例:1.如何设置有符号和无符号

#有符号的

CREATE TABLE tab_int(

t1 INT

);

DESC tab_int;

插入一条数据

INSERT INTO tab_int VALUES(-123456);/*Affected rows: 1 Found rows: 0 Warnings: 0 Duration for

1 query: 0.016 sec.*/

/*受影响的行:1 找到的行:0 警告:0 1 查询的持续时间:0.016 秒*/删除表

DROP TABLE IF EXISTS tab_int;

#重新创建表

创建t2为无符号的数据类型

CREATE TABLE tab_int(

t1 INT,

t2 INT UNSIGNED

);

DESC tab_int;

e11442eac3360c93cfe986a24c5e47b8.png

#插入一条数据

449f22527655c55b2e2eb06f26fd2fea.png

#插入一条数据

INSERT INTO tab_int VALUES(-123456,0);

SELECT * FROM tab_int;

6c489f760f51b3b4e1a988bd0645b3e8.png

#长度设置,长度是不代表数据范围,只是代表占术数据的宽度。数据范围由类型决定。

设置了宽度,如果不够会用0去填充。

删除表,再次创建

DROP TABLE IF EXISTS tab_int;

CREATE TABLE tab_int(

t1 INT(7),

t2 INT(7) UNSIGNED

);

DESC tab_int;

b6caebcac1bbbfe3aa9d9b9b812f5c74.png

插入数据,查看数据

INSERT INTO tab_int VALUES(123,123);

SELECT * FROM tab_int;

381dd28b490b2a731aa6dfb06507b2e0.png

为什么没0填充?删除表,再次创建,给字段后添加ZEROFILL关键字,添加ZEROGILL后变为无符号数据类型。DROP TABLE IF EXISTS tab_int;

CREATE TABLE tab_int(

t1 INT(7) ZEROFILL,

t2 INT(7) UNSIGNED

);

插入数据,查看数据

INSERT INTO tab_int VALUES(123,123);

SELECT * FROM tab_int;

d0788160fae0796fa6cdcae34e76ad7f.png

二.小数

fde7671b4eaa0b1349e7e26529ff0485.png

备注:±正负号:按住Alt再用小键盘输入0177

分类1.浮点型float(M,D)double(M,D)2.定点型

dec(M,D)decimal(M,D)

定点型

特点

M:整数部位+小数部位

D: 小数部位

如果超过范围,则插入临界值

M和D都可以省略

如果是decimal,则M默认为是10,D默认为0(如果超过会报错)

如果是float和double,则会根据插入的数值精度来决定精度

定点型的精确度较高,如果要求插入数值的精度较高如

货币运算等则考虑使用

备注:一般用float就行,节省空间

建表数据类型选择的原则:

所选择的类型越简单越好,能保存数据类型越小越好。

#测试M与D

CREATE TABLE tab_float(

f1 FLOAT(5,2),

f2 DOUBLE(5,2),

f3 DECIMAL(5,2)

);

DESC tab_float;

2b22f1d52c23e9638ce6feac8afeaf46.png

插入数据,正常执行

INSERT INTO tab_float

VALUES(123.45,123.45,123.45);

SELECT * FROM tab_float;

24568ea2ad38ef79e62da008312108b6.png

再次插入数据

INSERT INTO tab_float

VALUES(123.456,123.456,123.456);

da2a65317778f3b8c0b6dd81593c96a4.png

查询数据

SELECT* FROM tab_float;

fd10be2cc70a5c2bb8d07f87167b73cb.png

四舍五入了

再次插入数据

INSERT INTO tab_float

VALUES(123.4,123.4,123.4);

SELECT * FROM tab_float;

5f9ff5286eff071b4ba9e7983b059887.png

再次插入,测试

INSERT INTO tab_float

VALUES(1523.4,1523.4,1523.4);

超出范围报错,无法插入

d8c3271513f58545ffd8483ca05f7be2.png

先删除,再次创建tab_float表,省略后(M,D),正常执行

DROP TABLE tab_float;

CREATE TABLE tab_float(

f1 FLOAT,

f2 DOUBLE,

f3 DECIMAL

);

SELECT* FROM tab_float;

14ead0903fd20d674851c2d6ba9a3ffd.png

再次插入数据,f3报错

INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523);

DESC tab_float;

60aad5645c35f7304912dc1f7d1d2946.png

三.字符型(串数据/文本型/二进制)

char和varchar类型

说明:用来保存MySql中较短的字符串

c7feff324973e9e2c422247216a1fee5.png

分类

较短的文本:

cahr varchar

特点:

2d7c11f7d6b51402e0b7b5cb011e680e.png

备注:

固定的用char如性别只有男或女

姓名用varchar 不同民族的姓名长度不一样char(M)可以省略M,默认为1

varchar不可以省略

较长的文本:

text

blob(较大的二进制)

位类型

13ef3d1ee5e1b72d6e09ac90fc026ca3.png

Binary和varbinary类型(较短的二进制)

说明:类是与char与varchar,不同的是它们包含了二进制字符串不包

含非二进制字符串。

Enum类型(一娜姆)

说明:又称为枚举类型哦,要求插入的值必须属于列表中指定的值之一。

其他:

binary和varbinary用于保存较短的二进制

enum用于保存枚举

set用于保存集合

建表

CREATE TABLE tab_char(

c1 ENUM('E','S','W','N')

);

#东—East,西—West,南—South,北—North

插入数据

INSERT INTO tab_char VALUES('w');

INSERT INTO tab_char VALUES('W');

INSERT INTO tab_char VALUES('N');

Affected rows: 3 Found rows: 0 Warnings: 0 Duration for 3 queries:

0.015 sec.

受影响的行:3 找到的行:0 警告:3 个查询的 0 持续时间:0.015 秒。

ab469be400b601ab46305f226a4e65d1.png

c1030434c96f0ffd3a48bfb4e0683b87.png

性别(男女)与季节(春夏秋冬)也可以考虑使用枚举类型。

Set类型

说明:和Enum类型类似,里面可以保存0~64个成员。

和Enum类型最大的区别是:

SET类型可以选取多个成员,

而Enum只能选一个,根据成员个数不同,存储所占的字节也不同。

#建表测试

CREATE TABLE tab_set(

s1 SET('c','x','q','d')

);

DESC tab_set;

d606d0707803c9030d23d1f07ec86b25.png

#插入数据,初夏秋冬

INSERT INTO tab_set VALUES('c');

INSERT INTO tab_set VALUES('c,x');

INSERT INTO tab_set VALUES('c,q,d');

SELECT *FROM tab_set;

#插入成功,不区分大小写,大写插入,小写入库

6c9f1fa38c9ddf6af3bbea6f01a81312.png

四. 日期型

53c68ba60da25f0885a7a3b0b1d9657c.png

1.Timestamp支持的时间范围较小,

取值范围:1970010108001--2038年的某个时间

Datetime的取值范围:1000-1-1--9999-12-31

2.timestamp和实际时区有关,更能反映实际的日期,

而datetime则只能反映出插入时的当地时区。3.timestamp的属性收Mysql版本和SQLMode的影响很大。

建表

CREATE TABLE tab_date(

t1 DATETIME,

t2 TIMESTAMP

);

插入数据

DESC tab_date;

b2b789750b591cce2f87590005db1c23.png

INSERT INTO tab_date VALUES(NOW(),NOW());

SELECT * FROM tab_date;

734de486f46d0ffaa4fcb8f740ba761c.png

查看时区

SHOW VARIABLES LIKE'time_zone';

本地时区

SET time_zone='+8:00';

f4a69a08a941b74f70d523b13e3c3a63.png

修改时区,改为东9区

SET time_zone='+9:00';

1b582d0f3adbceeb36b692d572b70fff.png

再次查询

SELECT* FROM tab_date;

49c50338dfd4745a4dacf4517b9755fc.png

小结:

分类:

date只保存日期

time只保存时间

year只保存年

datetime保存日期+时间

timestamp保存日期+时间

特点:

字节 范围 时区等影响

datetime8 1000-9999不受

timestamp4 1970-2038 受

既然都看到这里了,希望你能有所收获。要不也动动你的小手手也练习一下???

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值