MYSQL:数据类型

164 阅读3分钟

参考网址

blog.csdn.net/yuzhiqiang_…

1/在Mysql中我们要使用的数据类型有:

<1>数值类型
   1)整数型:bit,bool,tinyint,smallint,mediumint,intbigint
   2)浮点型:floatdoubledecimal
   
<2>字符串类型:charvarchar,tinytext,text,mediumtext,longtext,tinyblob,blob,mediumblob,longblob

<3>日期时间类型:Date,DateTime,TimeStampTimeYear

<4>空间类型
<5>json数据类型


比较常用的是:
    1)数值类型
    2)字符串类型
    3)日期时间类型

2/约束条件

约束条件就是在给字段加一些约束,使该字段存储的值更加符合我们的预期。

常用约束条件有以下这些:
    1)UNSIGNED :无符号,值从0开始,无负数
    2)ZEROFILL:零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
    3)NOT NULL:非空约束,表示该字段的值不能为空
    4)DEFAULT:表示如果插入数据时没有给该字段赋值,那么就使用默认值
    5)PRIMARY KEY:主键约束,表示唯一标识,不能为空,且一个表只能有一个主键。一般都是用来约束id
    6)AUTO_INCREMENT:自增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
    7)UNIQUE KEY:唯一值,表示该字段下的值不能重复,null除外。
                  比如身份证号是一人一号的,一般都会用这个进行约束
    8)FOREIGN KEY:外键约束,目的是为了保证数据的完成性和唯一性,以及实现一对一或一对多关系

bigint(20)

bigint是属于`整型`中的一类.
当整数值超过数据范围时才可以使用.

image.png

注意点:表中的数据类型列的括号里边都有个m,括号中的 m是代表的什么含义呢?

m表示的是显示数据宽度,不同数据类型它的数据宽度也是有差别的。
数据宽度和数据类型的取值范围彼此之间是相互独立的,没有任何联系。
bigint(m)默认宽度为20,如果创建时表中设置了zerofill关键字(默认是用0填充的)
zerofill含义是:往表中插入的数值比定义的长度小的时候,会在数值前进行补值。


3/数值类型

数值类型包括**整数型****浮点型****定点型**

4/float double decimal的区别?

float(M,D): M是总的位数,D是小数点之后的位数。
            如果超过,则会被截断,截断的方式是四舍五入。
            如果没有指定M和D,则会按照实际情况进行显示和存储,及数据是啥样就是啥样,不做任何处理
            
            
double(M,D): M是总的位数,D是小数点之后的位数。
             如果超过,则会被截断,截断的方式是四舍五入。
             如果没有指定M和D,则会按照实际情况进行显示和存储,及数据是啥样就是啥样,不做任何处理


decimal(M,D): M是总的位数,D是小数点之后的位数。
             如果超过,则会被截断,截断的方式是四舍五入。
             如果没有指定M和D,默认整数为10,小数为0。

总结:
浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,
定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会报错。