MySQL学习笔记8—数据类型

DDL语言—数据定义语言

仅作为学习笔记,学习资源来源于B站视频:BV1xW411u7ax

数据类型

一、数值型

1、整型
分类:

类型 tinyint smallint mediumint int/integer bigint
字节 1 2 3 4 8

特点:

  • 如果不设置无符号还是有符号(负数),默认是有符号,如果想设置无符号,需要添加unsigned关键字
  • 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
  • 如果不设置长度,会有默认的长度;长度代表了显示的最大宽度,如果设置长度并规定用零填充,则搭配ZEROFILL
DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
	x1 INT(7) ZEROFILL,
	x2 INT(7) UNSIGNED
);
DESC tab_int;

2、浮点型
分类:

  • 浮点型: float(M,D)、double(M,D)
  • 定点型: decimal(M,D)

特点:

  • M:整数部位+小数部位
  • D:小数部位 如果超过范围,则插入临界值
  • M和D都可以省略。如果是decimal,则M默认为10,D默认为0;如果是float和double,则会根据插入的数值的精度来决定精度
  • 定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用

二、字符型

分类:
(1)较短的文本

  • char
  • varchar
  • binary和varbinary用于保存较短的二进制
  • enum用于保存枚举,不区分大小写
  • set用于保存集合

(2)较长的文本

  • text
  • blob(较大的二进制,图片)

char与varchar比较:

写法 M的意思 特点 空间的耗费 效率
char(M) 最大的字符数,可以省略,默认为1 固定长度的字符 比较耗费
varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省

enum与set例子:

CREATE TABLE tab_char(
	c1 ENUM('a','b','c')
);
# 只能添加'a'、'b'、'c'或其大写,其余报错
CREATE TABLE tab_set(
	s1 SET('a','b','c','d')
);
# 只能添加'a','b','c','d'或其大写的子集
INSERT INTO tab_set VALUES('a,c,d');

三、日期型

分类:

  • date 只保存日期
  • time 只保存时间
  • year 只保存年
  • datetime 保存日期+时间
  • timestamp 保存日期+时间

datetime与timestamp比较:

扫描二维码关注公众号,回复: 12254853 查看本文章
字节 范围 时区等的影响
datetime 8 1000—9999 不受
timestamp 4 1970—2038
CREATE TABLE tab_date(
	t1 DATETIME,
	t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT * FROM tab_date;
# 查看当前时区
SHOW VARIABLES LIKE 'time_zone';
# 更改时区为东九区
SET time_zone='+9:00';
# timestamp会增加一小时,datetime不变

猜你喜欢

转载自blog.csdn.net/JakeSunJG/article/details/112432317
今日推荐