小能MySQL笔记 第四课

目的:要学会建表

知识点:列类型

 

怎么建表?

以在A4纸上建表为例,学号,姓名,家乡,入学年份…

 

姓名

学号

家乡

入学年份

自我介绍

扫描二维码关注公众号,回复: 9031985 查看本文章

001

张三

01

湖北

2017

 

 

 

 

 

 

 

我们只要把第一行,表头建好,这张表也就完成了,至于下面的001,张三,这不是表的概念,而且表中存储的数据。其实建表过程,就是一个画表头的过程,从术语上讲,这张表有5个列。

建表的过程,就是一个声明字段过程。

 

那么建表和列类型又有什么关系呢?

再看上面的表,A4纸是数据的存储空间,而A4的大小是有限的,请问给准备给

学号留多宽?给姓名留多宽?自我介绍留多宽?

姓名如果留的过宽,比如20个字都能存,但是一般人的姓名就三四个字…浪费

如果留的过窄,导致存不下,更有问题。

对应的,A4纸空间有限,硬盘空间也有限,我们建列时,自然想到--能够容纳放置的内容,但是又不浪费。

 

存储同样的数据,不同列类型,所占据的空间和效率是不一样的,这就是我们建表前的列类型和意。

 

重点学习列类型的存储范围与占据的字节关系:

mysql三大列类型:数值型,字符串型,时间类型

数值型:

整型:

Tinyint---占据一个字节,存储范围-128-127,0-255

Smallint

Mediuint

Int

Bigint

Tinyint  1一个字节  8个位

0000 0000-----0      最小

1111 1111-----255  最大

大家知道,计算机为了表示一个数是负数,会把最高位(左侧)的0/1,当成符号看,如果为0,则为正数,如果为1,则是负数

0 0000000 ----0

0 1111111 ----127

1 0000000 ----  -0

1 1111111 ----  -127

二进制补码的问题,+0,-0,重复了,浪费了一种存储的可能性,因此计算机中的负数,不是照着“后面的绝对值直接乘-1得到的”,而是用补码规则换算的。

负数   =   绝对值为 -128

1111  1111  ---   -1

1000  0000  ---   -128

最终结果 -128-----127

 

分析:2个字节,16位  0---- 2^16-1       =          0  ----       65535

 -2^15----- +2^15=   -32768  ----  +32767

 

一般而言,设某类型位N字节,8N位’

0  -------- 2^8N -1

-2^(8N-1) ---- +2^(8N -1)-1

 

对于int型:占的字节越多,存储的范围也越大。

 

Tinyint 怎么样让他存储0-255,又怎么样让他存储-128  -127

int系列的声明时的参数:(M) unsigend  zerofill

 

 

 

练习tinyint的参数并验证字节宇范围的关系:

 create table db2(

    -> sname varchar(20) not null default '',

    -> age tinyint not null default 0

    -> )engine myisam charset utf8;

 

 

为其插入数据,age到底是-128到127,还是0-255呢?

 

 

 

 

加unsigned表示无符号,可以影响存储的范围

给学生加一个学分列 alter table db2 add score tinyint unsigned not null default 0;

测试其范围

 

//在列类型加unsigned表示其无符号类型

 

分析(M)参数 :

 

 

 

Zerofill  zero是零,fill是填充,代表0

M必须和zerofill配合才有意义

给学员增加一个学号列:学号不能为负,学号一般位数相同。不够位数用0填充

 

 

//snum统一补0,而且补到5位,为什么补到5位?因为M=5。

总结,M表示补0的宽度,和zerofill配合使用才有意义。

观察snum的类型,可知zerofill则同时必是unsigned类型。

 

 

浮点数在计算机里表示是比较复杂的,IEEE组织有详细的定义。IEEE745标准。

234.87

23.487

小数点左边 能大多少?

小数点右边 又能大到多少?

float(M,D),decimal(M,D)

M叫“精度”-----代表“总位数”,而D是“标度”,代表小数位(小数右边的位数)

 

张三炒股,每个月亏9999.99,李四是程序员,每个月赚9999.99。

 

将float定义成unsigned,并用零填充。

 

发奖金,给王五发888.88奖金。

王五迟到三次,扣300块钱

 

 

浮点数占多大的空间?

答:float 能存10^38.10^-38,如果M<=24,点4个字节,否则占8字节

 

用来表示数据中的小数,出来float---浮点。

还有一种叫定点decimal,定点是把整数部分和小数部分分开存储的,比float精确。

 

 

发布了33 篇原创文章 · 获赞 4 · 访问量 3734

猜你喜欢

转载自blog.csdn.net/linux2422988311/article/details/104224942