丽水做网站公司,虚拟主机网站500错误,国内有多少家做网站的企业,中宁网站建设文章目录 约束#xff08;constraint)列级约束和表级约束给约束起名字#xff08;constraint)非空约束#xff08;no null)检查约束#xff08;check)唯一性约束 (unique)主键约束 (primary key)主键分类单一主键复合主键主键自增 #xff08;auto_increment) 外键约束外什… 文章目录 约束constraint)列级约束和表级约束给约束起名字constraint)非空约束no null)检查约束check)唯一性约束 (unique)主键约束 (primary key)主键分类单一主键复合主键主键自增 auto_increment) 外键约束外什么用外键级联删除级联更新级联置空注意点   约束constraint) 
列级约束和表级约束 
列级约束 
直接在字段后面是列级约束
create table test (id int 约束1 约束2.....,name varchar(20) 约束1 约束2....
);表级约束 
定义完再约束是表记约束。比如联合不能重复的时候就要用到
create table test (id int,name varchar(20),//这里表示 id 和 name联合不能重复 unique(id, name)
);给约束起名字constraint) 
create table test (id int,name varchar(20),//这里给 unique 起别名方便删除 constraint 别名 unique(id, name)
);约束的描述信息在information_schema 库中的 table_constraints表中 非空约束no null) 
create table test (id int.name varchar(255) not nul;
);
//表示 name 字段不能为空检查约束check) 
create table test (id int,name varchar(255),age int check(age  18)
);
//表示 age 必须 大于 18唯一性约束 (unique) 
create table test(no int,name varchar(100),email varchar(100), unique(name, email)
);
//把 email 和 name 设置成联合唯一性的不能插入重复的除了NULL主键约束 (primary key) 主键约束的字段不能为NULL并且不能重复。  任何一张表都应该有主键没有主键的表可以视为无效表。  主键值是这行记录的唯一标识。在数据库表中即使两条数据一模一样但由于主键值不同我们也会认为是两条完全的不同的数据。 主键分类 根据字段数量分类 单一主键1个字段作为主键【建议】复合主键2个或2个以上的字段作为主键 根据业务分类 自然主键主键和任何业务都无关只是一个单纯的自然数据【建议】业务主键主键和业务挂钩例如银行卡账号作为主键  单一主键 
create table test (uid int primary key,nno varchar(100) unique,name varchar(100) not null
)
//把 uid 设置为主键复合主键 
create table test (uid int,nno varchar(100) unique,name varchar(100) not null,primary key(uid, nno)
)
//把 uid 和 nno 设置成联合主键不建议使用 主键自增 auto_increment) 
主键自增既然主键值是一个自然的数字mysql为主键值提供了一种自增机制不需要我们程序员维护mysql自动维护该字段create table test (no int primary key auto_increment,name varchar(20)
);外键约束 
create table t_school( sno int primary key, sname varchar(255) 
); create table t_student( no int primary key, name varchar(255), age int, sno int, //constraint 是起别名foreign key...references 是外键constraint t_school_sno_fk foreign key(sno) references t_school(sno) 
);
//外键不一定是主键也可以是父表中具有唯一性的字段外什么用外键 图片来源动力节点 
这种情况比较浪费空间直接两张表然后设置外键 表一 图片来源动力节点 表二 图片来源动力节点 级联删除 
创建子表时外键可以添加on delete cascade这样在删除父表数据时子表会级联删除。谨慎使用。create table t_student( no int primary key, name varchar(255), age int, sno int, constraint t_school_sno_fk foreign key(sno) references t_school(sno) on delete cascade 
);###删除约束
alert table t_student drop foreign key t_student_sno_fk;
###添加约束
alert table t_student add constraint t_student_sno_fk foreign key(sno) references t_school(sno) on delete cascade; 级联更新 
创建子表时外键可以添加on update cascade 这样在修改父表数据时子表会级联修改谨慎使用。create table t_student( no int primary key, name varchar(255), age int, sno int, constraint t_school_sno_fk foreign key(sno) references t_school(sno) on update cascade 
);级联置空 
创建子表时外键可以添加on delete set null父数据设置成 null 子表会级联设置为 null 谨慎使用。create table t_student( no int primary key, name varchar(255), age int, sno int, constraint t_school_sno_fk foreign key(sno) references t_school(sno) on delete set null 
);注意点 添加了外键约束的字段中的数据必须来自其他字段不能随便填。  假设给a字段添加了外键约束要求a字段中的数据必须来自b字段b字段不一定是主键但至少要有唯一性。  外键约束可以给单个字段添加叫做单一外键。也可以给多个字段联合添加叫做复合外键。复合外键很少用。 a 表 如果引用 b 表 中的数据可以把 b表 叫做 父表 把 a 表 叫做 子表。 创建表时先创建父表再创建子表。插入数据时先插入父表在插入子表。删除数据时先删除子表再删除父表。删除表时先删除子表再删除父表。 插入就先父删除先子