​ 数据库约束【mysql】

数据库约束

约束就是让数据库帮助程序员更好的检查数据是否正确!

 1、not null 

NOT NULL指定某列不能存储NULL值

 

 2、unique

UNI保证某列的每行必须有唯一的值

 

         数据库是如何判断这条记录是重复的,先查找再插入,如果没有重复的就插入,重复了不允许插入。

        约束是可以组合在一起使用的,同时加上not null和unique      

  PRI = primary key4

主键约束就是not null和unique

 主键也同样是在插入记录的时候先查找再插入的

                正因为主键和unique都有先查询的过程,mysql就会默认给primary key 和 unique 这样的列,自动添加索引来提高查询的速度

  1. 实际开发中,大部分的表一般都会带一个主键,主键往往是一个整数表示的id
  2. 在mysql中,一个表里只能有一个主键,不能有多个
  3. 虽然主键不能有多个,mysql允许把多个列放到一起共同作为一个主键(联合主键
  4. 主键另外一个非常常用的方法,就是使用mysql自带的"自增主键"作为主键的值,

  插入id的时候,可以手动指定,也可以不动手指定(null),则会有mysql自动生成。

当mysql的数据量比较小,所有的数据都在一个mysql服务器上时,自增主键是可以很好工作的。

如果mysql的数据量很大,一台主机放不下,就需要进行分库分表,使用多个主机来进行存储了。本质上就是把一张大表分成多个小表,每个数据库服务器分别只存储一部分数据。

 3、default

 default 规定没有给列赋值时的默认值

 

file:///C:/Users/jinchunyi/Desktop/1107_mysql.png 

 4、foreign key 

foreign key 外键约束,针对两个表之间产生的约束

         此处外键约束的含义就是要求student里的classId务必要在class表的id列中存在。

        学生表中的数据要依赖班级表的数据,班级表的数据要对学生表产生约束力(父亲对孩子有约束力),此处起到约束作用的班级表就叫做父表,被约束的表叫做子表

        外键约束是父表约束子表,但实际上子表也在约束父表。

        我们试图删除class表中id为1的记录,发现删除失败,因为id为1的被子表引用了。

        id为3的没有被子表引用,可以删除

        如果想删除,那就需要先删除子表,再删除父表

        创建外键约束时,一定是先创建父表再创建子表

数据库实体的关系:

1、一对一

教务系统中,一个学生对应一个账号

  1. 把学生和账号放到同一个表里
  2. 学生和账号放在不同的表里,相互关联

2、一对多

教务系统中,班级和学生的关系

学生和班级放在不同的表里,相互关联

3、多对多

教务系统中,课程和学生的关系

三张表:

 4、没关系

如果两个实体往上述三个关系中都套不进去,就是没关系

如何通过关系建表:

  1. 找实体,给每个实体都安排个表(需求中的关键字)
  2. 明确实体的关系(往固定造句格式中套)
  3. 根据这些关系使用固定的方法来建表
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值