搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小桥流水78
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
系统安装 安装 win11 系统跳过微软账户登录_windows11安装跳过登录账户
2
Qt编写自定义控件:图片显示控件_qt 图片控件
3
自动驾驶数据闭环与工程化_自动驾驶数据闭环参考文献
4
阿里云数据库设置ip白名单连接正式库详细步骤_阿里云数据库实例白名单
5
Apache Flink 漫谈系列(11) - Temporal Table JOIN
6
kafka卡夫卡单机模式启动_kafka单机启动
7
二叉排序树的定义及基本操作(构造、查找、插入、删除)递归及非递归算法_c++二叉排序树的建立、遍历、插入元素、删除元素、查找元素的算法
8
Windows下MySQL安装到配置的详细操作_windos mysql my.int
9
py2neo连接neo4j报错Error: could not begin a transaction_neo4jerror: you cannot begin a transaction on a se
10
求三角形面积_头歌scala函数三角形的面积
当前位置:
article
> 正文
数据库的完整性约束_数据库中为什么需完整性约束
作者:小桥流水78 | 2024-06-30 08:34:32
赞
踩
数据库中为什么需完整性约束
之前介绍了
数据库基本常识的简介及mysql安装
结构化查询语言sql
数据库表介绍
数据库的数据类型
数据操作语言DML——数据的增删改查
数据库对象操作语言DDL——修改、删除数据库表等对象
接下来介绍一下数据库的完整性约束。
完整性约束的作用
:保证数据库中数据的准确性和一致性。
约束在作用上可以分为两类:
表级约束:可以约束表中任意一个或多个字段,与列定义相互独立,不包含在列定义中;与定义用”,“分割;必须指定要约束的列的名称。
列级约束:包含在列定义中,直接跟在该列的其他定义之后,用空格分割,不需要指定列名。
完整性约束可以分为非外键约束和外键约束
非外键约束
主要包括以下几种(后面紧跟的是列级约束的写法)
主键约束:primary key。主键的作用是,通过主键所在的字段可以查询到唯一一条数据。主键的要求是不能为空,并且是唯一的。也就是说主键这一列必须有东西,并且每个行的主键位置的信息不能重复。主键的使用在创建表的时候,在这一列的语句中加入primary key即可。
自增约束:auto_increment。作用是,这个字段可以自己添加,但是字段类型必须是int(integer)类型。在插入的时候这个字段可以设置为null或者default都可。如果sql报错,则这个递增的就浪费了。此外自增必须应用在主键上。
非空约束:not null。作用是,这个字段的内容不能为空,也就是必须有内容。
唯一约束:unique。作用是,这个字段在这个表中的信息是不重复的。注意这里没有限制非空,所以与主键是有区别的。
默认值:default。作用是,如果这个字段在插入的时候不写,我们可以设置默认值。用法:default 默认值。
检查约束(mysql8之后的):check。作用是检查字段的内容。用法:check(字段=内容||字段=内容and字段=内容)
上面介绍的是
非外键约束
的
列级约束
写法,也就是直接跟在表创建的时候写。下面说一下这些约束的表记约束的写法
constraint 约束名 约束条件 (列名[条件])
这里的列名是必须的,条件有时候是需要的。例如检查约束的写法:constraint 约束名 check (sex = ‘男’ || sex = ‘女’)
注意表级约束跟列级约束基本一致,只不过写法不同而已。但是自增约束、非空约束、默认值约束只能使用列级约束,也就是说auto_increment、not null和default只能写在某一列后面。
如果使用列级约束,并且系统抛出错误。例如使用检查约束设置性别只能是男女,那么输入其他的之后,则会出错。这时候违反的约束,系统会自动命名。但是如果我们使用表级约束,则会按照我们定义的约束名,方便错误的排查。
在创建表之后添加约束:
命令语句:alter table 表名 add constraint 约束名 约束条件 (列名[条件]);
想要添加auto_increment的语句:alter table 表名 modify 列名 类型(限制) auto_increment;这就是相当于对之前的列字段重新定义了。
查看表结构:desc 表名;
接下来介绍一下外键约束
外键是指:表中的某一字段,依赖于另外一张表中某个字段的值。而被依赖的字段必须是主键约束或者唯一约束。被依赖的表通常称为父表或主表,而设置外键约束的表通常称为子表或从表。
主表中的字段称为主键,子表中的字段称为外键。例如学生表中一个班级字段关联到班级表id,则学生表的这个字段为外键,班级表的id为主键。学生表是子表,班级表是父表。
外键约束的主要好处是
可以将两张表紧密结合起来
数据不会重复
修改时效率高
需要先创建父表,再创建子表;先删子表,再删除父表。并且外键约束只有表级约束,没有列级约束。
命令语句:
建表的时候:constraint 约束名 foreign key (本表中的字段) references 主表名称(主表中的主键或者主表中的唯一约束的字段);
建表之后:alter table 表名 add constraint 约束名 foreign key (本表中的字段) references 主表名称(主表中的主键或者主表中的唯一约束的字段);
接下来说一下
外键策略
,也就是说如果有子表关联主表,主表的数据不能删除的时候,可以使用一些策略。
no action:不允许操作。写sql,让要删除的部分的关联取消掉,或者说关联到其他一行。例如要删除班级表中id=2的,可以将学生表中班级为2的先修改到其他班或者设置为null。
cascade:级联操作。操作主表的时候,会影响子表,例如将班级表中id=2的改成id=5,则之前学生表班级id=2的也会变成5。如果删除班级表id=2的,那么学生表中班级id为2的学生也会跟着删除。
用法(在子表中创建外键约束的时候,如果已经有了则删除之前的外键约束):
删除之前的外键约束:alter table (子)表名 drop foreign key 约束名;
重新添加带有级联操作的外键约束(这里对修改和删除都添加了级联操作):alter table (子)表名 add constraint 约束名 foreign key (本表中的字段) references 主表名称(主表中的主键或者主表中的唯一约束的字段) on update cascade on delete cascade;
set null:置空操作。操作主表的时候,子表的值会变成null。用法与级联操作类似。但是在之前写on update cascade和on delete cascade的时候换成 on update set null和on delete set null;
一般情况下,我们会将update设置为级联操作,而delete设置为置空操作。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小桥流水78/article/detail/771985
推荐阅读
article
Spark
架构_
spark
架构...
一、运行架构
Spark
框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。如下图所示,它...
赞
踩
article
2023
年春节祝福第二弹——送你
一只
守护
兔
,让它温暖每一个你【
h
tml
5
css3
】画会动的小
兔
子,...
2023
年春节祝福第二弹———送你
一只
守护
兔
,她会像你爱她一样爱着你,她并不厉害,但即使失败了,小小的她也会再度勇敢站起...
赞
踩
article
org
.
apache
.
zookeeper
.
KeeperException
$Unimplemented...
前言今天在调用很久写的zk相关代码 创建节点突然创建异常。。。异常信息如下
org
.
apache
.
zookeeper
.Ke...
赞
踩
article
Stable
Diffusion
如何
Mac
电脑本地部署教程_
stable
diffusion
mac
...
由于目前各种神经网络的算法对
Mac
的系统支持不是很友好,在
Mac
上出图的速度会显著低于 windows上的速度,不过...
赞
踩
article
C
语言
实现一下
韩信点兵
_
韩信点兵
c
语言
编程...
c
语言
实现
韩信点兵
_
韩信点兵
c
语言
编程
韩信点兵
c
语言
编程 ...
赞
踩
article
项目
的
总结
_
base
.
pagemask
...
作业.写醒目
的
总结
性报告1:你学会了什么一、使用本地存储对数据进行存储并在另一个页面对本地存储
的
数据进行读取、修改和删除...
赞
踩
article
使用
python
对
bin
文件
进行
操作_
python
写
bin
文件
...
python
对
bin
文件
操作的步骤背景博主想对神经网络模型的参数写入
bin
文件
,方便在后续创建IP的过程中读取数据进...
赞
踩
article
媲美
Sora
,免费使用!带
物理
模拟
的,文生
视频
模型_lumalabsaidreammachinecr...
例如,在生成两辆车相撞的场景时,模型需要
模拟
碰撞时的力和反作用力,考虑车体的变形和碎片飞散的方向和速度。例如,当生成一个...
赞
踩
article
yolov4
目标
检测
与
训练
_
训练
集数量
小
于500
,
属于
较
小
的
数据量
,
请注意设置
较
大
的
训练
世代(epo...
本实验
的
主要
目标
是使用YOLOv4算法,通过自己标注
的
数据集进行
训练
,得到一个
训练
好
的
模型。随后,我们将使用这个
训练
好
的
...
赞
踩
article
redis
持久
化
配置
_ubuntu
redis
配置
持久
...
redis
有两种
持久
化方式:RDB和AOF。具体差别跟优缺点可参考
redis
数据的两种
持久
化方式对比,本篇只介绍这两种方...
赞
踩
article
Spark
join
问题_
spark
full
join
...
本篇文章是关于我在学习
Spark
过程中遇到的一些问题及总结,分为
Spark
优化、RDD
join
问题、遇到的问题、总结、...
赞
踩
article
卷积
神经网络
_
卷积
到
最后
获得哪些
特征
?...
卷积
神经网络
创建日期 星期五 15 三月 2019
卷积
神经网络
的特点在于
卷积
;通俗的来说
卷积
就是局部扫描,然后进行训练识...
赞
踩
article
搭建NodeJs
服务器
,利用
SocketIO
实现:web、
服务器
、
Unity
的通信_
unity
so...
需求1、
unity
链接
socket
io
服务器
2、网页实时发送信息到
Unity
3、实时统计设备数量编写
Unity
...
赞
踩
article
页面
滚动条
导致
页面
抖动
问题
_
长图下拉在
页面
上
抖动
...
在CSS中添加如下代码:html,body{ overflow-y:scroll;}html,body{ overflo...
赞
踩
article
JQuery
中使用
mouseover
事件
和
mouseout
事件
作用在同一个
元素
上时
出现
闪烁现象_
js
...
前提:实现一个电影网站中的关于选定图片
出现
一个新的div容器展示具体电影详情的功能(通过使用visibility属性隐藏...
赞
踩
article
STM32
重定向
printf
到串口(
重写
fputc
不生效)
_
stm32
fputc
未生效...
网上一搜全都是
重写
fpuc的,但这只针对使用了MicroLIB的情况,如果你使用
STM32
CubeMX配置了CMake或...
赞
踩
article
手把手
教你创建
一个
AI
机器人
~
_
自己
造ai...
可白嫖gpt4哦~
_
自己
造ai
自己
造ai 哈喽,大家好,木易巷来啦! 字节跳动悄咪咪地推...
赞
踩
article
从训练到推理,AI
大
模型
发展
有哪五
大
趋势
?_未来
大
模型
技术
发展
趋势
...
电子发烧友网报道(文/章鹰)2024年两会召开后,两会报告把加快
发展
新质生产力列为十
大
任务举措之首。新质生产力的核心是用...
赞
踩
article
「
Flink
」配置使用
Flink
调试
WebUI
_
flink
-
runtime
-
web
...
很多时候,我们在IDE中编写
Flink
代码,我们希望能够查看到Web UI,从而来了解
Flink
程序的运行情况。按照以下...
赞
踩
article
The
Rust
Programming Language - 第
19
章 高级特征 -
19
.1 不...
19
高级特征我们将在这一章学习更多高级功能
19
.1 不
安全
的
Rust
截至目前,我们所编译的代码
Rust
在编译时会强制执...
赞
踩
相关标签
spark
架构
big data
前端
html5
css3
源代码
代码画兔子
org.apache.zookeeper.KeeperExc
zk异常
zk和curator版本兼容问题
stable diffusion
macos
c语言
开发语言
js
python
pytorch
补码
chatgpt
YOLO
目标检测
人工智能
Unity