一、数值型
1.整型
| 整数类型 | 字节 | 范围 |
|---|---|---|
| Tinyint | 1 | 有符号:-128~127;无符号:0 ~255 |
| Smallint | 2 | 有符号:-32768~ 32767;无符号:0~1677215 |
| Mediumint | 3 | 有符号:-8388608~8388607;无符号:0 ~1677215 |
| Int、Interger | 4 | 非常大 |
| Bigint | 5 | 更加的大 |
特点:
①数值设定时,默认有符号
②如果插入的数值超出了整型的范围,会报out of range异常,一切插入临界值
③如果不设置长度,会有默认的长度
长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用。且使用了zerofill后该整型就为无符号型的
DROP TABLE IF EXISTS tab(
t1 INT,
t2 INT(7) UNSIGNED
t2 INT(7) ZEROFILL
)
2.小数
| 浮点数类型 | float | double |
|---|---|---|
| 字节数 | 4 | 8 |
| 定点数类型 | DEC / DECIMA |
|---|---|
| 字节数 | M+2 |
特点:
①M和D
M:整数部位+小数部位的总长度
D:小数部位的长度
②M和D都可以省略
如果是DECIMAL,则M默认为10,D默认为0
如果是FLOAT和DOUBLE,则会根据插入的数值的精度来决定精度
③定点型的精确度较高,如果要求插入数值的精度较高,如货币运算等则考虑使用
原则:所选择的类型越简单越好,能保存数值的类型越小越好
二、字符型
1.较短文本
char和varchar类型
说明:用来保存MySQl中较短的字符串
| 字符串类型 | 最大字符数 | 描述及存储需求 | 特点 | 空间耗费 | 效率 |
|---|---|---|---|---|---|
| char(M) | M | M为0~255之间的数 | 固定字符的长度 | 比较耗费 | 高 |
| varchar(M) | M | M为0~65536之间的数 | 可变字符的长度 | 比较节省 | 低 |
binaru和varbinary类型
说明:类似于char和varchar,不同的是他们包含二进制字符串二不包含非二进制字符串
enum类型
说明:又称为枚举类型,要求插入的值必须属于列表中指定的值之一
CREATE TABLE tab(
s1 ENUM('a','b','c')
)
INSERT INTO tab VALUES('a')
INSERT INTO tab VALUES('b')
INSERT INTO tab VALUES('c')
INSERT INTO tab VALUES('A')//会插入a
INSERT INTO tab VALUES('m')//会插入null,无值显示,但会有一行留出
set类型
说明:和enum类型相似,里面可以保存0~64给成员。和enum类型最大的区别是:set类型一次可以选取多个成员,而enum只能选一个
CREATE TABLE tab(
s1 ENUM('a','b','c','d')
)
INSERT INTO tab VALUES('a','b','c','d')
2.较长文本
text和blob类型
三、日期型
| 日期和时间类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| date | 4 | 1000-01-01 | 9999-12-31 |
| datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
| timestamp | 4 | 1970010108001 | 2038年的某个时刻 |
| time | 3 | -838:59:59 | 838:59:59 |
| year | 1 | 1901 | 2155 |
datetime和timestamp的区别
1.timestamp支持的时间范围较小
2.timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
3.timestamp的属性受Mysql版本和SQLMode的影响很大

本文介绍了SQL中的常见数据类型,包括数值型(整型、小数)、字符型(较短文本如char、varchar,较长文本如text、blob)以及日期型(datetime与timestamp的区别)。强调了数据类型的选用原则,如尽可能选择简单和节省空间的类型,并提供了各种类型的特性和应用场景。
22万+

被折叠的 条评论
为什么被折叠?



