博客
关于我
Mysql 整形列的字节与存储范围
阅读量:792 次
发布时间:2023-02-10

本文共 1592 字,大约阅读时间需要 5 分钟。

数据库中整型列的存储范围及相关属性

在数据库设计中,选择合适的数据类型对于存储数据并确保数据的完整性至关重要。本文将详细探讨MySQL中常见的整型数据类型及其存储范围、属性配置方法,以及如何为列设置默认值。

1. 计算方法

在计算机科学中,了解数据类型的内部存储方式对于编写高效的程序和优化数据库性能至关重要。特别是在使用有符号和无符号数时,理解其存储逻辑能够帮助我们更好地设计数据库。

无符号数(Unsigned)

无符号数使用所有位来表示数值,最大可存储值为$2^n - 1$。例如,8位无符号数的范围是0到255,因为:$$2^8 - 1 = 255$$

有符号数(Signed)

有符号数使用一个位来表示符号,其余位用于表示数值。最大负值为$-2^{n-1}$,最大正值为$2^{n-1} - 1$。例如,8位有符号数的范围是-128到127,因为:$$-2^7 = -128 \quad \text{,} \quad 2^7 - 1 = 127$$

2的N次方推导公式

对于计算机科学家而言,了解如何快速推导$2^n$的和是非常有用的。以下公式可以帮助我们快速计算:

$$s = 2^0 + 2^1 + 2^2 + \dots + 2^n$$

通过数学推导,我们可以得到:$$2s = 2^1 + 2^2 + \dots + 2^{n+1}$$$$2s - s = 2^{n+1} - 2^0$$$$s = 2^{n+1} - 1$$

需要注意的是,在编程中,$^$符号通常表示位运算中的异或操作,而不是数学中的指数运算。

2. MySQL 数据类型与存储范围

在MySQL中,整型数据类型的存储范围如下:

数据类型 字节大小 位数 无符号范围 有符号范围 ,默认符号
Tinyint 1 8 0到255 -128到127 有符号
Smallint 2 16 0到65535 -32768到32767 无符号
Mediumint 3 24 0到16777215 -8388608到8388607 无符号
Int 4 32 0到4294967295 -2147483648到2147483647 无符号
Bigint 8 64 0到18446744073709551615 -9223372036854775808到9223372036854775807 无符号

3. 整型列的可选属性

在MySQL中,整型列有一些可选属性可以帮助我们更好地设计数据库:

1. 无符号类型(Unsigned)

无符号类型(UNSIGNED)是一个非负数类型。它的优点是存储范围更大,但缺点是无法存储负数。可以通过如下命令创建无符号列:

alter table msg add `学号` tinyint(5) unsigned;

2. 宽度(Width)

宽度(WIDTH)指定了列的显示长度。在zerofill时,宽度决定了数字的显示格式。例如:

alter table msg add `学号` tinyint(5) zerofill;

这将确保数值总是用5位显示,例如00001。

3. 零填充(Zerofill)

零填充(ZEROFILED)在不够位数时,使用0填充。默认情况下,整型列是无符号的正数。例如:

alter table msg add `编号` tinyint not null default 0;

这将创建一个默认值为0的非空列。

4. 给列加默认值

默认值(DEFAULT)可以通过ALTER TABLE命令设置。例如:

alter table msg add `编号` tinyint not null default 0;

这一命令将在插入数据时,编号字段默认为0。

通过合理选择数据类型、设置适当的属性,并为列设置默认值,我们可以设计出高效且易于管理的数据库。

转载地址:http://vybfk.baihongyu.com/

你可能感兴趣的文章
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql -存储过程
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mysql 1045解决方法
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>