MySQL中的字段约束 null、not null、default、auto_increment
在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。今天我们来看一下MySQL的字段约束:NULL和NOT NULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。
NULL 和 NOT NULL 修饰符:
可以在每个字段后面都加上这NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),还是说必须填上数据(NOT NULL)。MySQL默认情况下指定字段为NULL修饰符,如果一个字段指定为NOT NULL,MySQL则不允许向该字段插入空值(这里面说的空值都为NULL),因为这是“规定”。
create table friends (
id int(3) not null,
name varchar(8) not null,
pass varchar(20) not null
);
INSERT INTO friends
VALUES (
NULL , 'simaopig', 'simaopig'
);
但是在自增列和TIMESTAMP字段中,这个规则并不适用。向这些字段中插入NULL值将会导致插入下一个自动增加的值或者当前的时间戳。
DEFAULT 修饰符:
可以使用DEFAULT修饰符为字段设定一个默认值。当插入记录时,您老人家忘记传该字段的值时,MySQL会自动为您设置上该字段的默认值。
create table im (
id int(3) not null,
name varchar(25) not null default 'QQ'
);
INSERT INTO im( id, name ) VALUES ( 2, 'MSN' ) ;
INSERT INTO im( id ) VALUES ( 3 ) ;
SELECT * FROM im LIMIT 0 , 30;
如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。如果是NOT NULL字段,MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。
AUTO_INCREMENT 修饰符:
AUTO_INCREMENT修饰符只适用于INT字段,表明MySQL应该自动为该字段生成一个数(每次在上一次生成的数值上面加1)。对于主键(稍候介绍),这是非常有用的。因为其允许开发者使用MySQL为每条记录创建唯一的标识符。
CREATE TABLE items(
id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
label varchar( 255 ) NOT NULL
);
insert into items(label) values ('xxx');
insert into items(label) values ('yyy');
insert into items(label) values ('zzz');
select * from items;