MySQL中的字段约束 null、not null、default、auto_increment

在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。今天我们来看一下MySQL的字段约束:NULLNOT 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;
 
 

posted on 2017-06-08 21:19  baorant  阅读(8740)  评论(0编辑  收藏  举报

导航