00:00
好,那么接下来的话呢,咱们来讲这个叫浮点类型,诶浮点类型就是我们所谓的这个带小数点的这样的数据的存储,对吧?诶没问题啊,那这里边呢,在咱们MYSO当中啊,表述小表示这个小数点的这种数据啊,其实有两种类型,浮点类型呢和定点数类型啊一会呢,我们说这个定点数先来说这个浮点类型,那我们也可以把这个整数,就像咱们前面讲的这个看作是这个小数的一个特例,诶这个没问题,那从这个角度来讲的话呢,如果呢,你要不确定说呀,这个数设计的时候呢,要不要带这个小数呢,那你是不是就带上啊,因为你整数的话呢,实际上呢,是可以付给这种浮点类型的,那你也可以看成是一种隐式的转换。啊,这个应该能理解啊,比如说你设置一个字段是float的类型的,这时候我们把这个123能不能付给他呢,是可以的,没问题,它就后边给你加个点零零呗,对吧,那就可以了。好,所以说呢,我们这个浮点数和定点数这个使用的场景啊,它比我们这个整数呢要大一些,那这块我们先重点来说一下,这个叫浮点数啊,下一节呢,我们再讲这个定点数,那浮点数呢,在咱们这个MY当中啊,你看我这块呢,写了三个是吧?啊float double和这个real啊有同学说,诶老师你上面讲的时候呢,不就光讲了一个float跟double,也没讲这个real呢,是不是写错了呀,没写错,那你看这个real是什么情况,这个real的话呢,它默认的话呢,就是double。
01:18
默认就是double,那我们也可以去改,改谁呢?就改我们这个叫circle mode。这个circle mode就是它的一个模式了,改成叫real as float,那这样改完以后的话呢,如果你再声明这个real类型,它就认为你是一个float类型了,那是这个意思,那这个float circle mode呢,怎么改这个呢?咱们到下屏的时候呢,也还会去讲这个circle mode,比如设成这个宽松模式啊,严格模式啊等等,到时候我们就专门会去说这个测科目的,到时候大家知道怎么改了,就是一般情况下呢,咱们也不会去改啊,你知道这个事儿就行了解一下。好,那说白了就是我们仍然是不是只有两种类型啊,Float和double,那float呢,我们一般叫单精度啊,Double就是双精度嘛,Double本身不就是两个的意思嘛,对吧?OK,那像咱们说那个中国有一个品牌叫双星,不就double star对吧,就双星好,那么这个两个类型,它的字节数一个是四个,一个是八个,那基本上在其他编程语言当中也是如此的。
02:14
那接下来我们看一下它的一个存储数据的一个范围,这块大家一看可能有点眼运,这个大体做个了解就行,嗯,有符号的话呢,它是你看有这么一段,这呢是十的38次方,十的这个负38次方是吧?这是它对应的一个范围,这个范围的话呢,呃,这是个负数的,然后逗号零,然后呢,这呢是这个正数的一个范围,那下边是double的,那显然的话,那个double的你看存储范围呢,比它要大很多。嗯,能看出来是吧,没问题,行,那这里边呢,首先我们有两个问题啊,便于大家去理解这两个数据类型,第一个,所以这两种数据类型的区别是什么呢?区别非常简单,就是这个float占的次节数少,取数范围小,Double呢,次接数多,取出范围大,相对来说这个精度的话呢,也更高啊,这就是这个double的特点。那么第二点说为什么啊,大家如果看这个表的话,你会发现一个特点什么呀,有符号跟无号呢,我们在讲整形的时候说到过了,也应该能理解啊,就是上面整形能看到就是这个,呃,整个表数的这叫什么个数呢?是是一样的,那把这负数呢,都翻成正的了啊,相当于这块的范围要更广一些,但是从零开始的啊,这么长,那你这块呢,相当于是零,左边呢占一半,占这一半啊,右边的负数呢,占一半是这个特征,而我们这个浮点类型你看就不一样了,大家你要细节观察,你会发现所谓的无符号呢,只是把咱们这个有符号当中的这个负的呀给删了。
03:34
那无呢,你看就是零,剩下这个是不是就是我们这个,那下边也同样的道理,你把这个double里边这个负数的这个你给它删掉,剩下的这一段空间零,然后还有这个就是我们这个double的它的无符号的一个取值范围,哎,怎么会是这样子呢?啊,有同学可能发现这个问题了是吧?这个原因在于什么呢?就是我们这个MYSQL,它存储数据的一个格式啊,它包括叫符号尾数和解码,就是你识的多少次方,这叫解码了,呃,你有没有符号呢?这个MYSQ呢,它在存储的时候都会给你分配这样的一个位置去放这个符号,那你现在如果我要无符号了,那直不过这个位置呢,就不给你放值了,但是呢,你空间呢,还照样的是占用的,所以导致呢,就是我们所谓的无符号呢,那只是相当于我们这个有符号当中是不是正数的那一个部分呀。
04:19
哎,就成这样一个场景了啊,这样一个场景了啊,这块大家稍微注意一下这样的一个问题啊,注意这样的问题,所以呢,我们后边呢,才有了一个什么呀,就在这个MYQ8当中啊,其实建议大家呢,就不用刻意的去声明我们double也好,Float也好,是安散的了,那为啥呢,你声明以后呢,呃,其实没有说这个这个存储范围的空间变大是吧,还是这个空间呢,该占多少还是占多少,但只不过你表述的范围这块呢,不让你放负的而已了,那有时候你不用刻意的去加这个S散了啊,这个注意。那么接下来的话呢,我们看一看这个具体的里边这个点。关于这个精度的一个说明,那咱们上边讲double的话呢,是不是也提到过这样的这种格式了,那在哎不是讲double讲整金的时候呢,也提到过这样的一个格式了,那么在我们这个浮点类型这块的话呢,诶你看它也可以这样去写,那我们把这个呢,还称为叫非标准的语法是吧?哎,非标准的标准啥呢?标准就不要写了。
05:12
这个在别的数据库当中有可能不支持你这种写法的。啊,不支持这种写法,所以你要是涉及到数据迁移的话呢,这个还得小心一点,还得小心一点,那我们先来讲一讲这种C标准的就是MYSQL这个特有的这种方式,这里边的话呢,这个M和D呢,把M呢我们称为呢叫精度,注意M叫精度,D呢叫做标度。啊叫标度,嗯,M呢,就是我们这个整数位和小数位的,呃,这个个数的和就叫M了,D呢,就是单单只表述小数位了,那很显然这个M呢,是不是大于等于D是吧?M大于等于D,那具体的这个我们在设置的时候呢,它的范围这块也标示出来了,这个那M呢,最小是D,然后最大是二五,然后D呢是从零到30这个范围内的,哎,没问题,那比如说我们要定一个float,这写的是五逗号二,那就意味着我们整数位呢是有三位。
06:01
啊五减二嘛是吧,那小数位呢,是有两位,那么我们如果是一个安三,那这个就是有符号的一个场景的话呢,那就是负的也能取到,那就是这个范围。负的999.99啊到正的999.99很好理解对吧,那如果你要超出这个范围的话呢,它就搞错了。哎,就报错了啊,那下边就提到说你要是不指定这MD的话呢,我们就按实际的啊,有操作系统和这个硬件呢来决定去显示了啊,然后也可以加上安散的,只不过这个范围的话呢,它就变小了而已,那比如说我们这个是三逗号二,那三减二呢是一,那就相当于你的这个整数位的话呢,是不是只能有一位,那最大就是九了呗,那你加了个安三,那就从零开始的,那零到9.99啊是不是一看还比较好理解是吧。哎,比较好理解,那下边这块就我们在存储的时候呢,这个涉及到这个四舍五入的问题啊,这个咱们可以通过演示呢,来给大家去说好,那下边呢,咱们就创建一个啊,大家来看一看我们这里边儿的一些细节点。哎,这个我们是第三个啊,叫浮点类型。
07:02
没问题是吧,好CTRLV,咱们把这个表呢,给它粘过来啊,粘过来以后呢,这个比较简单,就是我们float double这块呢,是咱们说的非标准类型里边呢,写上了我这是五逗号二啊这个方式哎,很简单,来我们执行一下。没问题了,那此时的话呢,首先我们DEA一下啊,我们叫test。啊double啊,这个一咱们看一下这个它显示出来的这个场景啊,走一下。那在咱们这个5.7当中啊,你会发现呢,它能够去显示出来我们这个五逗号二五逗号是没问题,而这两个呢,它会随着这个系统操作系统和我们这个硬件的这个呃做一个呃这个决定,看这个精度是多少,占据多少空间啊是这个意思。啊,这个是显示的它的一个一个一个范围啊好,那么这呢是我们说的这么个事儿,然后呢,接下来呢,我往里边是不是就可以添加数据了,Insert into test这个double。这个我们是一,嗯行嗯,那咱们首先呢,针对这个F1和F2呢,咱们去说啊,其实这两个说清楚了,Double呢也同样的道理啊,只不过它的精度就更高一些。
08:03
这里面没有写,比如我们写个一二,这个一二三点这个四五啊,这个是一个啊,123.45。四五那这个下边这块的话,我们整数位呢是有三位,小数位呢,这块是两位啊,那此时这个数据呢,是不是添加也都没有问题。啊,没有问题,好,我们去做一个select啊,行,诶,From一下我们这个test we啊。走一下,哎,大家能看到了,那此时呢,我们这两个数据呢,是不是都可以正常的去存储成功对吧?那其实呢,这两数呢,你再存到这个double里边也是没有问题的啊,这个是OK的,嗯,这呢是我们说的这个是它俩的主要区别就是精度的一个问题啊嗯,接着的话呢,我们来看一看这个下边这个问题啊,Into test。Double或者嗯,F1F2或者F3F4,这都可以啊,我们以他俩来演示一下吧。那这两个的话呢,我们显然这个double呢,它存储的这个呃,精精度的话呢,相当于是可以这个更高的啊,就是表示一个数据的话呢,它可以去更精准一些啊嗯,但是现在我就呃就先不说那个精度的问题,一会儿我们讲先来看一看这个存储数据的一个事儿。
09:08
那接下来的话呢,这个F4呢,是不是也是五逗号二啊,那咱们最大这个数呢,是不是999.99,这个它能存储是这意思吧?啊,那我们现在呢,怎么着呢,我这么着一下啊。我先来个123.456,诶这个数据呢,我们看看它存储会不会有问题呢?那按说呢,是不是这个小数位超出了这个两位了,来我们走一下,大家会发现呢,没有报错,那此时呢,怎么看待这个事儿呢?你会发现这个结果呢,表变成了123.46。123.46,那相当于呢,就是我们这个小数位这块呢,它做了一个是不是四舍五入啊。哎,四舍五入,那也就是说呢,如果我们这个小数位的话呢,超出了你本身的要求的范围,那我们就四舍五入了啊这呢,我们就简单写一下啊,就存在四舍。哎,五五,那这两个问题OK,那我这块呢,我把它选中呢,再放过来,那此时的话呢,哎,我这么着,我这呢写个1234.456整数位呢,这块是不是超了,咱们有三个整数位,你这来个四个整数位,那这时候呢,成不成功呢?走一下,哎大家会发现呢,是不是此时呢就报错了呀。
10:12
哎,这个应该能理解,因为你这你这咋四舍五入啊,我这1000多的数,你四舍五入它还是1000多,那还是占四位,这个我存不下是吧,哎,这就不行了。哎,这就不行了啊,嗯,那还有没有这个什么特例呢?哎,大姐你看我这个数啊,有点意思,哎,我这个呢,说是三位是允许的,对吧,那我这块我写了一个,嗯,这个9958。大家看这个数有意思吗?我们此时的话呢,这个呢,咱们要求小数位呢,是存两位,你这个是三位了,按说得四舍五入得进了一进位啊,这个又进位又进因这块是不是又进位了,是不是这个事儿呢,也会出现问题啊,那走一下,那同样的这个情况。这个能理解吧。哎,这个呢超呢,还是因为咱们往前进位,导致我们这个呢,九九九变成了1000了,1000又超出这个三位了,所以又报错了。
11:01
啊,就是这么个场景啊,大家应该能理解这个事儿,总之一句话呢,就是说小数位这块你要抄的话呢,我们就四舍五入了,整数位你要抄的话呢,直接就报错了。哎,就是这个意思啊,就这意思好,那么下边的话呢,我们具体就是我这块你要拿float的演示是一样的啊,下边我们来看一下这个float跟double它这个所谓的一个这个精度的一个问题。啊说浮点类型呢,它的呃有一个缺陷就是不够精准啊,呃,怎么来体现它一个不够精准的事儿啊,我这里边呢,诶创建了一个这个一个表啊,这个不是press字段,这个F1这个字段啊来我们看一下啊,整个我就把它都粘过来吧,CTRLC。啊,因为这个比较简单啊,所以咱就没有必要这块一点点去写,把这个时间浪费了,咱们把这个时间呢,可以浓缩一下啊,啊这呢来去测试一下啊,我们叫float和。Double的一个精度。哎,精度问题好粘过来这里边儿呢,我们就以这个double呢来说话,Double这块呢,我是一个F1好选中。
12:02
执行。这没问题,然后呢,我往这个表中的这个字段里边添加了三个这个数据啊,选中啊执行啊可以了,那么这三个数据的话呢,大家你可以自己加一下这个加完以后的话呢,这个结果呢,实际上是1.1。啊,这个这个三个数加一起的话呢,实际上是1.1对吧,好,那既然是1.1,我们从这个查询的角度,我们看一下。Select,我们叫some,这个咱们是叫f fe是吧,然后呢,From一下,看看这个test。Double。嗯,针对它,哎,这个表中这个字段呢,我们求一个和来看一下。大家此时呢,你会发现呢,它这个结果显示的是1.0啊,9999999啊,应该说呢,叫约等于1.1的,但是它跟1.1毕竟是不是还是不一样的呀,那也就是说,当我们大家你看我这样的去处理,我这叫F1,这呢你算出来这个数呢,我们拿它呢跟1.1呢去做一个比较,那from一下这个test double2,大家呢,你能够看到这个结果是什么。
13:03
哎,你会发现呢,是不是零啊,咱们前面讲运算符的时候说过,零呢,就表示的就是false的意思,相当于它们不相等啊,那就像我们要是这样写的话呢,1.1等于1.1,那显然的话呢,它是不是就是一呀。啊,那这个呢不相等,那就意味着就说哎,你多少这个1.09999跟1.1还是有区别的,这个就是我们说呀,它确实是存在精度的一个问题。啊,那么如果大家用double或者float去存储数据的话呢,像你去计算一下说这个值,让这个double型的值去等于某一个数,经常的时候呢,你会发现这个值呢,它并不是真正等于的。啊,这个大家要小心一点这个事儿,那如果你要用float去表示的话呢,得到这个数是这个,它这个精度你看误差更大。啊,这个呢是咱们这个double型的,那这个呢,是这个float类型的,它的误差就会更大了,所以说啊结论什么呢,咱们建议大家呢,就是在我们使用浮点类型,你去表示一个数的时候呢,大家尽量的不要用这种等号的一个符号呢,去判断这个数是不是跟某一个值是相等的。
14:05
啊,因为你涨到后边通常也都带小数点了是吧,那很多时候呢,它就不相等啊,那主要原因呢,就是因为我们浮点类型呢,它会存在这个误差的问题,那怎么办呢?啊,你要在实际生产当中呢,有时候的一个小数点呢,它会造成很大的一个这个这个损失是吧?啊那这时候我们有没有一个精准的表示呢?有谁呀,定点数啊这样的话呢,我们就把这个定点数的decim呢就引出来了。那既然啊,咱们说这个浮电类型啊,不够精准,那怎么办呢?我们这块呢,就引出来了叫做定点数的类型,好,那这块我们来看一下这个定点数的类型,它呢是使用呢,我们叫做decim来表示的,那呃,Decem这块呢,我们这个M和D呢,通常咱们就都会呢,给它加上了。啊,为什么通常都会加上呢?因为你要不加的话呢,诶其实这块呢,也会涉及到了它有一个范围对吧?因为呢,它这个字节数呢,它是跟M呢是相关的,不像咱们上边这个float跟double,你这个写不写MD呢,它这个字节数四个八个都是确定的,对吧?所以这块呢,我们你不写的话呢,它有一个默认的一个值啊,因为这个字节数呢,它是需要确定的,那一般呢,咱们写DEC的时候可以考虑呢,把这个呢都加上,OK,然后另外呢,你也可以用这个DEC,那表示这个decim也行,或者呢叫numberick也可以,那一般呢,咱们都用它了就。
15:19
它呢,有效范围是由M和D呢来决定的。来我们看一看这个decim的话呢,它是一个高精度的一个小数,同样呢,M呢称为呢叫精度,D呢叫做标度,跟咱们上面呢浮点类型是一样的啊,这呢是它的一个范围啊,比如说我们定义这个戴是一个无逗号二啊表示的范围呢,就是这个啊跟上面一样,但是区别就在于呢,它这个精度呢是比较高的啊,精度比较高的下面呢提到了说这个decim MD这个最大的取值范围跟我们这个类型呢是一样的,跟double是一样的,嗯,那有效范围呢,是由它俩所决定的。那是由它俩所经定的,它占用的这个字节数的话呢,是M加二啊,这个作为一个尝试,大家了解一下就行了,那在一些对精度要求不高的这个场合下呢,咱们说呢,你要同样的这个字节长度呢,这个定点数肯定没有浮点数呢,它的表述范围更大,因为你看这还有个加个二呢。
16:10
啊,比如你这个呢,表示的是六六加二呢,是不是就八呀,那此时的话呢,你这个DEC呢,你的这个,呃,它的一个表述的范围肯定没有我们同样八个字节的double呢,表示范围大,哎这呢也决定了我们到底什么时候会选择double,什么时候选择用这个DEC啊一会我们再去说这个事啊。呃,那首先的话呢,我们还回归到这个deem这块呢,它为什么够精准呢?因为它在底层当中,实际上是用字符串的方式呢去存储数据的,那这个就足够精准了,对吧?你想怎么存那都可以精准的去存储啊,想多少位就能都有多少位,是这意思吧,没问题,像咱们这个Java当中呢,哎,类似的也是这样的场景啊,别的语言当中要精确的去表示个数呢,也是类似的这样的场景没问题。好,这就要出类旁通嘛啊,然后下边来说呢,如果我们要是单呢,你不指定这个精度和标度的话呢,它默认的是十逗号零,注意十逗号零,原ID呢,就是默认就没有小数了。
17:04
啊,是这个意思,那你要是这块呢,添加这个数据,呃,比如带小数怎么办呢?那该四舍五入呢,就还四舍五入了,哎,是这个意思,下边呢,就是说咱们在什么场景下呢,去选择浮点数,什么场景下呢,去选择这个定点数各自的优缺点啊这个咱们一会儿说来,首先呢,我们来演示一下,看看一下这个decim的这样一个场景,还是呢,回到咱们这个5.7的这个位置啊,这块我们去新建一个,这个是不是改四了呀。上面这个三对吧,这个我们叫定点数类型。哎,这个类型好,这个呢我粘过来S,注意这块呢,我们首先呢,是一个没指定它的精度和标度的一个呢,是指明了来,我们选中执行。可以了,首先呢,DA一下我们test啊这个。一是吧,来我们这块呢,DEC一看大家会发现呢,上边这块呢,当我们没有指定的时候呢,是十逗号零,咱们刚才是不是说过了,下边这个指定了就它。
18:01
行没问题啊好,但是你看啊,我先不说下边内容,我把这个CTRLC下,咱们放到8.0当中。诶,8.0当中,咱们说一下。为什么我这块呢,要把它拿过来呢,但是你看咱们前面呢,说到这个整形和浮点型的时候呢,其实提到过这个MYSQL8.0啊,其实已经不支持我们后边去写这个呃,这个这个呃,比如说范围或者是double类型呢,你就是这个精度和标度了,对吧?当然对于我们这个dem来讲了,你看我们选中了做个执行。在这个8.0当中呢,我们看下它这个结构,你发现呢,诶,它怎么对于DEC呢,就来一个特殊待遇,它就加上了呢,哎,因为呢,咱们说DEC呢,是精确的表示个数的,那通常我们都会去加上呀。啊,再者说的话呢,它是不是还影响我们刚才说的你存储数据的范围,哎,不是你在占用的这个字节数,是不是M加二的字节啊,哎,这个呢都会影响到,说我们这块呢,是需要去加的啊,这个没问题啊,那整体上咱们就不在8.0数,还是回到5.7。这块已经看着了,然后呢,我们insert into一下test。
19:03
嗯,这么着是吧,嗯,我呢先来说一下咱们这个F1的事儿吧。这样我写的话呢,就比较精准了,G f1的话呢,你看它默认的话呢,是十逗号零,那大家我问一下呃,这个数能不能存进去。应该没问题吧,哎,这其实存在一个,哎,这个隐式的一个转换啊,我们把这个整数呢,存给一个带小数点了是没有问题的,那我要是这样123.45呢,这个可以吗。你看这个位置是零,就表示呢,这个没有小数位,但我写了怎么办呀,走一下发现呢,是不是成功了呀,哎,此时呢,就意味着它会有四舍五入的行为。Test。好,我们这种呢,选中啊执行,诶大家看这时候呢,我们这个F1的值呢,都是123啊,因为这个123没问题,这个123呢,是因为我们四舍五入的话,那个四不足五,所以给舍掉了,是不是就123了呀。哎,这个点没问题,好,那下边我们再去演示另外一个啊,Into这个test Di。
20:03
啊一,那我们就专门说一下这个F2了啊Y6。这个呢是五逗号二,哎,那就是整数位的话呢,是不是我们可以有三位小数位的话呢,有两位,那能表示的最大的数是不是就它了呀,那这个应该没有问题了。好,这块我们选中呢,执行一下,然后也去select新看一下,你看这个是OK的,好那么接下来嗯,我这块呢,再接着演示,嗯,那我们这块我们先小一点吧,这个位置呢,我们写一个这个呃567。啊,那此时呢,它表示的是两个小数位,是不是就到这儿,那这个七的话呢,是不是就存在存在这个叫四舍五入的一个问题了,是吧,来我们这块呢,去select一下。那你看哎,67.67啊,这个呢,是存在四舍五入。哎,这个它是没有问题的啊嗯,然后接着的话呢,我们CTRLC一下,CTRLV一下,然后这个位置我们写一个啊1267,那显然呢,是不是超过它能存储的三位了,此时是不是就out range了。
21:01
啊,没有问题是吧,来CTRLC一下。啊,这个是al的一个range啊,这个应该能明白,那同样的道理,CTRLC一下,然后这边粘过来,我这个的位置写成999,这个位置呢写成995啊,你看此时呢,这个小数位呢,存两位,那这个呢,四舍五入就该进位了,这个是不是同样的啊,一直型就out range了。跟咱们上面讲的那个情况是类似的,对吧,因为往前一进位的话,这不就变成1000了嘛,又超出我们这个整数位的这个三位了,哎,这个就出错了。啊没问题,好,那这样的话呢,咱们就演示一下,那咱们这里边说到的它的这个一个基本的使用,然后呢,你这个呢,就足够精准吗?诶下边呢,我们看一看它跟这个double去比的一个精度上的一个问题啊咱们在前边的话呢,是不是有一个叫test的。哎,咱们是不是用的这个叫test的这个,嗯,我看啊。咱们刚才演示这个double这块呢,咱们有一个小的题目。嗯,找一下诶是不是这个T这个double呢,你看我们这呢是F1是个W型的,我存在这三个数呢,咱们刚才呢,去看的时候发现它的结果呢,是不是1.12,好,我现在呢,把咱们这个表中的这个F1的这个字段double呢改成decim。
22:14
改成这个decimal啊,数据呢,你本身也存了啊,还用你原来那个数据就行啊,那我们下面来看一下,咱这相当于叫al一个,嗯,Table啊,咱是叫test,那double是不是二啊,然后moreify,哎,它这叫F1这个字段吧。哎,这个字段是吧,嗯,Test double2,然后把fe这个字段呢,我们给它改成啊叫DEC。哎,OK这块呢,比如我们就指明一个五逗号二啊,有两位这个小数呢,可以去存储的啊好,那么此时呢,我们选中做一个执行。可以了,那这时候呢,我们首先呢,第一下咱们这个test double。选中。执行好,那你会发现呢,它确实呢,已经变成咱们这个叫decem的这样一个模式了,那为了证明呢,咱们确实有变化,我呢就把这两个呢,CTRLC原封不动的我们粘过来啊,让你看到就是原来的这个,诶这个查询是吧,此时呢,我们再去做个select,诶大家有没有发现呢,人家这块呢,是不是就变成1.1了呀,不是刚才1.0999999是吧,那进而的话呢,我们再去做这样的一个比较。
23:19
诶大家会发现呢,是不是此时呢,都变成一了,那杨IG呢,就是我们此时存在这里边儿的这三条这个数据。啊,我们这个数据数据在这儿,那真的呢,现在是就是精准的一个保存了。哎,精准的一个保存可见呢,它比啊这个相当于我们说呢,比铺垫类型的是不是更精准的啊在这啊来演示。这个decimal。啊,去替换啊,咱们这个大部。啊来体现的这个,呃,精度问题。好,那么这样的话呢,我们就能够说清楚了他俩的一个分别使用场景了啊大家看。这个首先说的话呢,如果我们希望表示的这个数据呢,是比较精准的啊,精度要求极高的,那没得说,肯定是用咱们的定点数类型对吧?那么如果说呢,呃,那么浮点数这块呢,有没有什么特点呢?也有啊优点就说呢,呃,相对啊,就是我看看这块主要找的啊,其实咱们上边这块说的就是你要是存储的这个空间字节数是一样的情况下呢,咱们这个浮点类型呢,它的存储的范围呢,是会更大一些的。
24:24
对吧,那就意味着呢,如果在实际场景当中,咱们希望呢,这个表述的范围呢,能够大一些,也不用那么精准。啊,那同样的你占就是在占据同样的这个空间的情况下啊,然后我们又不希望又用不着说那么精准了,我们由于浮点性,浮点数类型呢,它表述的范围呢,可以更大,所以我们可以考虑呢,用这个浮点类型。啊,因为它容忍的这个小的这个误差是吧,比如说计算化学啊,分子建模呀,这个流体力学呀等等,哎,那么这些场景下的话呢,我们可以考虑啊,就是用这个叫浮点类型去替换咱们说的这个定点数类型。
25:00
哎,这呢是我们说的这个意思啊,然后最后这块呢,其实有一个开发中的一个经验,虽然说呢,他们有利有弊是吧。咱们说任何事物呢,实际上都是有利有弊的,哎,我们呢,能拿这个好的呢,去替换这个原有的这个不好的就针对它的缺点呢,我们去做个替换,那么相对应带来的话呢,它也会有一些弊端啊,就像我们说用这个现在的安卓呀,IOS啊,替代原来的这个功能机啊,有很多同学应该都没有接触过像诺基亚这样的功能机了哈,那当时的话呢,那一个手机啊,这个你出去之后呢,三五天不充电,那是非常的一个正常的一个事情啊,当时比较经典的这个飞利浦的一个手机,一个多月都没有充电是吧?啊,然后还正常能打电话啊,那特别爽的事儿,现在呢,你去哪儿的话呢,是不是都得备一个。这个这个移动电源是吧?呃,不放心呢,电量不行啊,那你智能现在的智能机相较以前有好处了啊,好处太多了,但是它有缺点啊,包括现在我们说这个汽车用这个,呃,充电的这个汽车,然后替换替代这个燃料,这个汽车好处有吗?有是吧?呃,这个比如说环保呀等等的是吧,但是的话呢,呃,你这个。
26:02
什么呀,充电啊,就是动力方面呢,你一充电充俩小时,你原来加油的话呢,这五分钟就能加完这个加完油了啊这个呢,相当于也是它的一个缺点,对吧。哎,包括的话呢,大家找女朋友也是一样啊,你看这个这个女生这个颜值特别高啊,身材还好,然后呢,当女朋友了,哎,挺好的,有面子啊,这个待着也舒服是吧?呃,有没有缺点呢?当然也有了,这个不光你盯着很多人是不是也盯着呢?但是呢,你想想他这个,呃,各方面都很好的,你是不是也得。供养得起啊啊,这就是也算是一些缺点是吧?啊,如果这些缺点你觉得无所谓啊,那那当然就无所谓了,你就可以只关注优点是吧?啊,这也是一样啊,你要是觉得这个呢,呃,误差小一点没关系啊,我就希望它这个处值范围大一点,OK,那没问没问题,就用浮点数啊,就类似这样场景啊。好,那么这块呢,我们在实际开发当中啊,咱们还是要强调一下啊,虽然说最后呢,咱们会有一个大的一个总结啊,咱们在这儿呢,先来一个小的总结,这呢是一个啊项目经理我就具体不说是哪个项目的了啊,诶这个说到的这句话啊,非常具有权威性和代表性,说由于DA的数据类型它是精准的,我们在项目当中啊,除了呢,我们像商品编号啊,就是明确的是使用整形的类型之外呢,其他的场景当中我们都是要用。
27:17
呃,这个带小数点来表示的啊,那么小数点这块呢,我们就是用DEC西啊,因为呢,呃,他这个项目所处这个零售行业,它要求非常精准,一分钱都不能出差,诶这就是引出了DA姆呢,诶对精度要求比较高这样的特点,咱们在上边呢,是不是又提到了一个,呃,咱们在讲前面的知识点的时候呢,提到过一个这样的一个识点,是不是存储空间和可靠性的问题,对吧,那我们呢,是愿意用存储空间来换这个可靠性的,就是空间呢可以大一点没关系,但是可靠性呢一定要精准。哎,就是这么个道理,哎,大家把这个呢原则呢给它贯彻下去,好,那这呢,就是咱们说的这个定点数类型。好,那接着的话呢,我们看一下这个叫位类型啊,我们说呢,关于数值类型的话呢,哎,这里边呢,我们说提到了有整型,浮点型,定点数型,哎这块呢,还有一个叫做位类型啊,就是我们可以呢去存储这种二进制的数值的,那比如说呢,像我们存储这个0101啊,110啊等等这样的这个场景。
28:16
啊,那这块呢,这个B的类型啊,它也可以去指定一个它的所谓的一个范围是吧?哎,就是所谓的一个长度了啊,这是我们说的这个M啊,那它的这个范围呢,是从一呢到64,哎,然后占用的空间呢,跟我们这个M呢也是有关的,这个大家呢了解一下就可以了,那默认情况下呢,如果我们指定的一个字段呢,是一个B的类型。啊,那这时候呢,我们实际上呢,默认呢,它就只能够存储一个位,那就是你存个零也行,存个一也行,你要再多于一了,存二那就有点过分了是吧?那这是这个意思啊,那么最大的这个M的话呢,我们看到是64了啊,你这呢,可以是写个64啊就是这样个意思,好那这块呢,咱们就不妨呢做一个演示啊,CTRLC一下,哎,我们过来呢做个说明。这呢,我们呃是第五种类型了是吧,我们叫这个胃类型。
29:04
啊,这个为。啊,这个类型啊,叫做这个bit,嗯,OK,行,然后CTRLV直接咱们就粘过来了,这个bit呢,就直接写这个bit就可以了,行,那首先呢,我们这里边呢,选中那这块啊,咱们这么着啊,我先呢,先来个65,大家看一下来,我们选中了一直行,你看这时候呢,说我们这个是不是最大的是64,超过65了,这个就那超过64了就不行了,是这意思吧,好,那这块我们改成这个64,哎,我们选中以后呢,再去执行。嗯,这就成功了,成功以后呢,首先我们来一个D啊,Test一下一。选中执行,那这时候我们首先看一下,当我们没有去声明这个M的时候呢,这时候呢,它默认的就是一,那这个我们刚才已经说过了,是这意思吧,好,那此时呢,我们去做一个insert into啊,Test,这个BIT1啊,我们针对的是这个F1呢来进行操作的value,那我这块呢,写个零,写个一是不是应该都可以啊。哎,对吧,哎,这个我们选中呢,做一个执行好,这时候呢就可以了,来我们做一个select,哎星from一下。
30:06
那我们这个test叫be。好选中执行好,这时候大家你看到了这个数据就出来了,那同学诶怎么这块显示的是个B这个嗯,单引号里边零,那这是啥意思呢?那这个话呢,跟我们这个色库要它这个呈现呢是有关系的啊,我们可以呢,在命令行里边看一下啊,这个WIN2一下,然后CMD,那我们这块呢,做一个登录啊嗯注意嗯这块呢,咱们用的是不是5.7啊,所以我用这个大写的P呢叫端口号啊13306,然后杠。那小写的这个P,咱们写密码啊,我这是ABC123好就进来了,那这时候你去select,我们说叫这个a version,那我们看到了是5.7的这个场景没问题是吧?好,首先的话,我们去use一下,咱们叫DB test。嗯,11吧,诶不对,12啊好,那我们使用当前这个数据库,这是我们FF5刷新一下,我们用的是这个数据库,在这个数据库下呢,我们这块CTRLC,然后在这边呢,点鼠标的右键,然后呢一回车,那我们就看到了,哎,这块呢,你看发现呢,实际上呢,帮我们是不是拿这个16进制呢,来显示的这个数据没问题的是吧?好的,嗯,这块呢,你看它显示的这个好像看的不是比我们这个控制台这块看的更清楚一些啊行,然后接下来的话呢,我们再去隐ser into,那我们这么着啊,CTRLCCTRLV这个位置呢,我写一个二。
31:24
写个二好,这块我们选中呢,做一个执行。这时候大家会发现呢,你说这个data呢,是不是凸浪了,哎,我们这种写法的话呢,是不是默认的话都是十进制的写法,对吧?你要是八进八进制的写法我们会零的,你要是二进制的写法呢,是不是0B开头的呀,那当然二进制的话,你也不会出现这二这个数值了,所以呢,你这个二呢,实际上是认为十进制了,那十进制里边的啊,二的话,你转成二进制是不是就幺零了,那是不是就占两个这个位了,那我们这呢,是不是搞不定啊,人家这块默认的是不是只有这个一个位啊,哎,所以就不行了。能理解是吧?好了,那接下来的话呢,我们去看一下啊,We insert into这个test,然后beat一下,咱们来一个二吧,哎,还是一哈,针对这个F2这个字段啊,Y64这个字段的话,你看它写的是一个五,那就相当于是不是它一共是12345,是不是就这五个倍啊,那五个倍的话呢,你像它要是二进制去存的话呢,最大的这个值是不是全是一啊,那这个数是多少呢?
32:18
这个是多少,我们算一下,嗯,那么这个相当于是换成十进制的话,这一这相当于是二了,这个是四,这个是八,这个是16吧,哎,我们看下这多少呢?这加一起这是20 30是不是31啊,那那压一进呢,我们能存储的最大值是不是31。那那这块呢,比如我们针对F2这个字段来,我们存储一个这个31,咱们看一看。哎,我们选中啊执行一下好,你看是不是就成功了呀,哎,成功以后呢,我们这时候呢,再CTRLC一下啊这么着我这呢来一个32看看行不行啊走一下,哎,是不是又报这样的一个问题了。好,那通过我刚才这样一个演示,大家应该能够清楚我们这个bit类型,它底层这个存储的一个意思了,没问题是吧?啊,那这块我们回过来,咱们再做一个,哎,刚才说的这样的一个一个一个查询啊,From一下我们test啊it一下看一好,那这时候我们看到了,哎,他都是拿着个是不是16进制帮我们去展示的这个数据。
33:16
没有问题的,对吧。好,这呢是我们相当于是s select的星呢,能够看到的,用这个16进制呢,来帮我们去做的这个展示,那如果说呢,大家想看一下这个对应的,比如说二进制呢,它长什么样子,哎,我们也可以使用相关的这个函数啊,这个函数呢,你看就做bin啊,Bin这样一个函数,就是你把这个字段呢放进去就可以了,呃,这个has的话呢,就表示的是16进制了,哎,本身的话呢,它因为用的就是16进制,所以说你这个不加这个he这个函数呢,也是可以的啊,也是可以的,来我们去演示一下吧,这个我们去select一下,我们来个bin显示一下咱们的F1吧,然后呢,再来一个bin显示一下这个F2,然后from一下。TEST1。没问题,好,我们选中来做一个执行。
34:00
好大家看,那这时候呢,就是呈现出来了,我们这个,呃,F2这块呢,我们呃这块存储过这个数据,嗯,咱们不是31嘛,是不是就正好是这五个一啊,然后这个呢,是我们存了一个零存了个一啊用二进制来展示呢,就长这个样子。那就长这样子行,那你要是想看一下这个X f1,然后X这个F2,那是不是就可以这样的去加进来,来,我们选中呢,做个执行。哎,就这样子。那就这样子了,嗯,行,那同样的这个呢,我们CTRLC一下,我们在命令行这块呢,看一下啊,是不是一样的呢。啊,这个不行了,我们再重新啊CTRLC。再过来。哎,或者荣在这样。哎,是不是就这样个效果啊,其实一样啊,没有问题,好呃,这呢是我们相当于展示的是二进制啊,这个呢16进制,然后默认情况下呢,我们如果是C拉星呢,它相当于也是用这个16进制的方式呢,帮我们去展示的啊,只不过这个你看我们加上亥以后呢,明确的是16进制的,它又没有前面给我们去补这个0X了。啊,是这个意思吧。好,那么能不能显示十进制呀?
35:00
啊,显然实际的话呢,其实有一个小的技巧,就是你这个F0呢,我们去加上一个零,这样比如F2呢,我们也加上个零,哎,这个时候大家看一下from一下,我们test叫BIT1,因为这块呢,涉及到跟我们相当于这也算是十进制的数做运算了啊那么这时候这个结果是怎么呈现的呢?哎,大家就可以看到了,这个31,显然呢,是我们那会儿添加数据的时候,十进制的31是吧,那我们这块说一下说呢,此时。啊,这个可以啊,就是加一以后啊,加零以后。这个加零以后是吧,可以以呃这个十进制的方式呢来显示啊。来显示这个数据啊,OK行,那这块的话呢,就是咱们要说的这个叫bit这样的一个V类型,那整体上来讲的话呢,咱们在平时开发当中,实际上用的是比较少的啊,用的是比较少的啊,我们你想想咱添加数据的话呢,包括这个位置我们写的也是添加的32呃31呃,三十一三十二不让添加,那其实的话呢,你就完全可以用这个我们整形去表示就可以了,是吧?哎,是这样一个场景,那这个B的类型呢,实际上跟我们后边哪块呢,也算有一定的相关性的,就是我们后边会讲这个二进制的这个,诶所谓的字串类型,像baary啊,Web baary啊,Lolob呀等等这块呢,它存储的范围呢就会更大,而我们此时这个bit呢,它存储的范围相对来说小一点啊。
36:22
啊,因为呢,也作为咱们整个MYSQ数据类型的一种,所以大家呢,呃,就是熟悉一下,了解一下就可以了。
我来说两句