表的约束类型

空属性约束

mysql有空属性和非空属性:null和not null

数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算

所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”

-- 创建一个名为students的表
create table students (
    student_id int not null,//设置not null非空字段
);

此时如果插入数据时没有给student_id 插入,就会报错。

列描述

comment,没有实际含义,专门用来描述字段,会根据表创建语句保存

create table students (
 -> name varchar(20) not null comment '姓名',
 -> age tinyint unsigned default 0 comment '年龄',
 -> sex char(2) default '男' comment '性别'
 -> );

通过desc查看不到注释信息,通过show可以看到:

show create table students \G

使用 \G 后,结果将以垂直方式显示,每列的名称和值将各占一行:

在这里插入图片描述

zerofill

它用于在显示数值类型的列时,将数值前面的空位用零填充,以达到指定的位数。

这时候筛选出来的就是填充后的数字,若想看到真实存储的可以用:

select age , hex(age) from students;

默认值(Default)

某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值

-- 创建一个名为students的表
create table students (
    student_id int default 0,//默认值
    sex char(2) default '男'
);

给一个已创建的表修改默认值:

alter table students alter column student_id set default '2';

主键约束

可以想象一个学生信息表,其中每个学生都有一个唯一的学生ID。这个学生ID就可以作为主键。主键约束防止两个学生具有相同的学生ID,确保每个学生都有一个唯一的身份。

总而言之,主键约束就是一种规则,要求表中的某个列(或多个列)具有唯一且不为空的值,以标识和区分表中的每个记录。

不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型

创建表的时候添加主键约束:

-- 创建一个名为students的表
create table students (
    student_id int primary key,//主键约束
    name varchar(50),
    age int
);

创建表最后再添加:

create table students (
    student_id int ,//主键约束
    name varchar(50),
    age int
    primary key(student_id)
);

给创建好的表添加主键:

alter table students add primary key(student_id );

删除主键:

alter table students drop primary key ;

复合主键

mysql> create table students (
-> id int unsigned,
-> course char(10) comment '课程代码',
-> primary key(id, course) // id和course为复合主键
-> );

创建表后插入复合主键:

alter table students add primary key(id,class);

自增长

auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

比如新创建的auto_num:

在这里插入图片描述

可以看见auto_num并没有插入数据,但他会随着id,class的列增长而自增长。

唯一键

如果主键是每个人的身份证,那唯一键就可以认为是准考证号

唯一键更多的是针对某一种业务,比如上述例子就是在“考试”这个业务。

mysql> create table students (
-> id char(10) unique comment '学号,不能重复,但可以为空',
-> name varchar(10)
-> );

唯一键不能重复,但是可以为null值

外键

外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接

外键是针对从表来说的:

创建stu的外键,这个外键是myclass的主键(直接添加):

create table myclass (
	class_id int primary key,
	name varchar(30) not null comment'班级名'
);
create table stu (
	stu_id int primary key,
	name varchar(30) not null comment '学生名',
	class_id int,
	foreign key (class_id) references myclass(id)
);

也可以创建以后再进行添加:

alter table test add foreign key (class) references students(id);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

久菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值