Mysql数据类型
在设计表时,应该特别重视所用的数据类型。使用错误的数据类型可能会严重地影响应用程序的功能和性能。 更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失)。 最常见数据类型:整型、浮点型、字符串、日期等
1、字符串数据类型
最常用的数据类型是串数据类型。它们存储串,如名字、地址、电 话号码、邮政编码等。 不管使用何种形式的串数据类型,串值都必须括在引号内。有两种基本的串类型,分别为定长串和变长串
1.1 定长串:char
- 接受长度固定的字符串,其长度是在创建表时指定的。 定长列不允许存储多于指定长度字符的数据。
- 指定长度后,就会分配固定的存储空间用于存放数据
char(7) 不管实际插入多少字符,它都会占用7个字符位置
1.2 变长串 varchar
存储可变长度的字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置,当然插入的数据长度不能超过7 个字符。
既然变长数据类型这样灵活,为什么还要使用定长数据类型?
回答:因为性能,MySQL处理定长列远比处理变长列快得多。
1.3 其他
2、数值类型 数值数据类型存储数值。
MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。支持的取值范围越大,所需存储空间越多与字符串不一样,数值没必要括在引号内。
decimal(5, 2) 表示数值总共5位, 小数占2位
tinyint 1字节(8位) 0-255。-128,127
int 4字节。 -21亿,21亿。0-42亿
MySQL中没有专门存储货币的数据类型,一般情况下使用DECIMAL(8, 2)
但是int还是可以加数字的。
int(4) unsigned zerofill 这时候会给int一个假定宽度。
如果int长度小于4位,那么会在前面补足0,比如1会变成0001。
只有当给int类型设置有前导零时,设置int的宽度才有意义。
3.表的字段约束
-unsigned 无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以)
-字段类型后面加括号限制宽度
char(5). varchar(7) 在字符类型后面加限制 表示 字符串的长度
int(4) 一般没有意义,默认无符号的int为int(11),有符号的int(10)
int(4) unsigned zerofill只有当给int类型设置有前导零时,设置int的宽度才有意义。
-not null 不能为空,在操作数据库时如果输入该字段的数据为NULL ,就会报错
-default 设置默认值
-primary key 主键不能为空,且唯一.一般和自动递增一起配合使用。
-auto_increment 定义列为自增属性,一般用于主键,数值会自动加1
-unique 唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度