6:属性约束

1. 表的约束:

  • 通过约束,来规范插入表中的数据时符合预期的。如果插入的数据不符合规范,会插入失败,所以说约束相当于倒逼程序员插入正确的数据。

  • 反过来可以得出:只要被插入到表中的数据,一定是符合规范的,以此来确保数据的完整性。

2. 空属性(null):

  • 有两个值:null和not null。默认字段属性为空(yes),由于null不能参与运算,所以尽量保证字段的属性不为空。

  • 字段属性为null,插入一条数据但是不向该字段插入值,那该字段的值会被默认设置为null。

  • 全插入时,即是字段可以为空,也要插入一个null用来标识。

3. 默认值(default):

  • 相当于缺省值,想要为某个字段设置缺省值,在创建字段时,使用default+缺省值即可。

  • 在插入数据时,如果用户传入数据,就使用用户的,否则就使用默认值。

  • 如果一个字段不设置not null,且不自己设置default值的话,数据库会自动优化该字段,为其加上default null属性,这就是我们在不向not null字段插入数据,但是使用select查看时,可以看到值为null的原因。

4. 列描述(comment):

  • 相当于对字段的描述信息,相当于注释。

  • 查看comment,配合show create table查看。

5. zerofill:

  • 一个用前导0填充宽度的约束,在mysql8之后就被废弃了,zerofill属性只在查看时格式化,不会影响实际存储,实际存储时依然存储的是一个整数。

  • 只能用于数值类型,不能用于其它类型。

  • 设置zerofill属性的字段,会被mysql自动添加unsigned属性修饰。

  • int类型后面括号中的数字代表显示宽度,括号中的值并不影响数据范围和存储大小,它只有一个作用就是配合zerofill来控制显示时的宽度。

6. 主键(primary key):

  • 一张表只能有一个主键,主键对应的字段的每个元素都是唯一的,主要作用是高效索引。

  • 且主键不能为空,如果在创建字段时没有指定主键字段为非空,那么数据库会自动为其加上非空属性。

  • 主键对应的字段的类型通常是整数类型。

alter table xxx drop primary key; // 删除主键:基于表中只有一个主键,可以之间通过表名删掉该表的主键
alter table xxx add primary key(字段1); //建表后添加主键:将xxx表中的字段1设置为主键
  • 一张表只能有一个主键,但是不意味着主键只能在一列上,主键可以在多列上,在多列上的主键被称为复合主键。

primary key(字段1,字段2); 
// 将字段1和字段2设置为复合主键,单独的字段1或者字段2可以重复,但是两者的组合不能重复,

7. 自增长(auto_increment):

  • 数据库的一种自动编号机制,主要作用于主键,在插入数据时会自动生成一个唯一、递增的值。

  • 默认从1开始,默认步长为1。删除数据后,不会复用已删除的ID。新插入的数据的ID从最大ID向后加1。

  • 仅适用于整数类型,推荐使用bigint。想要加自增长约束的字段,key值一栏必须要有值,一张表最多有一个自增长。

  • 使用show create table可以查看当前自增长ID。

create table xxx( n1 int primary key auto_increment )auto_increment=n;
//可以在表外设置自增长的起始ID。
alter table xxx auto_increment=n; // 建表之后修改自增长ID

8. 唯一键(unique):

  • 用于确保值不重复的约束,类似于主键,但是可以为空(null)。

  • 一张表中可以有若干个唯一键,但是只能有一个主键。

9. 外键:

  • 用于建立表与表之间关系的一种约束,外键设置在从表上,用于关联主表的主键或者唯一键。

foreign key (从表字段) references xxx(主表字段) // 建表是添加外键。
alter table 从表 ADD constraint fk_dept foreign key (dept_id) references departments(dept_id);
  • 从表插入数据时,根据外键约束,不能插入一个主表中不存在的值。比如从表的id字段通过外键关联主表的id字段,主表的id只有1和2,那么从表插入数据时,就不能在从表的id字段插入除1和2以外的值。

  • 根据外键约束,如果从表有数据关联到主表,那么主表的对应数据不能直接删除,要先删除从表的关联数据后才能删除主表的数据。

  • 可以为外键取名也可以不取名,如果不取名,编译器会自动生成一个名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S+叮当猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值