拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MySQL的数据类型

MySQL的数据类型
@bit::Shadow
✧(≖ ◡ ≖✿

目录

int类型

bit

浮点数

float

decimal

字符串类型

char

varchar

char VS varchar

日期、时间类型

格式

时间戳一定是自动改变的吗?

enum与set

在set列中怎么插入多个值呢?

插入时的底层

enum

set

举例


类型后置:C/C++中 int age; MySQL中 age int;

注意:整型一般操作是,溢出截断,默认创建时是有符号的。

int类型

类型字节
tinyint1
smallint2
mediumint3
int4
bigint8

bit

存在大小限制[1, 64]

当select时打印:

注意:

1.因为BIT类型在 MySQL 里是按位存储的,显示时按字节补足两位,而不是按你写入的位数显示。

2.显示默认是以16进制形式显示的。

3.无unsigned的bit类型。

浮点数

float double decimal

float

1.截断、四舍五入的规则更加有影响。

通过括号的方式来限定位数。

float(m, l); 代表至少m长度l个小数位。 此长度不包含小数点(符合直觉)

显示与溢出

同样的,double类型也可被定义。

decimal

优化解决了float的精度问题。

常被用于银行、金融机构等需高精度的计算要求。

字符串类型

编码格式对汉字的影响:

gbk:一个汉字两个字节

utf8:一个汉字三个字节!!!

注意:MySQL中以字符作为存储单位。(“1” “a” “好” 等在MySQL下均是一个字符大小)

常用的字符单位是char varchar

char

范围[0,255]字符

char代表定长类型。

varchar

数据库尽量节省空间的体现类型

“变长字符类型”

最大值:utf-8下是21845 GBK下是32766。(65535字节/3 或者 65535字节/2)

特性:

1.当定义varchar(3),却只容纳了“中”,实际上占用了小于3个字符大小。

2.varchar内有额外1~3字节记录实际上使用的空间大小。
这就是为什么虽然上限是21845却只能创建21844大小

注意:表的单行大小也存在限制---65535字节。

char VS varchar

我们应该从两方面入手:“长度易变?” “常用长度大小”

仅易变且长度较大(像游戏用户名)推荐使用varchar。其他情况均建议使用char定长。(当然具体肯定要结合实际来讨论)

日期、时间类型

date datetime datestamp

仅存在三种类型:日期(年月日)、日期时间(年月日时分秒)和时间戳(年月日时分秒)

格式

date:YYYY-MM-DD

datetime:YYYY-MM-DD HH:MM:SS

datestamp:YY-MM-DD HH:MM:SS

举例

insert into 表名 values ('2001-01-01', '1949-09-09 09:09:09', '2025-01-01 12:00:00');

更改

update 表名 set 列名 = 新值 where 定位条件;

时间戳:隶属于当前行,一旦行内数据发生于原本数据不一致的变化,便会自动更改为变化发生时的时间。

注意:

1.英文引号 '' 引入输入内容。

2.特定类型的格式约束。

3.更改时间戳所在行内某属性值与原本值相同时,时间戳不会发生改变。

时间戳一定是自动改变的吗?

不一定,只有当时间戳列属性为:“CURRENT_TIMESTAMP”

与“DEFAULT_GENERATED on update CURRENT_TIMESTAMP”

enum与set

枚举与集合

enum:单选,从预定义列表中选择一个值;

set:多选,从预定义列表中选择零个或多个值;

create table t9_es(gender enum('女', '男', '保密'), hobby set('乒乓球','代码','电脑'));

在set列中怎么插入多个值呢?

位于一个单引号引用内,仅使用,隔开。(不可有空格)

select

插入时的底层

在MySQL中放弃了0作为索引下标第一个的方法,而是看作“真”与“假”的评判。因此以“1”开启头部索引。

实际上enum的选项就是从1开始第一位是1,第二位是2。

set的选项依赖的是“位图结构”位图为1即对应选项激活。

enum

set

set从二进制比特位是“反过来”看的

举例

使用 2, 3分别作enum与set插入




感谢支持,长期连载
欢迎关注

返回列表