数据表中列的完整性约束概述

文章目录

    • 一、完整性约束概述
    • 二、设置表字段的主键约束
    • 三、设置表字段的外键约束
    • 四、设置表字段的非空约束
    • 五、设置表字段唯一约束
    • 六、设置表字段值自动增加
    • 七、设置表字段的默认值
    • 八、调整列的完整性约束

一、完整性约束概述

完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户操作,MySQL中基本的完整性约束条件如下表所示:
在这里插入图片描述

二、设置表字段的主键约束

主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中的任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。
1.单字段主键
单字段主键的语法规则如下:

CREATE TABLE tablename(propName propType PRIMART KEY,.....);

或者

CREATE TABLE tablename(propName propType,......PRIMARY KEY(propType));

在这里插入图片描述
MySQL支持给主键设置名字:

CREATE TABLE tablename(propName propType,.....CONSTRAINT pk_name PRIMARY KEY(propType));

给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。
在这里插入图片描述
2.多字段主键
主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:

CREATE TABLE tablename(propName1 propType, propName2 propType,......[CONSTRAINT pk_name] PRIMART KEY(propName1, propName2));

在这里插入图片描述

三、设置表字段的外键约束

外键是表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整性,即构建两个表的字段之间的参照关系。设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表决定。例如表示一个班级和学生的关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有一个表示班级号的字段,其依赖于班级表的主键,这样的字段就是学生表的外键,通过该字段班级表和学生表建立了关系。
一个班级表:
在这里插入图片描述
每一行对应着一个班级,而一个班级对应着多个学生,所以班级表和学生表的关系就是“一对多”。
在这里插入图片描述
在设置外键约束时,设置外键约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空(NULL)。设置表中的某字段的外键约束非常简单,可以在MySQL数据库管理系统中通过SQL语句FOREIGN KEY来实现。其语法形式如下所示:

CREATE TABLE tablename_1(proName1 proType,proName2 proType,......[CONSTRAINT fk_name] FOREIGN KEY(propName1) REFERENCES table2_name(table2_column));

其中tablename_1参数时要设置外键的表名,proName1参数是要设置外键的字段,tablename_2是父表的名称,table2_column是父表中设置主键约束的字段名。
在这里插入图片描述

四、设置表字段的非空约束

当数据库表中的某个字段上的内容不希望设置为NULL时,可以使用非空约束进行设置,非空约束在创建数据库表时为某些字段加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库管理系统会报错。设置表中某字段的非空约束非常简单,在MySQL数据库管理系统中是通过SQL语句NOT NULL来实现,其语法形式如下:

CREATE TABLE tablename(propName propType NOT NULL,.....);

在这里插入图片描述

五、设置表字段唯一约束

当数据库表中某个字段上的内容不允许重复时,可以使用唯一约束进行设置,唯一约束在创建数据表时为某些字段加上"UNIQUE"约束条件,保证所有记录中该字段上的值不重复。如果在用户插入的记录中该字段上的值与其他记录中该字段上的值重复,那么数据库管理系统会报错。设置表中某字段的唯一约束非常简单,可以在MySQL数据库管理系统中通过SQL语句UNIQUE来实现,其语法形式如下:

CREATE TABLE tablename(propName propType UNIQUE, ......);

注意:UNIQUE约束允许受约束的字段出现多个空值,不算重复。
在这里插入图片描述

六、设置表字段值自动增加

"AUTO_INCREMENT"是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置"AUTO_INCREMENT"约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置"AUTO_INCREMENT"约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成主键。设置表中某字段值的自动增加约束非常简单,可以在MySQL数据库管理系统中通过SQL语句"AUTO_INCREMENT"来实现,其语法形式如下:

CREATE TABLE tablename(propName propType AUTO_INCREMENT, .....);

在上述语句中,tablename参数表示所要设置非空约束的字段名字,propName参数为属性名,propType为属性类型,propName字段要设置自动增加约束。默认情况下,字段propName的值从1开始增加,每增加一条记录,记录中该字段的值就会在前一条记录(或已存在的最大值,包括曾经存在的)的基础上加1。
在这里插入图片描述
注意:在MySQL8中,AUTO_INCREMENT必须设置为键(主键、外键和唯一键均可),否则就会报错!

七、设置表字段的默认值

当为数据库表中插入一条新记录时,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认值。为了达到这种效果,可以通过SQL语句关键字"DEFAULT"来设置。设置数据库表中某字段的默认值非常简单,可以在MySQL数据库管理系统中通过SQL语句DEFAULT来实现,其语法形式如下:

CREATE TABLE tablename(propName propType DEFAULT defaultvalue, .....);

注意:如果没有设置,则默认为空。
在这里插入图片描述

八、调整列的完整性约束

1.修改主键、外键和唯一键
新增语句:

alter table [table_name] add constraint [constraint_name] [unique key | primary key | foreign key] ([column_name]);

添加约束
在这里插入图片描述
删除约束
通过如下命令查询键值的约束名:

show indexkeys from 表名

执行如下命令删除:

主键:alter table 表名 drop primary key;
外键或唯一键:alter table 表名 drop index 约束名;

在这里插入图片描述
2.修改默认值DEFAULT、自增长和非空
使用如下语法重新定义即可:

alter table 表名 modify 列名 类定义;

在这里插入图片描述

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

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

相关文章

Unity网络通信相关

Socket 通信一张图搞定 谁提供服务谁绑定端口,建立Listener,写Host

ChatGPT 与 AGI:人工智能的当下与未来走向全解析

在人工智能的浩瀚星空中,AGI(通用人工智能)无疑是那颗最为璀璨且备受瞩目的星辰。OpenAI 对 AGI 的定义为“在最具经济价值的任务中超越人类的高度自治系统”,并勾勒出其发展的五个阶段,当下我们大多处于以 ChatGPT 为…

七次课掌握 Photoshop

mediaTEA 的《七次课掌握 Photoshop》系列文章以循序渐进的教学方式,帮助学员在短时间内高效掌握 Photoshop 的核心功能。 从基础知识到高级技巧,课程涵盖图像编辑、选区与抠图、形状与文字、绘画与修饰、调整与混合、样式与滤镜,以及自动化与…

【Goland】怎么执行 go mod download

1、终端的执行 go mod tidy 2、终端执行不行的话,就可以通过右击go.mod文件来执行; 3、也可以按住Ctrl点击这个包安装;

玩转OCR | 腾讯云智能结构化OCR初次体验

目录 一、什么是OCR(需要了解) 二、产品概述与核心优势 产品概述 智能结构化能做什么 举例说明(选看) 1、物流单据识别 2、常见证件识别 3、票据单据识别 4、行业材料识别 三、产品特性 高精度 泛化性 易用性 四、…

基于BiLSTM和随机森林回归模型的序列数据预测

本文以新冠疫情相关数据集为案例,进行新冠数量预测。(源码请留言或评论) 首先介绍相关理论概念: 序列数据特点 序列数据是人工智能和机器学习领域的重要研究对象,在多个应用领域展现出独特的特征。这种数据类型的核心特点是 元素之间的顺序至关重要 ,反映了数据内在的时…

安装、快速入门

安装 sudo docker run \-e RABBITMQ_DEFAULT_USERroot \-e RABBITMQ_DEFAULT_PASS123456 \-v rabbitmq-plugins:/plugins \--name rabbitmq \--hostname rabbitmq \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq 1、防火墙开放两个端口 2、RabbitMQ 安装 Web 插件: …

JVM学习:CMS和G1收集器浅析

总框架 一、Java自动内存管理基础 1、运行时数据区 运行时数据区可分为线程隔离和线程共享两个维度,垃圾回收主要是针对堆内存进行回收 (1)线程隔离 程序计数器 虚拟机多线程是通过线程轮流切换、分配处理器执行时间来实现的。为了线程切换…

用uniapp写一个播放视频首页页面代码

效果如下图所示 首页有导航栏&#xff0c;搜索框&#xff0c;和视频列表&#xff0c; 导航栏如下图 搜索框如下图 视频列表如下图 文件目录 视频首页页面代码如下 <template> <view class"video-home"> <!-- 搜索栏 --> <view class…

uniapp 判断多选、选中取消选中的逻辑处理

一、效果展示 二、代码 1.父组件: :id=“this.id” : 给子组件传递参数【id】 @callParentMethod=“takeIndexFun” :给子组件传递方法,这样可以在子组件直接调用父组件的方法 <view @click="$refs.member.open()"

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09;一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09; 简单讲讲RPA调用kimi实现…

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…

MySQL root用户密码忘记怎么办(Reset root account password)

在使用MySQL数据库的的过程中&#xff0c;不可避免的会出现忘记密码的现象。普通用户的密码如果忘记&#xff0c;可以用更高权限的用户&#xff08;例如root&#xff09;进行重置。但是如果root用户的密码忘记了&#xff0c;由于root用户本身就是最高权限&#xff0c;那这个方法…

Java之内部类*

将一个类定义在另一个类或者一个方法的内部&#xff0c;前者称为内部类&#xff0c;后者称为外部类 实例内部类&#xff1a;实力内部类所处的位置与外部类成员位置相同&#xff0c;因此也受public private等访问限定符的约束静态内部类&#xff08;static&#xff09;匿名内部…

黑马Java面试教程_P3_框架

系列博客目录 文章目录 系列博客目录前言1.Spring1.1 Spring框架中的单例bean是线程安全的吗?面试文稿 1.2 什么是AOP&#xff0c;你们项目中有没有使用到AOP&#xff1f;Spring中的事务是如何实现的&#xff1f;总结面试文稿 1.3 Spring中事务失效的场景有哪些总结面试文稿 1…

VK11\VK12保存增强

VK11\VK12保存增强 一、 VK11\VK12保存增强 事务码VK11、VK12创建和修改条件记录时&#xff0c;点击保存时修改其中的条件 二、增强步骤 通过查找&#xff0c;对应的BADI&#xff1a;SD_COND_SAVE_A 通过SE19创建BADI&#xff1a;ZSD_COND_SAVE_A修改函数CONDITION_SAVE_E…

使用pandas把数据库中的数据转成csv文件

使用pandas把数据库中的数据转成csv文件 1、效果图 2、流程 1、连接数据库,获取数据 2、把一些中文字符转成gbk,忽略掉无法转化的 3、把数据转成csv 3、代码 import pymysql import pandas as pddef get_database(databasename):

急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击

僵尸网络活动增加 &#xff1a;新的“FICORA”和“CAPSAICIN”僵尸网络&#xff08;Mirai 和 Kaiten 的变体&#xff09;的活动激增。 被利用的漏洞 &#xff1a;攻击者利用已知的 D-Link 路由器漏洞&#xff08;例如 CVE-2015-2051、CVE-2024-33112&#xff09;来执行恶意命…

Linux SVN下载安装配置客户端

参考&#xff1a; linux下svn服务器搭建及使用&#xff08;包含图解&#xff09;_小乌龟svn新建用户名和密码-CSDN博客 1.ubuntu安装svn客户端 “subversion” sudo apt-get update sudo apt-get install subversion 查看安装的版本信息&#xff0c;同时看是否安装成功 s…

MM-2024 | 智能体遇山开路,遇水架桥! ObVLN:突破障碍,受阻环境中的视觉语言导航

作者&#xff1a;Haodong Hong, Sen Wang, Zi Huang 单位&#xff1a;昆士兰大学 论文链接&#xff1a;Navigating Beyond Instructions: Vision-and-Language Navigation in Obstructed Environments (https://dl.acm.org/doi/pdf/10.1145/3664647.3681640) 代码链接&#…