数据库常见数据类型

一.数值型

1.整型

类型名 范围 存储字节大小
bigint -263 ~ 263-1 8
int -231 ~ 231-1 4
mediumint -8388608~8388607 3
smallint -215 ~ 215-1 2
tinyint 0~255 1

ps:无符号(unsigned)的范围是:0~(正数+负数的绝对值)

特点:
① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字。(有unsigned时,插入负数会报错)
② 如果插入的数值超出了整型的范围(不是长度,是上表中的范围!!),会报out of range异常,并且插入临界值。
③ 如果不设置长度,会有默认的长度;长度代表了显示的最大宽度,超出长度会报错;如果在后面添加zerofill,那么会在长度不够指定长度时,用0进行左填充。(ps:有zerofill的时候,不能插入负数)

DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
	t1 INT(7) ZEROFILL, #7就是设定的长度
	t2 INT(7) UNSIGNED

);

2.小数

分类:
    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,则会根据插入的数值的精度来决定精度

定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用

DROP TABLE IF EXISTS tab_float;
CREATE TABLE tab_float(
f1 FLOAT,
f2 FLOAT(5,2),
f3 DECIMAL,
f4 DECIMAL(5,2)
);
INSERT INTO tab_float VALUES (100.237,100.237,100.237,100.237);
SELECT * FROM tab_float;

在这里插入图片描述
f1:float并且没有设置M,D,所以输入多少,表中就是多少
f2:float,M=3,D=2。则整数部分最多3位(即最大百位),小数部分2位
f3:decimal ,并且没有设置M,D。则M默认为10,D默认为0
f4:decimal,M=5,D=2.则整数部分最多3位,小数部分2位。
(个人感觉,设置了MD后,float和decimal好像没有什么区别)

二.字符型

1.较短的文本

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

2.较长的文本

text,blob

3.其他

binary和varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合

enum:

CREATE TABLE tab_char(
	c1 ENUM('a','b','c')); #则c1这一列只能保存‘a’或‘b’或‘c’(可以有重复)

set:

CREATE TABLE tab_set(
	s1 SET('a','b','c','d')
);#每行插入的字符只能是a\b\c\d的组合(用逗号隔开),插入表格时,重复的只记一次,并且按set中的顺序排列
INSERT INTO tab_set VALUES('a');
INSERT INTO tab_set VALUES('A,B');
INSERT INTO tab_set VALUES('a,c,d');
INSERT INTO tab_set VALUES('D,C,D');

在这里插入图片描述

三.日期型

分类:
date只保存日期
time 只保存时间
year只保存年

datetime保存日期+时间
timestamp保存日期+时间

名称 字节 范围 是否受时区影响
datetime 8 1000-9999 不受
timestamp 4 1970-2038
发布了43 篇原创文章 · 获赞 1 · 访问量 738

猜你喜欢

转载自blog.csdn.net/weixin_41391619/article/details/104983750