MySQL的数据类型

#1.数值类型
(1)整型:bit(M) M范围1~64tinyint[1字节]smallint[2字节]mediumint[3字节]int[4字节]bigint[8字节]
#bit类型,如果一个值只有0,1可以考虑使用bit(1)节约空间
CREATE TABLE t0
(
    id bit(8)
);
INSERT INTO t0 VALUES (255);
select * from t0 where id = 255;

#tinyint有符号范围-128~127 无符号范围0~255
CREATE TABLE t1
(
    id TINYINT
);
INSERT INTO t1 VALUES (-128);
INSERT INTO t1 VALUES (127);

CREATE TABLE t2
(
    id TINYINT UNSIGNED
);
INSERT INTO t2 VALUES (0);
INSERT INTO t2 VALUES (255);

(2)小数类型:float[单精度4字节]double[双精度8字节]decimal[M,D]
CREATE TABLE t3
(
    num1 FLOAT,
    num2 DOUBLE,
    num3 DECIMAL(11,9)
);
INSERT INTO t3 VALUES (88.123456789,88.123456789,88.123456789);
decimal: M(1~65) must be >= D(0~30)
DECIMAL(6,2),表示最多可以存储6位数字,小数位数为2位,因此范围为[-9999.99~9999.99]
column_name DECIMAL(M); 等价于 column_name DECIMAL(M,0);
column_name DECIMAL; 等价于 column_name DECIMAL(10);

#2.字符串/文本类型/二进制文本
char(M):M指的是字符数,M可不指定,默认为1,M范围是[0,255]char是定长的,即使实际占用空间比分配的小,也会占用分配的空间大小
varchar(M):M指的是字符数,varchar可存储的长度范围为0-65535字节[utf8编码最大能存21844个汉字,gbk最对能存32766个汉字]1-3个字节用于记录大小,(65535-3)/3 = 21844 (65535-3)/2 = 32766
varchar是变长的,可以设置最大长度,按实际占用空间分配大小(varchar本身还需1-3字节来记录存放内容长度)
MySQL8.0.26默认字符集utf8mb3(只支持1-3个字节),utf8mb4(可支持4个字节,兼容utf8mb3,能支持更多的字符集,可以存储emoji表情)

charvarchartext选择:查询速度:char > varchar > text
数据是定长的,推荐使用char,md5密码、邮编、手机号、身份证号等
数据不定长,使用varchartext,如留言、文章,存放文本时,也可以使用Textlongtext
varchar可以设置最大长度,text不设置长度,当不知道属性的最大长度时,适合用text

BLOB 0-2^16-1 bytes	二进制形式的长文本数据
LONGBLOB 0-2^32-1 bytes	二进制形式的极大文本数据

#3.日期、时间类型 YEAR、DATE、TIME、DATETIME、TIMESTAMP
CREATE TABLE t9
(
    id         INT PRIMARY KEY AUTO_INCREMENT,
    birthday   DATE,
    job_time   DATETIME,
    login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO t9(birthday, job_time) VALUES ('2020-11-11','2020-11-11 11:11:11');
INSERT INTO t9(birthday, job_time) VALUES ('2021-11-11','2021-11-11 11:11:11');
SELECT * FROM t9;
#更新数据会更新login_time字段
UPDATE t9 SET birthday='2022-11-11' WHERE id = 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值