【数据库】数据库约束

系列文章目录

🌈座右铭🌈:人的一生这么长、你凭什么用短短的几年去衡量自己的一生!

💕个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C++,自顶向下看Java-CSDN博客

❤️相关文章❤️:清灵白羽 漾情天殇-CSDN博客


目录

系列文章目录

前言

一、NULL约束

二、UNIQUE约束

三、DEFAULT:默认值约束

四、PRIMARY KEY:主键约束

五、FOREIGN KEY:外键约束

六、CHECK约束:

总结


前言

NOT NULL  :  指示某列不能存储 NULL 值。
UNIQUE  :  保证某列的每行必须有唯一的值。
DEFAULT  :  规定没有给列赋值时的默认值。
PRIMARY KEY  : NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY  : 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK 保证列中的值符合指定的条件。对于 MySQL 数据库,对 CHECK 子句进行分析,但是忽略CHECK子句。

一、NULL约束

        我们在创建表的时候可以指定某列不能为空,如图所示:

        我们在创建这个表单的时候可以指定这个学生表当中的学号信息不能为空,我们可以查看表单的结构如下图:

        我们可以非常清晰地发现表单NULL属性中id一栏的值为NO,也就是说id这个字段值不能为空。我们可以对这个表单进行插入操作。

        但是如果这个时候我们在插入数据的时候没有插入id值的话,系统就会报错,如下图所示:

        这个时候系统就会提示我们,id这个字段不可以为空。


二、UNIQUE约束

        当我们创建表单的时候可以指定某一字段必须是唯一值,不可以重复,例如某些重要的识别信息,像身份证号之类的,我们可以进行如下操作:

        我们在这里可以重建一个学生表并且加入身份证号字段,并且设定身份证号不可以出现重复的信息,当我们查看表单结构的时候可以发现:

        在IdCode字段对应的Key这一栏的信息标有UNI字样,也就意味着这个字段只能是唯一的。我们可以对这张表单进行插入操作如图所示:

        当我们试图将重复的idCode插入表单的时候可以发现:

        系统阻止了我们这一操作,并且向我们发出警告。


三、DEFAULT:默认值约束

        我们在插入一些数据的时候,有时候为了提高效率可以为这个字段设置默认值,操作如下图所示:

        我们首先可以构建这样一张表单,并且为其设置字段信息以及约束,当我们查看表单结构的时候可以发现:

        在默认值这一栏当中,系统为我们显示出了相关字段的默认值是什么样的内容,接下来我们可以试图对它进行插入操作,如图所示:

        这个时候我们可以发现,即使我们没有对姓名这个字段的信息进行填充,系统也按照我们的意愿为我们写好了默认值。


四、PRIMARY KEY:主键约束

        对于主键我们需要记得关于他的两个最重要的性质唯一性和非空性,对于整数类型的主键,通常搭配自增长auto_increment 来使用,插入数据时对应的字段如果不给值的时候,使用同一字段最大值+1作为他的主键(这段概念如果看不懂,直接往下看操作一定能看懂)。操作如下:

        这个时候我们就定义好了一个主键,这个时候我们可以插入数据来观察:

        这个时候如果我们觉得自己手动添加id主键过于麻烦我们可以结合自增长语句来搭配使用,如下图所示:

        我们将原来的表格删除,重新建立一张新表,在这张新表单当中使用自增长来创建主键。当我们插入数据的时候可以发现:

        大家可以发现,我们没有输入主键但是系统为我们自动从下标0开始输入,那么如果我们此时进行这样一个操作:

        这个时候我们再一次使用自增长构建主键时会发现:

        这就是自增长的构建逻辑,我相信大家通过我的演示也已经明白了。


五、FOREIGN KEY:外键约束

        外键用于关联其它表的主键或者是唯一键,我简单解释一下为什么我们需要外键,例如有两张表一个学生表一个班级表,那么班号这个主键或者是唯一键就可以作为是这个学生表的外键,使用这个外键可以使得每一个学生都能对应到一个相应的班级,这样两张表就可以建立起联系。

        首先我们先建立一张班级表:

        这个表设有两个字段班号和班主任老师,班号作为主键,班主任老师不能为空。我们可以接着创建另外一张学生表单。

        这里我们就构建好了两张表单之间的联系,建立外键的语法格式有一些繁琐,请大家熟记:

create table student(
    id int primary key auto_increment,
    idCode int unique,
    name varchar(20) default 'unkown',
    classid int,foreign key(classid) references class(classid)
    
    //这里的第一个classid是学生表自己的班号,
第二个classid是班级表里面的classid,这两个字段
名字可以不同,但是为了方便,两张表里面的班号我都命名为classid。


六、CHECK约束:

        我直接给大家写一个案例大家就明白它应该怎么用了:

        这个大家了解即可,因为Mysql不会执行它,所以这个知识了解即可。


总结

        数据库约束就为大家讲解结束了,能够帮助到大家就是对我最大的鼓励。下一篇文章为大家讲解数据库进阶的内容以及JDBC编程,我之前对数据库的基本操作已经有了一些系统地讲解,又需要的小伙伴请自行查阅!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清灵白羽 漾情天殇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值