创建表的完整性约束
宽度:
对存储数据的限制
char(1) 只能存一个字符
如果超了 mysql会自动帮你截取
1 插入的时候 mysql会自动截取 (浪费资源)
2 会直接报错(mysql严格模式)提示无法存储:Data too long for column ‘name‘ at row 1 (推荐)
使用数据库的准则 能尽量少让数据库干活就尽量少干活
约束条件初识>>> null 与 not null 相当于None
alter table t5 modify name char not null;
not null该字段不能插空
类型和中括号内的约束
类型约束的是数据的存储类型
而约束是基于类型之上的额外限制
字段类型 整型类型
TINYINT SMALLINT MEDIUMINT INT BIGINT
有符号 有正负
TINYINT
默认是否有符号 默认是带有符号的(-128,127)
超出限制会如何 超出之后只会存最大值或者最小值
create table t6(id TINYINT);
有符号修改为无符号 alter table 表名 modify 字段名 TINYINT unsigned ;
char后面的数字是用来限制存储数据的长度的
特例:只有整型后面的数字不是用来限制存储数据的长度 而是用来控制展示的数据的位数 (符号也算一位 加上符号最大11位 )
int(8) 够/超8位有几位存几位,不够8位空格填充
强调:**对于整型来说,数据类型后的宽度并不是存储限制,
而是显示限制,所以在创建表时,
如果字段采用的是整型类型,完全无需指定显示宽度, 默认的显示宽度,足够显示完整当初存放的数据
只要是整型 都不需要指定宽度 因为有默认的宽度 足够显示对应的数据
修改约束条件 不够8位的情况下 用0填充
zerofill 0填充多余的位数
not null 不能为空
unsigned 无正负符号
zerofill 0填充多余的位数
原文地址:https://www.cnblogs.com/lddragon/p/11379368.html