创建表约束
--create table student (id int primary key,
name VARCHAR(20) not null,
address VARCHAR(20) default '北京'
);
1.1.设置默认值default''
--default:可以设置默认值,允许为空,也可以插入其他值
1.2.非空约束(not null)
--必须赋值,不能赋空值。
1.3.唯一(unique)
--值是唯一的,值不能重复,但可以设置多个null值。一般用于是id。
1.4.主键(非空+唯一)primary key
--通常情况下,每张表都会设置一个主键,用于标记表中每条记录的唯一性
--建议不要选择表包含业务含义的字段作为主键,建议给每张表设计一个非业务含义的id字段。
1.5.自增长(auto_increment)
--可以不用赋值,会随着添加数据,自增。
1.6.零填充(zerofill)
--id 前填充零。列如:id int(4); 0001 0002
1.7. 外键约束(forein key())另张表:外键格式:表名+id
--声明一个外键约束
teacherId int
constraint student_teacher_fk forein key(teacherId) references student(id);
外键名称 外键约束 外键 参考表(参考字段)
--注意:
-约束的其他表的叫主表,被约束的叫副表,外键设置在副表中。
-当有了外键约束,添加数据的顺序:先添加主表数据,再添加从表数据。
-当有了外键约束,修改数据的顺序:先修改从表数据,再修改主表数据。
-当有了外键约束,删除数据的顺序:先删除从表数据,再删除主表数据。
数据冗余高怎么办?
- 解决:将冗余的字段放到一张独立的表中,注意使用外键约束。
1.8. 级联操作
--级联修改:(on update cascade)
--级联删除:(on delete cascade)
teacherId int
constraint student_teacher_fk forein key(teacherId) references student(id) on update cascade on delete cascade;
外键名称 外键约束 外键 参考表(参考字段) 级联修改 级联删除
update student set id=5 where id=4; --将id为4 的都修改成5.
delete from student where id =1;