当前位置: 首页 > news >正文

MySQL——数据的删除以及MySQL中的约束

删除数据

删除表中的一行数据,也必须加上 WHERE条件,否则整列的数据都会被删除。删除语句:

delete from 表名 where 条件;

他会将所有的符合条件的数据删除,如果不写条件,则表中的数据全部删除:

如果不添加where:

首先我们的工具会提醒我们这个语句非常的危险,这是工具自带的功能,如果你使用的是黑窗口则不会有这种提示,我们无视风险,继续执行:

那么表中的数据就全部都被删除了。

我们再找一个有数据的表:

那么我们使用另一个语句也可以删除数据:

命令格式是这样的:

truncate table 表名;

演示一下:

truncate与delete的区别在之后详细的介绍的时候会说到,现在只需要记住这个语句也可以做到删除数据的效果就可以了。

约束是什么

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。本节实验将在实践操作中熟悉 MySQL中的几种约束。

SQL中最常用的 SELECT语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习SELECT语句的用法。

. SQL约束

. SELECT基本语法

·数学符号条件

·AND OR IN

·通配符

·排序

. SQL内置函数和计算

·子查询与连接查询

SQL约束分类

听名字就知道,约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

比如,规定一个用户的用户名不能为空值且没有重复的记录,这就是一种约束规则。

在MySQL中,通常有这几种约束:

约束类型

主键

默认值

唯一

外键

非空

关键字

PRIMARY KEY

DEFAULT

UNIQUE

FOREIGN KEY

NOT NULL

建立含有约束的表

在之前我们介绍创建表的格式的时候,添加约束的地方是在字段类型的后面,我们直接添加对应的约束即可:

create table if not exists book( id int primary key , name varchar(20) unique , age varchar(3) not null , address varchar(20) default '背景' );

我们创建了一个表,这个表中的每一列都带有一个约束,从上到下分别是主键约束,唯一约束,非空约束,默认约束,我们接下来会分别介绍这集中约束的作用。

主键

在数据库中,如果有两行记录数据完全一样,那么如何来区分呢?答案是无法区分,如果有两行记录完全相同,那么对于MySQL就会认定它们是同一个实体,这于现实生活是存在差别的。

假如我们要存储一个学生的信息,信息包含姓名,身高,性别,年龄。

不幸的是有两个女孩都叫小梦,且她们的身高和年龄相同,数据库将无法区分这两个实体,这时就需要用到主键了。

主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要,主键不能有重复记录且不能为空。

我们向表中插入一行数据:

我们表中的id这一列已经添加了主键约束,那么按照主键约束的规则,不能重复且不能为空,如果我们再次填写一个id的值和他一样则会出错:

当我们插入同样的id时,由于id字段有主键约束,则会报错,报错信息是重复的主键的值。

并且当我们不填充数据的数据也会报错:

报错信息是不能为空,是因为我们添加了主键约束才会报这个错。

联合主键

在有些时候,单一的主键并不能满足于使用,那么就需要使用多个列组成联合主键,联合主键的生命格式如下:

create table if not exists book1( id int , u_id int, name varchar(20) unique , age varchar(3) not null , address varchar(20) default '北京', primary key (id,u_id) );

联合主键的定义就不能在字段后面定义,需要在建表语句的最后使用primary key ()关键字定义,括号内的参数就是要组成联合主键的字段名,多个字段名之间用逗号隔开。

主键自增

主键的值是固定的,有时候我们在自己添加的时候可能会忘记自己添加到那里了,或者如果中间有空行就会出错,不如直接让主键列自己增长,我们不用手动填入主键的值,就可以在表中自己填入正确的主键值:

在主键列的主键关键字primary key后面使用另一个关键字auto_increment,就可以在添加主键的时候填入一个null,之后就可以在表中自己填入对应的值:

可以看到,我们在插入数据的时候填入的是null,但是我们在数据库中显示的数字是按照1,2,3……这样自动增长的,这就是主键自增。

默认值约束

默认值约束(DEFAULT)规定,当有DEFAULT约束的列,插入数据为空时,将使用默认值。

默认值常用于—些可有可无的字段,比如用户的个性签名,如果用户没有设置,系统给他应该设定一个默认的文本,比如空文本或‘这个人太懒了,没有留下任何信息'

在之前的案例中,第四个字段使用的就是默认值约束:

当这个字段我们不填充任何的值的时候,那么default后面的值就会被自动填充进去:

注意,是不填充任何的值,如果你最后写了一个null,那么最后的显示结果是这样的:

可以看到默认值约束并没有应用上去,这里涉及到一个MySQL的null值和空值的区别,其实这个null也是一种数值,这个在之后我们会深入讨论他的问题。

这里我们只需要知道,如果要default约束被应用只需要填充的时候使用选择列填充的方式,不填充任何内容在自动约束所在的列中即可。

唯一约束

唯—约束(UNIQUE)比较简单,它规定—张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

我们之间案例中的第二个字段就添加了非空约束,我们先看一下表中已有的数据:

当前表中的name的值是添加了唯一约束的,并且此时没有重复的值,那么现在我添加一个重复的值:

当添加了唯一约束的字段中添加了重复的值,那么就会报错,报错信息是重复的键值,在book2表的name字段上。

那么如果是两个null值的话,会怎么样呢?

null并不算做是重复的值,现在理解比较好理解,就是没有值也就没有比较的对象嘛,但是之后我们介绍null的细节的时候,我们再详细的展开null到底代表的是什么。

外键约束

外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。

比如,现在有用户表和文章表,给文章表中添加一个指向用户id 的外键,表示这篇文章所属的用户id,外键将确保这个外键指向的记录是存在的,如果你尝试删除一个用户,而这个用户还有文章存在于数据库中,那么操作将无法完成并报错。因为你删除了该用户过后,他发布的文章都没有所属用户了,而这样的情况是不被允许的。同理,你在创建一篇文章的时候也不能为它指定一个不存在的用户id。

一个表可以有多个外键,每个外键必须REFERENCES(参考)另—个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

外键约束是什么呢,就是我现在有一个表,我的表中的某一个列添加了外键约束,这个外键约束参考了另一个表中的主键列,那么我在向添加了外键约束的字段中插入值的时候,这个值的取值范围只能是另一个表中主键列已经存在的值,否则会插入失败。类似于ENUM,只能从一个范围中取值,只不过这个范围在另一个表上。

现在我创建了两张表,一张student,一张stu_cord,现在stu_cord表的c_id添加了外键约束,在插入数据的时候,stu_cord的c_id的值只能插入student表中的id字段已有的值:

我先给student插入一些数据,然后向stu_cord中插入一些数据:

现在是一切正常,但是如果我这么操作:

插入失败了,为什么呢?就是因为当我向c_id列中插入数据的时候,c_id列添加了外键约束,这个列中插入的数值要参考student的id字段的值,只能插入id字段中已有的值,现在student表中的数值是这样的:

很显然,我要插入的4并不在他的id中,所以我插入失败了,这就是外键约束的一个体现,当你插入的数值不在我参考的列中,那么你的值无法插入。

相关文章:

MySQL——数据的删除以及MySQL中的约束

删除数据 删除表中的一行数据,也必须加上 WHERE条件,否则整列的数据都会被删除。删除语句: delete from 表名 where 条件; 他会将所有的符合条件的数据删除,如果不写条件,则表中的数据全部删除: 如果不添…...

静态路由 网络实验

静态路由 网络实验 拓扑图初步配置R1 ip 配置R2 ip 配置R3 ip 配置查看当前的路由表信息查看路由表信息配置静态路由测试 拓扑图 需求:实现 ip 192.168.1.1 到 192.168.2.1 的通信。 初步配置 R1 ip 配置 system-view sysname R1 undo info-center enable # 忽略…...

数据结构-01 数据结构基本概念,算法时间复杂度,空间复杂度

0 数据结构概述 四门课的关系 1 绪论 数据对象、数据元素、数据项关系 1.1 数据结构的基本概念 1.2 算法和算法评价 小练习 空间复杂度中的递归调用 n只是传入 n也是数组,计算存储数组flag的空间大小...

【Redis】Bitmap 使用及应用场景

前言:bitmap 占用空间小,查询效率高,在一些场景中使用 bitmap 是一个很好的选择。 一、bitmap 相关命令 SETBIT - 设置指定位置的比特值,可以设为 1 或 0 例如 SETBIT key 10 1,将在 key 对应的 bitmap 中第10位设置为…...

C#,数值计算——用于积分函数与方法的Stiel类的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Stiel { public class pp : UniVarRealValueFun, RealValueFun { public Stiel st { get; set; } null; public pp() { } public doubl…...

报错:为什么数组明明有内容但打印的length是0

文章目录 一、问题二、分析三、解决1.将异步改为同步2.设置延迟 一、问题 在日常开发中,for 循环遍历调用接口,并将接口返回的值进行拼接,即push到一个新的数组中,但是在for循环内部是可以拿到这个新的数组,而for循环…...

go gin gorm连接postgres postgis输出geojson

go gin gorm连接postgres postgis输出geojson 1. 技术环境 go-gin-gorm postgres-postgis go vscode环境安装-智能提示配置 2. 简单实现代码 思路就是:采用原生sql实现查询、更新等,采用gorm的raw来执行sql语句 package mainimport ("fmt"&q…...

4. Java 的线程安全机制之`volatile`

前言:在多线程编程过程中,线程安全是一个非常重要的概念,它有助于保证多线程程序的正确性和健壮性。其中,volatile是实现线程安全的一种方式,保证内存的立马可见,下面将会详细介绍。 文章目录 是什么为什么…...

​Vue + Element UI前端篇(二):Vue + Element 案例 ​

Vue Element UI 实现权限管理系统 前端篇(二):Vue Element 案例 导入项目 打开 Visual Studio Code,File --> add Folder to Workspace,导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…...

Qt5中connect信号槽无效问题 C++

在写QT的组件信号槽时遇到一个问题&#xff0c;我的QspinBox组件用connect连接函数总是无效&#xff0c;解决办法是&#xff1a; 在QT5中推荐使用如下形式连接槽函数&#xff1a; QObject::connect(ui->spinBox,QOverload<int>::of(&QSpinBox::valueChanged),th…...

服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路&#xff0c;非常典型&#xff0c;大家可以好好看看&#xff0c;以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景&#xff0c;会出现批量…...

【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

肖sir__设计测试用例方法之编写测试用例12

编写测试用例 一、用例模板 案例1&#xff1a; 案例2&#xff1a; 案例3&#xff1a; 二、测试工作重点&#xff1a; 编写测试用例、 执行用例 &#xff08;依据测试用例&#xff09; 三、测试流程&#xff08;h模型&#xff09; 1、拿到需求 2、编写测试计划&#xff08;…...

Android 11.0 ota升级之Systemui下拉状态栏quick_settings_tiles_default值减少时更新的功能实现

1.前言 在11.0的系统rom定制化开发中,在定制功能需求中,在进行systemui的下拉状态栏定制以后,当需要ota升级的时候,发现在systemui下拉状态栏的快捷功能键部分去掉的 一些快捷功能并没有减少,这是因为systemui有缓存造成的只有清理缓存或者恢复出厂设置后才正常,所以今天…...

Android Studio中创建java项目

1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- Edit Configurations... 选择Application选项 设置所需要的参数 选中myjavalib后点击OK。然后打开刚创建的lib的gradle 编辑gradl…...

冠达管理:“旺季”来临,煤炭板块走高,云煤能源、陕西黑猫涨停

煤炭板块1日盘中发力走高&#xff0c;截至发稿&#xff0c;云煤动力、陕西黑猫涨停&#xff0c;兖矿动力涨超7%&#xff0c;晋控煤业、华阳股份涨超6%&#xff0c;山西焦煤、平煤股份涨超5%。 组织表明&#xff0c;动力大通胀背景下&#xff0c;未来3-5年煤炭供需偏紧的格局仍…...

【EI检索】第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)

第四届公共卫生与数据科学国际学术研讨会&#xff08;ICPHDS 2023&#xff09; 2023 4th International Conference on Public Health and Data Science&#xff08;ICPHDS 2023&#xff09; 第四届公共卫生与数据科学国际学术研讨会&#xff08;ICPHDS 2023&#xff09;将于…...

对时序数据进行分类与聚类

我在最近的工作中遇到了一个问题&#xff0c;问题是我需要根据银行账户在一定时间内的使用信息对该账户在未来的一段时间是否会被销户进行预测。这是一个双元值的分类问题&#xff0c;只有两种可能&#xff0c;即会被销户和不会被销户。针对这个问题一般来说有两种解决策略。 …...

Win10如何找回图片查看器

近期有小伙伴反映在将Win10升级之后发现电脑自带的图片查看器没有了&#xff0c;这是怎么回事&#xff0c;该怎么找回呢&#xff0c;下面小编就给大家详细介绍一下Win10找回图片查看器的方法&#xff0c;有需要的小伙伴快来和小编一起阅读看看吧。 win10找回windows照片查看器…...

【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用

【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29)&#xff0c;对照组的康复训练指导采用讲解示范法&#xff0c;观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …...

vue-cli中vuex下$store”未在实例上定义

这里写目录标题 一、版本的问题二、vuex中的代码 一、版本的问题 vuex版本不对&#xff0c;获取不到store&#xff0c;vue默认vue3版本&#xff0c;vuex默认vuex4版本&#xff0c;vuex4只能在vue3中使用&#xff0c;在vue2中能使用vuex3,那么不能默认下载最新的版本 npm instal…...

AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现

AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现 BSW WatchDog功能的配置和实现一、Wdg监控需求二、WdgM状态管理原理2.1 WdgM状态管理中的配置项和层次关系2.2 SE 本地状态(Local Status)管理2.3 全局状态(Global Status)管理三、Alive/ Deadline/ Program Flo…...

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…...

C#使用DataTable的Select方法来选择特定的字段

在C#中&#xff0c;可以使用DataTable的Select方法来选择特定的字段。要选择特定的字段&#xff0c;可以使用Select方法的参数来指定要返回的列的名称&#xff0c;然后将结果存储在一个新的DataTable中。以下是一个示例&#xff1a; using System; using System.Data; class …...

总结梳理HTTP状态码

前端开发中和后端联调时总会遇到一些状态码的问题&#xff0c;本文用于介绍一些常见的状态码&#xff0c;以及遇到这些状态码应该如何进行排查。 400 Bad Request - 请求无效。 表示客户端发送的请求存在语法错误&#xff0c;服务器无法理解或处理该请求的语法或参数。这通常…...

MySQL 8.0(winx64)安装笔记

一、背景 从MySQL 5.6到5.7&#xff0c;再到8.0&#xff0c;版本的跳跃不可谓不大。安装、配置的差别也不可谓不大&#xff0c;特此备忘。 二、过程 &#xff08;1&#xff09;获取MySQL 8.0社区版&#xff08;MySQL Community Server&#xff09;   从 官网 字样 “MySQL …...

vue封装wangEditor

components下面创建WangEditor.vue <template><div><toolbarstyle"border-bottom: 1px solid #ccc":editor"editor":defaultConfig"toolbarConfig":mode"mode"/><editorstyle"height: 500px; overflow-y: …...

【Spring Boot 源码学习】深入 FilteringSpringBootCondition

走近 AutoConfigurationImportFilter 引言往期内容主要内容1. match 方法2. ClassNameFilter 枚举类3. filter 方法 总结 引言 前两篇博文笔者带大家从源码深入了解了 Spring Boot 的自动装配流程&#xff0c;其中自动配置过滤的实现由于篇幅限制&#xff0c;还未深入分析。 …...

docker 笔记6:高级篇 DockerFile解析

目录 1.是什么&#xff1f; 2.构建三步骤 3.DockerFile构建过程解析 3.1 Dockerfile内容基础知识 3.2Docker执行Dockerfile的大致流程 总结 4.DockerFile常用保留字指令 5.案例&#xff1a;自定义镜像 5.1 要求&#xff1a; Centos7镜像具备vimifconfigjdk8 5.2编写 5…...

微信小程序navigateTo进入页面后返回原来的页面需要携带数据回来

需求 如图&#xff1a;点击评论后会通过wx.navigateTo进入到评论页面&#xff0c;评论完返回count给原页面&#xff0c;重新赋值实现数量动态变化&#xff0c;不然要刷新这个页面才会更新最新的评论数量。 实现方式&#xff1a; 在评论页面通过wx.setStorageSync(‘data’…...

股票网站排名哪个好/关键词优化seo优化排名

由于自己重装了系统&#xff0c;所以需要重新配置环境变量&#xff0c;安装软件&#xff0c;所以记录一下。选择最下面的window x64进行下载&#xff0c;下载到本地后点击运行&#xff1a;之后傻瓜安装一直next就可以了&#xff0c;其实也不需要刻意把jdk换到其他盘&#xff0c…...

wordpress 不能更换主题/建设企业网站多少钱

“多云和跨平台策略不一定是过渡的临时时期” 距科技巨头IBM宣布以340亿美元收购Red Hat不到一个月。 根据新闻稿 &#xff0c;“ 2018年最重大的技术收购将为企业释放云的真正价值”。 本月初&#xff0c;我们与Streamlio的联合创始人Karthik Ramasamy进行了交谈&#xff0c;…...

wordpress前台显示英文/网站关键词排名

编写很多小的函数对象的缺点&#xff1a; 1&#xff0c; 大量的小类分散在代码中&#xff0c;这样很难进行维护 2&#xff0c;理解函数对象被调用处的代码会很难Boost.Lambda &#xff1a; 1】可以创建直接定义和调用的函数对象&#xff0c;或者把它保存起来晚一些再调用&am…...

哈尔滨网站备案手续费/北京seo优化技术

说明&#xff1a;Ajax是无法实现文件传输的&#xff0c;本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果。实质上还是通过提交form表单来返回文件流的输出。分步实现逻辑&#xff1a;ajax请求服务器&#xff0c;访问数据库&#xff0c;根据查询到的数据生成一个数据文…...

有哪些可以做问卷的网站/国际形势最新消息

1、选择 2、应用确认...

毕业设计 建设网站/html网页制作用什么软件

nagios监控对于大家而言&#xff0c;已经并不陌生&#xff0c;相信它工作的原理及相互间的调用关系也有一定的了解&#xff0c;在生产环境中&#xff0c;监控linux服务器很明显大家都知道可以借助nrpe来检测间接的监控。 其实&#xff0c;监控分为两类【自己理解定义】&#xf…...