四. 非空约束 not null
只能指定一个单字段为非空约束,没有联合字段做为非空约束。 可以让多个字段都为非空约束。
列名 数据类型 not null [默认值]
四.一 创建非空约束
活学活用,将前面的主键约束再练习一遍。
create table n7( id int(11) primary key, name varchar(20) not null );
注意,只有这一种写法。 没有 not null (name) 作为表级别约束条件的, 只能放在列级别约束。
四.二 演示非空约束
1 . name有值, 正常插入
insert into n7(id,name) values(1,'两个蝴蝶飞');
2 . name 没有值 或者插入值为 null
insert into n7(id) values(2);
insert into n7(id,name) values(2,null);
五. 唯一约束 Unique
可以为空,MySQL也允许其他的列也可以为null.这一点不像SQL Server 数据库。
五.一 创建列约束条件的 唯一约束
命令:
列名 数据类型 unique
创建语句:
create table u8( id int(11) primary key, name varchar(20) unique );
五.二 创建表约束条件的 唯一约束
也可以创建表级别的唯一约束
[constraint 唯一约束名] unique (列名)
创建语句:
create table u9( id int(11) primary key, name varchar(20), unique (name) );
五.二 演示唯一约束
以 u8 表为例。
1 .先插入一条数据, id为1, name为两个蝴蝶飞
insert into u8(id,name) values(1,'两个蝴蝶飞');
2 . 再创造一条数据, id为3, name仍然为两个蝴蝶飞。 name 重复了。
insert into u8(id,name) values(3,'两个蝴蝶飞');
3 . 但可以插入一条空的值, 如name 的值插入为 null
insert into u8(id,name) values(4,null);
但 null的值,可以有多个。 再插入 id为5,名称仍然为null 的。
insert into u8(id,name) values(5,null);
查询一下: select * from u8;
说明,唯一约束可以插入多个 null的值,并不是唯一的null值。
六. 默认约束 default
命令:
列名 数据类型 default 默认值
默认约束是,如果不填入这个属性值,就用默认值代替,如果填入了,哪怕填入的值是空,也用填入的值。
六.一 创建默认约束
令 性别默认是 男.
create table d10( id int(11) primary key, name varchar(20), sex varchar(10) default '男' );
六.二 演示默认约束
1 . 插入一条正常的数据, 性别是男。
insert into d10(id,name,sex) values(1,'两个蝴蝶飞','男');
2 . 插入一条正常的数据,性别是女.
insert into d10(id,name,sex) values(2,'精灵妹','女');
3 . 插入一条数据,不指定性别。
insert into d10(id,name) values(3,'老蝴蝶');
4 . 插入一条数据,性别为null 值。
insert into d10(id,name,sex) values(4,'岳泽霖',null);
5 . 查询刚才的数据 select * from d10;