not null约束
- 一句话被not null约束的属性 限制的是在插入数据的时候不可以插入null值,其他值都可以。
default约束
create table tt122 (age int unsigned default 0);
- 被default修饰的属性 限制的是我们在插入数据的时候如果要进行省略某一列的话(就是插入的时候不插入这一列),如果被省略的这一列没有被default修饰了就会报错。因此被default修饰的列我们可以省略会使用默认值,没有被default修饰的列如果我们省略就会报错。
not null 与default
- not null作用在插入的时候,限制插入的值不可以为null
- default作用是告诉用户这一列可以省略不进行插入。
- 通常我们如果只加了not null约束,就不会加default约束,这样的话没有default约束,也就是说该列必须显示插入不可以省略该列,又因为有not null约束,你插入的值不可以为null。这样不就保证了我们插入数据的合法了吗。因此两者是相互补充的。
comment约束
- comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。类似与我们语言中的注释。
zerofill约束
create table t1 (age int unsigned);
- int后面有一个括号里面数值的意思就是显示的最大宽度。
- zerofill就是改变我们括号里面的值,这样我们在查表的时候,如果宽度小于我们zerofill限制的值,就会显示的话自动补零。如果大于我们zerofill限制的值,就正常显示。
主键约束
- 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
- 此外复合主键 就是多列和在一起作为一个主键。这没有违背一个表中只有一个主键。
案例:
create table tt13 (
id int unsigned primary key comment '学号不能为空',
name varchar(20) not null);
-
主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
-
当表创建好以后但是没有主键的时候,可以再次追加主键此时要确保你要加主键约束的那一列不可以有重复负责也会报错
alter table 表名 add primary key(字段列表)
- 删除主键
alter table 表名 drop primary key;
自增长
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
自增长的特点:
- 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
- 自增长字段必须是整数
- 一张表最多只能有一个自增长
- 可以看到我们创建表信息中记录了下次自增应该是多少。
- 查看上次插入的自增id值
select last_insert_id();
唯一键
- 唯一键可以理解为主键的缩小版,唯一键可以可以为null值,而主键不可以为null值。
- 在现实生活中例如身份证号,和我的学号都是唯一的。但是因为一个表中只有一个主键,为了让其他列的属性也保证唯一引入了唯一键。唯一键可以有多个。
外键
- 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
- 语法
foreign key (字段名) references 主表(列)
案列:
- 建立主键表
create table myclass (
id int primary key,
name varchar(30) not null comment'班级名'
);
- 建立从表
create table stu (
id int primary key,
name varchar(30) not null comment '学生名',
class_id int,
foreign key (class_id) references myclass(id)
);
- 外键约束:对于上面这个例子,约束就是不允许你在学生表中插入不存在的班级,不允许你在班级表中删除班级里面还有学生的班级。这样通过外键约束就可以保证我们逻辑的正确性。