MySQL的增删改查(进阶)--上

1. 数据库约束

1.1 约束类型

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

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

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

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

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

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

        下面将详细讲解一下以上所提到的约束类型; 

1.2 NOT NULL约束

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

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

         创建代码如下:

DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (id INT NOT NULL,score double,name VARCHAR(20),qq_mail VARCHAR(20)
);

        下图为我们创建的chengyuan表结构的明细,可以看到id行列是显示不可为null的

        我们通过给id列插入null数据试一下:

        报错显示:id列不能为null;

1.3 UNIQUE:唯一约束

        指定表中的score列为唯一的、不重复的

        下面我们重新设置一下表结构,对id进行约束为唯一约束,代码如下:

DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (id INT NOT NULL,score double UNIQUE,name VARCHAR(20),qq_mail VARCHAR(20)
);

        查看表结构进行可以看到,score列发生了明显变化,如下图所示:

         我们通过给score列插入相同的数据数据试一下:

        报错信息显示我们对于chengyuan表插入了相同的score数据;

1.4 DEFAULT:默认值约束

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

        重新设置一下chengyuan表,对name进行默认值约束,若为null,则为默认值:委婉待续

        且具体代码如下:

// 重新设置学生表结构
DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (id INT NOT NULL,sn INT UNIQUE,name VARCHAR(20) DEFAULT '委婉待续',qq_mail VARCHAR(20)
);

        查看表结构:

//Default(默认)列的name行不再为null,而为我们设置的默认值“委婉待续”

        进一步测试:

        我们在插入的时候,没有对name赋值,他会使用我们的默认值;

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

1.5 PRIMARY KEY:主键约束

        指定某一列为主键

         主键是关系表中记录的唯一标识,使用主键应注意以下几点:

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

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

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

        创建主键代码具体如下:

// 重新设置学生表结构
DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (id INT PRIMARY KEY,sn INT UNIQUE,name VARCHAR(20) DEFAULT '委婉待续',qq_mail VARCHAR(20)
);

        查看表结构:

        我们可以简单理解为:主键是 NOT NULL 和 UNIQUE 的结合

q:主键不允许重复,怎样保证呢?

a:Mysql自身就有一种机制,叫做“自增主键”,意味着当前的id,不需要用户自己指定,可以交给数据库,让数据库自己分配。---数据库按照自增的方式自增。自增主键务必是整数。同时id也可以自己手动插进去,但是要确保插入的结果是不重复的。但是当手动之后自增主键后,id接着上个数字id自增。

1.6 FOREIGN KEY:外键约束

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

        语法如下:

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

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

        外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

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

         

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

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

        2、必须为主表定义主键。

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

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

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

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

        下面通过实例来了解外键;

        1、创建队伍表teamss,id为主键

DROP TABLE IF EXISTS teams;
CREATE TABLE teams (id INT primary KEY auto_increment,name VARCHAR(20),desc1 VARCHAR(100)
);

        2、创建成员表chengyuan,一个成员对应一个队伍,一个队伍对应多个成员。使用id为主键,teamss_id为外键,关联队伍表与成员;

1.7 CHECK约束

        略(mysql5版本并不支持这个操作)

2. 表的设计

        下面主要讲解了表在后期设计时,用到的模型;

2.1 一对一

        像每一个人都有固定的身份证号

2.2 一对多

        一个班级里面存放多个学生的相关数据;

2.3 多对多

ps:本篇的内容就到这里了,如果大家感兴趣的话,就请一键三连哦!!!

        关于mysql进阶的内容委婉待续;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/221915.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01AVue入门(持续学习中)

1.使用AVue开发简单的前端页面直接简单到起飞,他是Element PlusVueVite开发的,不需要向元素的前端代码一样一个组件要传很多参数,他可以使用Json文本来控制我们要传入的数据结构来决定显示什么 //我使用的比较新,我们也可以使用cdn直接使用script标签直接引入 2.开发中遇到的坑…

【C++】初识模板

本文目录 1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int&…

PYthon Pandas 时间序列数据重采样-resample()方法(第23讲)

PYthon Pandas 时间序列数据重采样-resample()方法(第23讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

windows远程桌面怎么开启?

文章目录 如下三种开启方式,任选一即可方式1.在系统属性中开启远程桌面方式2.通过系统设置开启远程桌面方式3.注册表编辑器开启远程桌面使用远程桌面 如下三种开启方式,任选一即可 配合 组网工具或者内网穿透 超级爽 局域网其他pc如何访问宿主机虚拟机IP…

智能优化算法应用:基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于未来搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.未来搜索算法4.实验参数设定5.算法结果6.…

C#线程的定义和使用方法

引言 在C#编程语言中,线程是一种并发执行的机制,允许程序同时执行多个任务。线程的使用使得我们能够利用计算机的多核处理器,实现程序的并行执行,提高系统的性能和响应能力。本文将详细介绍C#中线程的定义和使用方法,涵…

【SpringBoot快速入门】(4)SpringBoot项目案例代码示例

目录 1 创建工程3 配置文件4 静态资源 之前我们已经学习的Spring、SpringMVC、Mabatis、Maven,详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例,上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动,从这一节开…

◢Django md5加密与中间件middleware

utils文件夹是重新建立的(与migrations同级),该文件夹下主要存放工具,就像static文件夹下只存放静态文件一样 加密 在utils文件夹下建立encrypt.py文件 from django.conf import settings import hashlib def md5(data_string)…

【JavaWeb学习笔记】13 - JSP浏览器渲染技术

JSP 一、JSP引入 1.JSP现状 1.目前主流的技术是前后端分离(比如: Spring Boot Vue/React),我们会讲的.[看一下] 2. JSP技术使用在逐渐减少,但使用少和没有使用是两个意思,一些老项目和中小公司还在使用JSP,工作期间,你很有可能遇到JSP …

手写单链表(指针)(next域)附图

目录 创建文件: 具体实现: 首先是头插。 注意:一定要注意:再定义tmp时,要给它赋一个初始值(推荐使用 new list_next) 接着是尾插: 随后是中间插: 然后是最简单的改值&#xf…

Linux笔记---系统信息

🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 前言 命令 1. uname - 显示系统信息 2. hostname - 显示或设置系统主机名 3. top - 显示系统资源使用情况 4. df - 显示磁盘空间使用情…

IDEA Community html文件里的script标签没有syntax highlighting的解决方案

在网上找到的解决方法有的是针对Ultimate版本才可以下载的plugin,对我所用的Community版本无法生效,找了一圈最后在stackoverflow上找到一个有效的方案,给需要的小伙伴分享一下:IntelliJ Community Edition: Javascript syntax hi…

Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!

Gemini 1.0:Google推出的全新AI模型,将改变生成式人工智能领域的游戏规则! 🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 …

Python之set集合的相关介绍

认识python中的set集合及其用法 python中,集合(set)是一个无序排列,可哈希,支持集合关系测试,不支持索引和切片操作,没有特定语法格式,只能通过工厂函数创建.集合里不会出现两个相同的元素,所以集合常用来…

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法: 条件渲染:使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染:开发框架提供循环渲染(ForEach组件)来迭代数组,并为每个数组项创建…

云原生系列2-CICD持续集成部署-GitLab和Jenkins

1、CICD持续集成部署 传统软件开发流程: 1、项目经理分配模块开发任务给开发人员(项目经理-开发) 2、每个模块单独开发完毕(开发),单元测试(测试) 3、开发完毕后,集成部…

数据治理与大模型一体化实践

引言: 大模型落地到当前这个阶段,核心关注点还是领域大模型,而领域大模型落地的前提在于两点:需求端,对当前应用的降本增效以及新应用的探索;供给端,训练技术已经有较高的成熟度。 专家介绍: …

2023 英特尔On技术创新大会直播 |探索视觉AI的无限可能

2023 英特尔On技术创新大会直播 | 探索视觉AI的无限可能 前言一未来的 AI:释放视觉 AI 真正潜力二AI技术突破、视觉Al挑战及前沿研究创新三全尺度视觉学习全尺度视觉学习示例1.GridConv 实现三维人体姿态估计更高准确率2.KW 预训练及迁移模型性能3.无数据增强稠密对…

linux搭建gitlab

gitlab的介绍 区别于github,github是面向互联网基于git实现的代码托管平台,gitlab是基于Ruby语言实现的git管理平台软件,一般用于公司内部代码仓库。 gitlab组成 Nginx 静态Web服务器Gitlab-workhorse 轻量级的反向代理服务器Gitlab-shell 用…

TikTok获客工具定制开发怎么做?

随着社交媒体的兴起,越来越多的企业开始把目光投向了海外市场,而在这个数字化时代,TikTok已经成为了一个备受欢迎的短视频平台,不仅吸引了大量的年轻用户,也成为了许多企业的新宠。 但是,如何在TikTok上获…