详解MySQL中default的使用
NULL和NOTNULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。
NULL和NOTNULL修饰符
可以在每个字段后面都加上这NULL或NOTNULL修饰符来指定该字段是否可以为空(NULL),
还是说必须填上数据(NOTNULL)。MySQL默认情况下指定字段为NULL修饰符,如果一个字段指定为NOTNULL,
MySQL则不允许向该字段插入空值(这里面说的空值都为NULL),因为这是“规定”。
/* 创建好友表,其中id,name,pass都不能为空 */ createtablefriends( idint(3)notnull, namevarchar(8)notnull, passvarchar(20)notnull ); /* 错误提示,id列不能为空 #1048-Column'id'cannotbenull */ INSERTINTOfriends VALUES( NULL,'simaopig','simaopig' );
但是在自增列和TIMESTAMP字段中,这个规则并不适用。
向这些字段中插入NULL值将会导致插入下一个自动增加的值或者当前的时间戳。
DEFAULT修饰符
可以使用DEFAULT修饰符为字段设定一个默认值。
当插入记录时,您老人家忘记传该字段的值时,MySQL会自动为您设置上该字段的默认值。
/* 创建im表,将name字段设置为默认值'QQ' */ createtableim( idint(3)notnull, namevarchar(25)notnulldefault'QQ' ); /* 插入数据,不传name字段的值,MySQL会为其设置默认值的 您运行的SQL语句已经成功运行了。 */ INSERTINTOim(id,name)VALUES(2,'MSN'); INSERTINTOim(id)VALUES(3); SELECT*FROMimLIMIT0,30; /* idname 2MSN 3QQ */
如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOTNULL自动设置默认值。
如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。
如果是NOTNULL字段,MySQL对于数值类型插入0,字符串类型插入空字符串,
时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。
AUTO_INCREMENT修饰符
AUTO_INCREMENT修饰符只适用于INT字段,表明MySQL应该自动为该字段生成一个数
(每次在上一次生成的数值上面加1)。对于主键(稍候介绍),这是非常有用的。
因为其允许开发者使用MySQL为每条记录创建唯一的标识符。
/* 您运行的SQL语句已经成功运行了。(查询花费0.0170秒) */ CREATETABLEitems( idint(5)NOTNULLAUTO_INCREMENTPRIMARYKEY, labelvarchar(255)NOTNULL ); /* 插入三条数据,不指定id,采用默认值,加上AUTO_INCREMENT 您运行的SQL语句已经成功运行了。 */ insertintoitems(label)values('xxx'); insertintoitems(label)values('yyy'); insertintoitems(label)values('zzz'); /* 全显示出来,看一下数据,注意看id的变化 */ select*fromitems; /* idlabel 1xxx 2yyy 3zzz */
MySQL表中只能有一个AUTO_INCREMENT字段,而且这个字段必须被定义为键。
除了字段的约束,MySQL也允许表级的约束,比如主键和外键、索引和惟一约束。
总结
以上所述是小编给大家介绍的MySQL中default的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!