【MySQL】数据类型_数据库中借阅天数用什么数据类型表示
文章目录
- MySQL 数据类型表
-
- 1. 数值类型
-
- tinyint类型
- BIT类型
- float类型和decimal类型
- 2. 日期和时间类型
- 3. 字符串类型
-
- char和varchar类型
- 3. 枚举和集合类型
-
- enum和set
MySQL 数据类型表
1. 数值类型
TINYINT
-128
到 127
(无符号时 0
到 255
)SMALLINT
-32,768
到 32,767
(无符号时 0
到 65,535
)MEDIUMINT
-8,388,608
到 8,388,607
(无符号时 0
到 16,777,215
)INT
/ INTEGER
-2,147,483,648
到 2,147,483,647
(无符号时 0
到 4,294,967,295
)BIGINT
-9,223,372,036,854,775,808
到 9,223,372,036,854,775,807
(无符号时 0
到 18,446,744,073,709,551,615
)DECIMAL(M, D)
/ NUMERIC(M, D)
M
是总位数,D
是小数位数FLOAT
7
位DOUBLE
/ REAL
16
位数值类型中我们着重讲解tinyint类型和int类型还有float类型和decimal类型
tinyint类型
tinyint类型和C++中的char的范围是一样的,当我们需要一个小的数值类型时,我们可以选择tinyint。
我们创建一个只有tinyint的表,然后向其插入数据:
验证tinyint类型的范围:
在创建表的时候我们可以在tinyint类型后面加上unsigned,使其变成无符号类型:
无符号类型的数据返回时由以前的-128到127变成了0到255
BIT类型
基本语法:
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
我们创建一张表,然后测试BIT类型的范围,可以看见,当超过BIT类型的最大范围的时候,操作是不被允许的。
通常我们查询的时候,前面都带有0X样式的十六进制:
查看十进制样式:
float类型和decimal类型
float类型:
基本语法:
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
我们创建一张表:
注意:中括号中的第一个数字表示最高有多少位数字,包含小数点后的数字,第二个数字表示小数点后一共有多少位数字
我们这里创建的是最多4个数,最多显示两位小数:
上面这个是最坏的情况,当我们插入非法的数据的时候也会被阻止:
不管是float还是decimal,都是有四舍五入的性质的,假如我们只要求保留2位小数,我们加上第三位小数,这里第三位小数会被四舍五入,如果四舍五入之后的数字是合法的那么会被插入到表中,如果不合法则会报错
decimal
float类型和decimal类型都是小数类,有什么区别呢,有个很大的区别就是精度问题,当我们需要的精度很大时最好还是选择decimal,这里我们做一个测试,测试一下decimal和float的精度:
我们创建一张同时有float类型和decimal类型的表
向两张表中插入相同的数据,然后比较精度:
可以看到decimal完全符合要求。
2. 日期和时间类型
DATE
YYYY-MM-DD
,范围 1000-01-01
到 9999-12-31
DATETIME
YYYY-MM-DD HH:MM:SS
TIMESTAMP
YYYY-MM-DD HH:MM:SS
,自动更新,范围 1970-01-01
到 2038-01-19
TIME
HH:MM:SS
,范围 -838:59:59
到 838:59:59
YEAR
1901
到 2155
)date :日期 \'yyyy-mm-dd\' ,占用三字节datetime 时间日期格式 \'yyyy-mm-dd HH:ii:ss\' 表示范围从 1000 到 9999 ,占用八字节timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节
日期类型没有什么好说的,只是表现形式不同,timestamp可以用来获取当前时间。
我们创建一张三个类型的表:
插入数据:
可以看见,很简单的三个类型。
3. 字符串类型
CHAR(M)
M
0
-255
)VARCHAR(M)
0
-65535
,取决于 row format
)TEXT
65535
字节TINYTEXT
255
字节MEDIUMTEXT
16,777,215
字节LONGTEXT
4,294,967,295
字节BLOB
TINYBLOB
255
字节MEDIUMBLOB
16,777,215
字节LONGBLOB
4,294,967,295
字节char和varchar类型
char类型:
基本语法:
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
注意:char类型括号中代表的是字符串长度,虽然中文汉字占3个字节,但是如果我们定义的char(2)还是可以插入两个汉字,这里的字符是指符号,而不是像C++中的一个字符占几个字节的那种。
varchar类型:
基本语法:
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
varchar和char的区别就是char是固定大小的,而varchar是假如我们定义的是varchar(32),我们用多少varchar只开辟多少,而char是原本就是多少,不管我们用多少,这个char都是那么大
但是varchar65535中有3个字节是用来管理的。
3. 枚举和集合类型
ENUM(\'value1\', \'value2\', ...)
SET(\'value1\', \'value2\', ...)
enum和set
enum只支持单选1,而set支持多选多
我们创建一张表对比一下这两个类型:
插入数据:
set插入多个数据:
查找数据:
我们已set为基准查找:
可以看见mick被排除在外了,因为mick有多个爱好,所以我们应该用一个函数:
假如我们需要筛选两个标准: