MySQL:DDL之常见数据类型(三)
2021/8/19 19:08:04
本文主要是介绍MySQL:DDL之常见数据类型(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
常见的数据类型
原则:所选择的类型越简单越好,能保存数值的类型越小越好(节省空间)
数值型
- 整型
- 小数
- 定点数
- 浮点数
- 字符型
- 较短的文本:char、varchar
- 较长的文本:text、blob(较长的二进制数据)
- 日期型
整型
- 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned
- 如果插入的数值超出了整型的返回,会报异常,并且插入临界值
- 如果不设置长度,会有默认的长度
- 范围是有整数类型决定的,长度只是会填充到我们指定的长度(若想显示需加上ZEROFILL)
整数类型 | 字节 | 范围 |
---|---|---|
Tinyint | 1 | 有符号:-128~127 无符号:0~255 |
Smallint | 2 | 有符号:-32768~32767 无符号:0~65535 |
Mediumint | 3 | 有符号:-8388608~8388607 无符号:0~1677215 |
Int、Integer | 4 | 有符号:-2147483648~2147483647 无符号:0~4292967295 |
Bigint | 8 | 有符号:-9223372086854775808~9223372086854775807 无符号:0~9223372036854775807*2+1 |
-
如何设置无符号和有符号
CREATE TABLE tab_int( t1 INT, t2 INT UNSIGNED )
小数
- 浮点型
- float(N,D)
- double(N,D)
- 定点型
- dec(M,D)
- decimal(M,D)
浮点数类型 | 字节 | 范围 |
---|---|---|
float | 4 | ±1.75494351E-38±3402823466E+38 |
double | 8 | ±2.2250738585072014E-308~±1.7976931348623157E+308 |
定点数类型 | 字节 | 范围 |
---|---|---|
DEC(M,D) DECIMAL(M,D) |
M+2 | 最大取值范围与double相同,给定decimal的有效取值范围由M和D决定 |
- 特点:
- M和D:M是整数部位加小数部位的和,D小数点后的位数(如果超过,则为临界值)
- M和D省略
- 如果是decimal,则M默认为10,D默认为0;
- 如果是float和double,则会根据插入的数值的精度来决定精度
- 定点型的精度准确度较高,如果要求插入数值的精度较高,如货币运算等则使用定点型
字符型
- 较短的文本:
- char
- varchar
- 较长的文本
- text
- blob(较大的二进制)
- 其他
- binary
- varbinary
- enum
- set
字符串类型 | 最大字符数 | 描述及存储需求 | 特点 | 空间的耗费 | 效率 |
---|---|---|---|---|---|
char(M) | M(可以省略,默认为1) | M为0~255之间的整数 | 固定长度的字符 | 比较耗费 | 相比较高 |
varchar(M) | M(不可以省略) | M为0~65535之间的整数 | 可变长度的字符 | 比较节省 | 相比较低 |
-
binary和varbinary类型:类似于char和varchar
- 不同的是他们包含二进制字符串而不包含非二进制字符串
-
枚举:要求插入的值必须属于列表中指定的值之一
- 如果列表成员为1~255,则需要1个字节存储
- 如果列表成员为255~65535,则需要两个字节存储
- 最多存储65535个成员。
-
Set类型:和Enum类型类似
- 里面可以保存0~64个成员
- 和Enum类型最大的区别是:SET类型一次可以选取多个成员,而Enum只能选一个根据成员个数不同,存储所占的字节也不同
- 1~8个成员:字节数1
- 9~16:2
- 17~24:3
- 25~32:4
- 33~64:8
CREATE TABLE tab_set( s1 SET('a','b','c','d') ); INSERT INTO tab_set VALUES('a'); INSERT INTO tab_set VALUES('a,b'); INSERT INTO tab_set VALUES('a,c,d');
日期类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 19700101080001 | 2028年的某个时刻 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |
这篇关于MySQL:DDL之常见数据类型(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南