一.数据类型概念和分类
1.概念
2.分类
数值型:
整型
小数:
定点数
浮点数
字符型:
段文本
长文本
日期型:
二.数值型
1.整形
-
取值的算法,我们用TINYINT 来举例说名,首先我们知道 1个字节 = 8位, 每个位里面可以存储1或0两种状态,一共有8个位,也就2的8次方就是256, 所以我们无符号最大的取值范围就是255, 我们把256个状态分成两份,一份存正数,一份存负数,就是我们有符合的 取值范围 -128 到 127,这里的0 是属于正数,所以正数是127。
我们在用SMALLINT来计算一下,首先我们知道SMALLINT 占2个字节 = 16位, 每个位里面可以存储1或0两种状态,一共有16个位,也就2的16次方就是65536, 所以我们无符号最大的取值范围就是65535, 我们把65535个状态分成两份,一份存正数,一份存负数,就是我们有符合的 取值范围 -8388608 到 8388607,这里的0 是属于正数,所以正数是8388607。
-
size 这里的size 并不表示的存储数据的长度,而是显示的长度在声明的时候 搭配 ZEROFILL关键字使用,表示不够长度的用0填充:
CREATE TABLE stu(
t1 INT(3) ZEROFILL -- 创建一个int类型的一个字段,数据显示长度为3的,通过 ZEROFILL 关键字 长度不满足的用0填充。
);
INSERT INTO stu VALUES(
57
);
int(3)显示结果为057
| 数据类型 |
占用字节 |
size默认长度 |
默认符号 |
取值范围 |
| TINYINT(size) |
1 |
4 |
默认是有符号,在声明类型时,通过关键字UNSIGNED更改为无符号的 |
带符号-128到127 ,无符号0到255。 |
| SMALLINT(size) |
2 |
6 |
默认是有符号,在声明类型时,通过关键字UNSIGNED更改为无符号的 |
带符号范围-32768到32767,无符号0到65535。 |
| MEDIUMINT(size) |
3 |
9 |
默认是有符号,在声明类型时,通过关键字UNSIGNED更改为无符号的 |
带符号范围-8388608到8388607,无符号的范围是0到16777215。 |
| INT(size) |
4 |
11 |
默认是有符号,在声明类型时,通过关键字UNSIGNED更改为无符号的 |
带符号范围-2147483648到2147483647,无符号的范围是0到4294967295。 |
| BIGINT(size) |
8 |
20 |
默认是有符号,在声明类型时,通过关键字UNSIGNED更改为无符号的 |
带符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。 |
2.小数
- 在 m 参数中规定显示最大位数。在 d 参数中规定小数点后保留几位。
- 如果超出范围 去临界值
- DECIMAL 默认的 m,d值为10,0, 而 FLOAT,DOUBLE 默认没有限制,根据插入数据的 m ,d 来设置FLOAT,DOUBLE的精度。
| 数据类型 |
占用字节 |
描述 |
| FLOAT(m,d) |
4 |
单精度浮点型 |
| DOUBLE(m,d) |
8 |
双精度浮点型 |
| DECIMAL(m,d) |
3 |
|
设一个字段定义为FLOAT(5,2) ,如果插入一个数123.33333,实际数据库里存的是123.33,如果插入一个数123.33677,实际数据库里存的是123.34。
3. 字符串
- 固定长度:
创建字段的时候就已经固定好长度。
- 可变长度:
根据数据的长度去创建储存空间。
- M 是存储的字符长度
| 数据类型 |
描述 |
| CHAR(M) |
固定长度,最多255个字符 |
| VARCHAR(M) |
固定长度,最多65535个字符 |
4. 日期类型
- TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
| 数据类型 |
格式 |
取值范围 |
| datetime |
日期时间 '2008-12-2 22:06:44' |
1000-01-01 00:00:00 -- 9999-12-31 23:59:59 |
| timestamp |
自动存储记录修改时间 |
19700101080001 -- 2038 年的某个时刻 |
| date |
日期型 '2008-12-2' |
1000-01-01 -- 9999-12-31 |
| time |
时间型 '12:25:36' |
-838:59:59 -- 838:59:59 |
| YEAR |
年日期格式:YYYY |
1901 -- 2155 |