首页 > 代码库 > mysql数据的类型以及字段的约束问题【重点】

mysql数据的类型以及字段的约束问题【重点】

1.确保mysql字段【包括库名、表名】的正确,必要使用反引号


2.校对集
指的是字符之间的关系【对字段值的字符处理】
校对集依赖于字符集
校对集:在某个字符集下面,这些字符的排序关系称之为校对集
【对字段进行某种排序处理】

在phpmyadmin中设置库的编码,使用的ci结尾的编码就是使用了校对集【默认是使用的,但是其实校对集基本用不上】

_bin:二进制编码层面直接比较
_ci:忽略大小写
_cs:不忽略大小写
【http://www.jb51.net/article/30865.htm】

 

3.整型介绍
sql本身是一个强类型语言
tinyint
smallint
mediumint
int占用4字节
bigint

占用的字节数绝对了它们的范围
以及对负数的控制【对符号的控制】
int(10)unsign【0填充,如果没有到这个位数,前面填0】【而超出这个位数,则直接显示】
mysql没有布尔型这个类型,但是有Boolean这个关键字【是tinyint类型】

 

4.浮点型
单精度:占四个字节的存储空间,能表示的有效位数为7位【float】
双精度:占八个字节的存储空间,能表示的有效位数为16位【double】

因为浮点数本身的精度问题,所以不使用浮点数进行数据的精确表示【或者判断是否相等】

定点数【类似于字符串的形式来存储】【小数点是确定的】


5.字符串类型
char
varchar【这里的长度指的是字符数】
text【sql server会对字符串进行截取,如果取出来的数据较少,那么需要再取数据时进行转换类型】

【注意】
(1)mysql中一条记录最大的长度是65535字节【行内所有字段加起来的和是这个字节范围】【需要考虑编码占用的字节来判断长度。因为判断记录的长度使用的是字符数】
但是text类型的数据不会被计入一条记录的字节限制中

 

6.枚举和集合
enum单选型【int(1)也可以表示】
集合【set:复选】

很少使用这两种类型


7.日期时间类型
用于记录相关数据的时间的类型【这块内容正常使用即可】

【以整型的形式管理,但是以字符串形式来展示】


8.列约束【列属性、字段约束】
用于限制字段的相关情况的设置【默认情况】
(1)NULL属性约束【该字段表示并没有存储数据,而不是说该字段一定是null。可选字段都是这样限制】【not null就是说该字段不能为空】
(2)默认值约束【某值需要在没有指定值的情况下,该字段需要指定一个默认值来实现默认值的情况】
但是null和default之间不能一起定义,不过通过null,not null,default实现了字段的基本设置
【但是default和null的约束属性并不一致,也就是default的值也本身不是null】
(3)current_timestamp这样的限制字段【表示当前的时间戳】
【重点】
(4)主键索引和唯一索引约束【保证了每行记录中在该位置上的字段都受这个限制:通过这个约束来实现更好的特性】
【这里便能够引申出索引的作用就是对该字段的约束作用(相当于创建了一个新的文件来标记该字段)对该字段的数据的查找有好处】
【主键和唯一索引可以由多个字段构成,称作复合主键。不过这种用法比较少用】
【如何管理主键和唯一索引:进行修改,删除,添加(alter table 表名 add primary_key)】
【自增长auto_increment用于描述主键。相当于主键约束的更加一层约束】

【注意unsigned的使用不是列约束,而是类型的一部分。unsigned理解成一种数据类型指定即可】

mysql数据的类型以及字段的约束问题【重点】