欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库常见数据类型

程序员文章站 2022-06-03 10:10:35
...

一.数值型

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
相关标签: MySQL