MYSQL--数据库约束

1.数据库约束

1.1约束类型

  • not null: 指示某列不能存储null值;
  • unique: 保证某列的每行必须有唯一的值;
  • default: 规定没有给列赋值时的默认值。
  • primary key: not null和unique的结合。确保某列(或两个列多个列的结合)有唯一的标识,有助于更容易更迅速的找到表中的一个特定的记录。
  • foreign key: 保证一个表中的数据匹配到另一个表中的值的参照完整性。
  • check: 保证列中的值符合指定的条件,对于mysql的数据库,对check子句进行分析,但是忽略了check子句。

1.2 null约束

创建表的时候,我们可以指定某些列不能为空。

create table student(
id int not null,
sno int,
name varchar(20)
);

此时插入数据时,若在not null时不能插入null值,插入null值时,显示出错。
在这里插入图片描述

1.3 unique:唯一约束条件

指定sno为不重复的,唯一的值

create table student(
id int not null,
sno int unique,
name varchar(20)
);

在这里插入图片描述
此时在unique的值插入相同的值,此时就会出现报错。

1.4 default:默认值约束

指定插入数据时,name列为空,默认值为tom。

create table student(
id int not null,
sn int unique,
name varchar(20) default 'tom',
qq_mail varchar(20)
);

在这里插入图片描述
default指定的默认值,会在按列插入时生效(按列插入但是未被指定的列,就是按照默认值来插入),如果手动的给某一列插入null,就不会触发default。
在这里插入图片描述

1.5 primary key

设计表的时候,一般都需要指定一个主键,主键就是一条记录的唯一身份标识。
对于一张表来说,主键只能有一个有一个。

create table student(
id int not null primary key,
sn int unique,
name varchar(20) default 'tom',
qq_mail varchar(20)
);

在这里插入图片描述
在这里需要注意的是:
1)主键不能为空,
2)主键不能重复。
对于整数类型的主键,常配搭自增长 auto_increment来使用。插入数据对应字段不给值时,使用最大值+1.
在这里插入图片描述

1.6 foreign key:外键约束

外键用于关联其他表的主键或唯一键,语法为:

 foreign key(字段名) references 主表()

外键的用法:

create table class(
id int primary key,
name varchar(20)
);

create table student(
id int primary key auto_increment,
classId int,
name varchar(20),
foreign key (classId) references class(id)
);

说明: 外键约束就是要求当前表里面的classId字段的值,必须在class表中的id的出现过才可以(此时要求id得时class的主键)
注意: 外键约束也会影响到数据的修改和删除,如果class表中的id已经被student 中的classId用到了,那么就不能删除class表中对应的记录,更不能删除整个class表。

2.表的设计

设计数据库的基本思路:
从具体的问题

2.1一对一

在这里插入图片描述
每个人都只拥有一个身份证,所以设计这种表,用到的是一对一的设计。

2.2一对多

在这里插入图片描述
一个班级可以有多个学生,所以在此处就是通过把班级和学生通过这种1对多的关系就建立起来了。

2.3多对多

在这里插入图片描述
一个学生可以选择多个课程,一个课程也可以被多个学生选择,因此此处是通过多对多的关系把学生和课程建立起来。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值