iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【MySQL】 MySQL的增删改查(进阶)--壹
  • 231
分享到

【MySQL】 MySQL的增删改查(进阶)--壹

mysqlandroid数据库约束 2023-09-23 13:09:39 231人浏览 独家记忆
摘要

文章目录 🛫数据库约束🌴约束类型🎋NOT NULL约束🎍UNIQUE:唯一约束🌳DEFAULT:默认值约束&#x

文章目录

本节目标:

🛫数据库约束

🌴约束类型

  • NOT NULL - 指示某列不能存储 NULL 值。

  • UNIQUE - 保证某列的每行必须有唯一的值。

  • DEFAULT - 规定没有给列赋值时的默认值。

  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

  • CHECK - 保证列中的值符合指定的条件。对于Mysql数据库,对CHECK子句进行分析,但是忽略CHECK子句

🎋NOT NULL约束

创建表时,可以指定某列不为空

比如我们先创建一个student表,我们对里面的id列进行约束为不能为null;

创建如下:

DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL,sn INT,name VARCHAR(20),qq_mail VARCHAR(20));

查看表结构如下:
在这里插入图片描述
我们可以看到id行列是显示不可为null的

接下来我们插入数据试一下
在这里插入图片描述
结果也是意料之中,插入null数据时就直接报错了

🎍UNIQUE:唯一约束

指定sn列为唯一的、不重复的

这里我们重新设置一下表结构,对sn进行约束为唯一约束

DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL,sn INT UNIQUE,name VARCHAR(20),qq_mail VARCHAR(20));

我们对表结构进行查询可以看到,sn列发生了明显变化
在这里插入图片描述
接下来我们依旧插入数据进行测试
在这里插入图片描述
发现如果sn相同就会进行报错

🌳DEFAULT:默认值约束

指定插入数据时,若列为空,则为默认值

我们重新设置一下student表,对name进行默认值约束,若为null,则为默认值:遇事问春风乄

设置如下:

-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL,sn INT UNIQUE,name VARCHAR(20) DEFAULT '遇事问春风乄',qq_mail VARCHAR(20));

我们查看表结构后发现
在这里插入图片描述
Default列的name行不再为null,而为我们设置的默认值

我们来进行测试一下,插入一个name为null的数据
在这里插入图片描述
我们看到查询后name为默认值

注意事项:只适用于指定列插入数据,且该列不是受约束的列

🎄PRIMARY KEY:主键约束

指定列为主键

主键 是关系表中记录的唯一标识

使用主键应注意以下几点:

  • 每个表只能定义一个主键。

  • 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。

  • 一个字段名只能在联合主键字段表中出现一次。

  • 联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则。

这里我创建以下student表

-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT PRIMARY KEY,sn INT UNIQUE,name VARCHAR(20) DEFAULT '遇事问春风乄',qq_mail VARCHAR(20));

表结构如下:
在这里插入图片描述
我们发现上述表格可以理解为:主键是 NOT NULL 和 UNIQUE 的结合

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1
使用如下:

-- 主键是 NOT NULLUNIQUE 的结合,可以不用 NOT NULLid INT PRIMARY KEY auto_increment

注意事项:是当前表里使用的最大值+1

🍀FOREIGN KEY:外键约束

外键用于关联其他表的主键或唯一键

语法如下:

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

mysql 外键约束(FOREIGN KEY是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西瓜,其它的水果都是不能购买的。

主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

  • 必须为主表定义主键。

  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

  • 外键中列的数目必须和主表的主键中列的数目相同。

  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

接下来我们设计一个案例如下:

  • 创建班级表classes,id为主键
DROP TABLE IF EXISTS classes;CREATE TABLE classes (id INT PRIMARY KEY auto_increment,name VARCHAR(20),desc1 VARCHAR(100));
  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

表结构如下:
在这里插入图片描述

使用注意事项放在上面了,这里博主偷个懒,就不演示了;

🌲CHECK约束

CHECK约束添加规则

  1. CHECK 约束用于限制列中的值的范围。

  2. Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。

  3. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

  4. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

使用如下:

drop table if exists test_user;create table test_user (id int,name varchar(20),sex varchar(1),check (sex ='男' or sex='女'));

表结构如下:
在这里插入图片描述
表结构没有什么变化,我们再来看看添加数据吧

添加数据如下:
在这里插入图片描述
查询如下:
在这里插入图片描述
当我们输入其他值时
在这里插入图片描述
就会爆出错误!

🛬表的设计

大概可以分为以下三种

🚩一对一

在这里插入图片描述

🚩一对多

在这里插入图片描述

🚩多对多

在这里插入图片描述

总结

关于《【Mysql】 MySQL的增删改查(进阶)–壹》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

来源地址:https://blog.csdn.net/m0_71731682/article/details/133138777

您可能感兴趣的文档:

--结束END--

本文标题: 【MySQL】 MySQL的增删改查(进阶)--壹

本文链接: https://www.lsjlt.com/news/416467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作