网站首页 > 教程分享 正文
在创建表时,我们需要根据要求来进行创建,所以我们要选取合适的数据类型。
MySQL中数据类型主要有三类:数值类型,字符串类型,日期时间类型。
今天,我们先来了解数值类型。
类型 | 大小 | 范围(符号) | 范围(无符号) | 用途 |
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 |
DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
了解计算机基础知识的我们知道,在计算机中 1Byte=8bit,每bit可以存放一个0或者一个1。
数值类型又分为整型和浮点型。
现在我们以tinyint为例,了解整形为什么如表中所示.
TINYINT大小为1Byte,等于8bit。我们可以将其想象成并列排放的8个盒子,每个盒子表示1bit。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
1Byte
我们首先来看无符号时TINYINT的范围:
编号1~编号8每个盒子可以放入0或者1两种情况,那么总共可以组成:
2*2*2*2*2*2*2*2=256,也就是说这8个盒子一共可以组成256种不同的排列。
编号1~编号8全部放0时取得最小值0000 0000(2),
编号1~编号8全部放1时取得最大值1111 1111(2),
将其转化成10进制数,取值范围即为0~255。
有符号时TINYINT的范围:
对于计算机来说,有符号数的“正”,“负”,机器无法识别,但是由于正负是两种截然不同的状态,因此计算机中规定:用“0”表示“正”,用“1”表示“负”,并且将其放在有效数字的前面,组成了有符号数。
将符号“数字化”的数称为机器数,而把带有“+”,“-”符号的称为真值,例如:
符号数(整数)+110 0000 在机器中表示为 0 1100000
那么我们此时知道TINYINT类型的数值在计算机中表示为
符号位 | 数值位 |
第一位为符号位,后七位是数值位。
原码
原码是机器数中最简单的一种表示形式,符号位为0表示正数,符号位为1表示负数,数值为正值的绝对值。上面所举的 +1100000 机器数表示的0 1100000 即为原码。
同样的,真值为 -1000000 的 原码为1 1000000
需要注意的是,原码中的0根据符号位的不同分为“+0”和“-0”,并且两者并不相等。
2*2*2*2*2*2*2-1=128-1=127
TINYINT原码的范围是-127~127
原码的优点是:易于同真值进行转换。
原码的缺点是:两个操作数符号不同时使用原码进行计算加法运算时,需要判断数的大小,最后结果,根据大的那个数判断。非常麻烦。
补码
为了克服原码的缺点,人们提出了补码。
补码的作用是找出与负数等价的正数来代替负数,这样在计算时就可以将减法替换加法。
在介绍补码之前我们先来了解一下模的概念
个人认为模就是用来表示最大容量的,例如钟表中最多有12(1~12)个小时,模为12,一周有7(1~7)天,模为7。
例子:时钟指示6点,欲使它指示3点,可以按顺时钟方向,将分针转9圈,又可按逆时针方向转3圈,结果是一致的。
6-3=3
6+9=15
但是钟表上面最多是12点,没有15点,多余的从12点从新开始1点,2点,3点。因此在钟表中“-3”与“+9”是等价的,我们也说对于模为12来说“-3”的补数是“+9”
我们也就找到了与“-3”等价的正数“+9”来代替负数。
注意:对于正数而言,补数是其本身。
我们可以总结如下:
- 一个负数可以用它的正补数替代,正补数可以用模加负数本身求得。
- 一个正数和一个负数互为补数时,它们的绝对值为模
- 正数的补数为它本身
将模与补数的概念用到计算机当中,便出现了补码这种机器数。
以TINYINT为例
原码表示范围为
-127~-1 -0 +0 +1~+127
TINYINT的容量为127*2+2=256,所以他的模为256。
原码的取值范围 1111 1111 ~0111 1111
1111 1111(-127)的补码为1000 00000(2)-111 1111(2)=10000001
1111 1110(-126)的补码为1000 00000(2)-111 1110(2)=10000010
1111 1101(-125)的补码为1000 00000(2)-111 1101(2)=10000011
1111 1100(-124)的补码为1000 00000(2)-111 1100(2)=10000100
... ...
1000 0001(-1)的补码为1000 00000(2)-000 0001(2)=11111111
1000 0000(-0)的补码为1000 00000(2)-000 0000(2)=1000 00000
正数的补码为其本身。
我们发现将所有负数原码转化成补码时负数补码的范围为1000 0001~1111 1111
我们发现“-0”的补码1000 00000要占9个格子,放入8个格子,只能舍去最高位为0000 0000
与“+0”的补码0000 0000相同
补码中还有个数1000 0000没有使用,因此人们规定-128的补码为1000 0000
补码的范围为 1000 0000~1111 1111
为-128~127
计算机中负数用补码表示,因此TINYINT有符号数的表示范围是-128~127。
猜你喜欢
- 2024-10-24 《MySQL 入门教程》第 17 篇 MySQL 变量
- 2024-10-24 MySQL面试题-数据类型(mysql数据库面经)
- 2024-10-24 MySql学习笔记21——数据类型(小数)
- 2024-10-24 MySQL字段类型最全解析(mysql的字段名指的是什么)
- 2024-10-24 Mysql的数据类型和JPA的实体类(mysql jpa)
- 2024-10-24 一文搞懂MySQL的三大Log(mysql 3)
- 2024-10-24 MySQL有哪些数据库类型?不要错过喽
- 2024-10-24 MySQL分区表简介(mysql 分区语句)
- 2024-10-24 MySQL 数据类型的艺术-爱可生(mysql数据类型包括哪些)
- 2024-10-24 MySQL进阶实战1,数据类型与三范式
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)