1. NOT NULL
非空约束,指定某列不能为空;
设置严格模式:
不支持对not null字段插入null值
不支持对自增长字段插入null值
不支持text字段有默认值
直接在mysql中生效(重启失效):
mysql>set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
配置文件添加(永久有效):
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
默认值设置语句:
default 默认值
2. UNIQUE
唯一约束,不能重复,指定某列或者几列组合不能重复,但是null能写入多次
联合唯一:
语法:unique(ip,port),表示两个行 数据对应的ip和port不能完全相同。
3. PRIMARY KEY
主键,指定该列的值可以唯一地标识该列记录;
第一个被定义为非空+唯一的那一列会被定义为这张表的主键;
一张表只能定义一个主键;
可以通过primary key定义;
联合主键:primary key(ip,port),表示两个行数据对应的ip和port不能完全相同。(系统会在所定义的两个数据后面加上默认值 ’’ -–> > 一个空的字符串)
4. auto_increment
自增,只能对数字有效,自带非空约束;
至少是unique真的约束之后才能使用;
5. FOREIGN KEY
外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性
create table t1( id int primary key auto_increment, name char(12) not null, gender enum('male','female') default 'male', class_id int unsigned, foreign key(class_id) references class(cid) on update cascade on delete cascade )
on delete cascade 尽量不用
Cascade -->级联
foreign key(自己的字段) references 外表(外表字段)
外表字段必须至少“唯一”的