《MySQL数据库基础》4. 数据类型

发布时间:2026/5/19 23:43:05

《MySQL数据库基础》4. 数据类型 Yupureki:个人主页✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》Yupureki的简介:目录1. 数据类型分类2. 数值类型2.1 int类型2.2 bit类型2.3 浮点数类型2.3.1 float类型2.3.2 decimal类型3. 字符串类型3.1 char类型3.2 varchar类型4. 日期和时间类型5. enum和set1. 数据类型分类MySQL中有许多的数据类型这些类型有很多我们的老朋友如整型浮点数字符串等2. 数值类型用于存储整数、小数和浮点数支持算术运算。类型字节数范围有符号作用/特点TINYINT1-128 ~ 127极小整数如年龄、状态码SMALLINT2-32768 ~ 32767小整数如人口数量、小范围计数器MEDIUMINT3-8388608 ~ 8388607中等整数如中等规模的IDINT4-2147483648 ~ 2147483647标准整数最常用如主键、常规IDBIGINT8-2^63 ~ 2^63-1大整数如超大表的主键、天文数字FLOAT4约 ±3.4028E38单精度浮点数适合科学计算有精度误差DOUBLE8约 ±1.7977E308双精度浮点数精度更高也存在误差DECIMAL变长取决于精度和小数位数定点数精确存储适合金额、财务数据BIT1~81 ~ 64 位二进制位字段类型存储二进制标志2.1 int类型类型字节数范围有符号作用/特点TINYINT1-128 ~ 127极小整数如年龄、状态码SMALLINT2-32768 ~ 32767小整数如人口数量、小范围计数器MEDIUMINT3-8388608 ~ 8388607中等整数如中等规模的IDINT4-2147483648 ~ 2147483647标准整数最常用如主键、常规IDBIGINT8-2^63 ~ 2^63-1大整数如超大表的主键、天文数字tinyint测试范围边界:说明在MySQL中整型可以指定是有符号的和无符号的默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的无符号案例:2.2 bit类型类型字节数范围无符号作用/特点BIT1~81 ~ 64 位二进制位字段类型存储二进制标志语法:bit[(M)] :位字段类型。M表示有几个比特位范围从1到64。如果M被忽略默认为1。2.3 浮点数类型类型字节数范围有符号作用/特点FLOAT4约 ±3.4028E38单精度浮点数适合科学计算有精度误差DOUBLE8约 ±1.7977E308双精度浮点数精度更高也存在误差DECIMAL变长取决于精度和小数位数定点数精确存储适合金额、财务数据2.3.1 float类型语法:float[(m, d)] [unsigned] : m指定显示长度d指定小数位数占用空间4个字节如:float(4,2表示的范围是-99.9999.99MySQL在保存值时会进行四舍五入。边界:四舍五入:99.991-99.9999.995-100.00因此会报错无符号:如果定义的是float(4,2) unsigned这时因为把它指定为无符号的数范围是0 ~ 99.992.3.2 decimal类型语法:decimal(m, d) [unsigned] :定点数m指定长度d表示小数点的位数decimal(5,2表示的范围是-999.99999.99decimal(5,2)unsigned表示的范围0999.99decimal和float很像但是有区别float和decimal表示的精度不一样说明float表示的精度大约是7位。decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略默认为0.如果m被省略默认是10。因此如果希望小数的精度高推荐使用decimal。3. 字符串类型类型最大长度作用/特点CHAR255 字符定长字符串存储时右补空格适合长度固定的数据如性别VARCHAR65535 字节受字符集影响变长字符串节省空间适合长度可变的数据如姓名、地址BINARY255 字节定长二进制数据类似 CHAR但存储字节适合加密散列值VARBINARY65535 字节变长二进制数据适合图片、文件的原始字节TINYBLOB255 字节极小二进制大对象适合小图片、小文件BLOB65535 字节64KB二进制大对象适合中等大小文件MEDIUMBLOB16777215 字节16MB中等二进制对象LONGBLOB4GB极大二进制对象TINYTEXT255 字符极短文本TEXT65535 字符长文本适合文章内容、评论MEDIUMTEXT16777215 字符中等长度文本LONGTEXT4GB 字符极长文本适合存储大段文字这么多类型眼睛都花了。没事其实常用的就两种:类型最大长度作用/特点CHAR255 字符定长字符串存储时右补空格适合长度固定的数据如性别VARCHAR65535 字节受字符集影响变长字符串节省空间适合长度可变的数据如姓名、地址3.1 char类型语法:char(L):固定长度字符串L是可以存储的长度单位为字符最大长度值可以为255说明char(2表示可以存放两个字符可以是字母或汉字。但是char大小最大只能是2553.2 varchar类型语法:varchar(L):可变长度字符串L表示字符长度最大长度65535个字节说明char(6)表示内存中开辟了6个字节的大小而varchar(6)只表明最大的字节数是6并不直接开6个字节的大小而是你用多少开多少。比如你只需要3个字节那么他就只会开3个字节这样节省了空间关于varchar(len),len到底是多大这个len值和表的编码密切相关·varchar长度可以指定为0到65535之间的值但是有1-3个字节用于记录数据大小所以说有效字节数是65532。·当我门的表的编码是utf8时varchar(n的参数n最大值是65532/321844[因为utf中一个字符占用3个字节]如果编码是gbkvarchar(n)的参数n最大是65532/232766因为gbk中一个字符占用2字节。4. 日期和时间类型用于存储日期、时间或时间戳支持日期函数运算。类型格式范围作用/特点DATEYYYY-MM-DD1000-01-01 ~ 9999-12-31存储日期如生日、入职日期TIMEHH:MM:SS-838:59:59 ~ 838:59:59存储时间或时间间隔如营业时间DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59存储日期和时间不受时区影响TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC时间戳受时区影响自动更新可配置YEARYYYY1901 ~ 2155存储年份如车辆生产年份其中时间戳timestamp可自动配置设置其default默认值等于当前时间即可5. enum和set类型最大长度作用/特点ENUM65535 个成员枚举类型从预定义列表中选择一个值节省空间SET64 个成员集合类型可从预定义列表中选择多个值用逗号分隔语法enum枚举“单选”类型enum(选项1,选项2,选项3...);该设定只是提供了若干个选项的值最终一个单元格中实际只存储了其中一个值而且出于效率考虑这些值实际存储的是”数字”因为这些选项的每个选项值依次对应如下数字1,2,3..最多65535个当我们添加枚举值时也可以添加对应的数字编号。set:集合“多选”类型部set(选项值1,选项值2,选项值3,..);该设定只是提供了若干个选项的值最终一个单元格中设计可存储了其中任意多个值而且出于效率考虑这些值实际存储的是“数字”因为这些选项的每个选项值依次对应如下数字1,2,4,8,16,32..set中可以选一个或多个而enum只能选一个

相关新闻