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

06_约束

文章目录

    • 一、是什么
    • 二、实体完整性约束
      • 2.1、主键约束
      • 2.2、主键自增长
      • 2.3、唯一约束
    • 三、域完整性约束
      • 3.1、非空约束
      • 3.2、默认值
    • 四、引用完整性约束

一、是什么

用于限制加入表的数据的类型和规范,约束是添加在列上的,用来约束列的

分类:

  • 实体完整性约束;
  • 域完整性约束;
  • 引用完整性约束。

二、实体完整性约束

2.1、主键约束

标识表中的一行数据,是该行数据的唯一标识,特性:

  • 非空;
  • 唯一;
  • 被引用(在外键中使用)。

当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。

我们通常创建一个和业务逻辑没有任何关系的,没有任何含义的列做主键列

# 创建表时指定主键
CREATE TABLE 表名(列名 数据类型 PRIMARY KEY,列名 数据类型,列名 数据类型
);# 创建表时指定主键
CREATE TABLE 表名(列名 数据类型,列名 数据类型,列名 数据类型,PRIMARY KEY(设置为主键的列名)
);# 修改表时指定主键(了解就行)
ALTER TABLE 表名 ADD PRIMARY KEY(列名);
ALTER TABLE 表名 MODIFY 列名 列类型 PRIMARY KEY;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 PRIMARY KEY;# 删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;

2.2、主键自增长

通常指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性 。

# 创建表时指定主键
CREATE TABLE 表名(列名 数据类型 PRIMARY KEY AUTO_INCREMENT,列名 数据类型,列名 数据类型
);# 修改表时设置主键自增长
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 PRIMARY KEY AUTO_INCREMENT;
ALTER TABLE 表名 MODIFY 列名 列类型 PRIMARY KEY AUTO_INCREMENT;# 修改表时删除主键自增长
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

2.3、唯一约束

某些列不能设置重复的值,所以可以对列添加唯一约束。
比如身份证号,学号,用户登录的用户名

# 创建表时指定唯一约束
CREATE TABLE 表名(列名 数据类型 UNIQUE,列名 数据类型,列名 数据类型
);# 修改表时设置唯一约束
ALTER TABLE 表名 MODIFY 列名 列类型 UNIQUE;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 UNIQUE;# 删除唯一约束
ALTER TABLE 表名 DROP INDEX name;

三、域完整性约束

3.1、非空约束

此列必须有值,某些列不能设置为NULL值

# 创建表时指定非空约束
CREATE TABLE 表名(列名 数据类型 NOT NULL,列名 数据类型,列名 数据类型
);# 修改表时设置非空约束
ALTER TABLE 表名 MODIFY 列名 列类型 NOT NULL;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 NOT NULL;# 删除非空约束
ALTER TABLE 表名 MODIFY 列名 列类型;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

3.2、默认值

为列赋予默认值,当新增数据不指定值时,书写DEFAULT,以指定的默认值进行填充。

# 创建表时指定默认值
CREATE TABLE 表名(列名 数据类型 DEFAULT 默认值,列名 数据类型,列名 数据类型
);# 修改表时设置默认值
ALTER TABLE 表名 MODIFY 列名 列类型 DEFAULT 默认值;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 DEFAULT 默认值;# 删除默认值
ALTER TABLE 表名 MODIFY 列名 列类型;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

四、引用完整性约束

这里说的引用完整性约束就是指的外键约束,作用:

  • 引用外部表的某个列的值;
  • 新增数据时,约束此列的值必须是引用表中已经存在的值。

外键的特点:

  • 外键必须是另一表的主键的值(外键要引用主键!);
  • 外键可以重复;
  • 外键可以为空;
  • 一张表中可以有多个外键。
    在这里插入图片描述
# 创建表时指定外键约束
CREATE TABLE 表名(列名 数据类型,列名 数据类型,列名 数据类型,CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)
);# 修改表时添加外键约束
ALERT TABLE 表名 ADD CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键);# 修改表时删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名称;

相关文章:

06_约束

文章目录 一、是什么二、实体完整性约束2.1、主键约束2.2、主键自增长2.3、唯一约束 三、域完整性约束3.1、非空约束3.2、默认值 四、引用完整性约束 一、是什么 用于限制加入表的数据的类型和规范,约束是添加在列上的,用来约束列的。 分类: …...

Anolis OS 8.4修复CVE-1999-0554漏洞记录

1. 使用TCP Wrappers配置白名单 通过修改/etc/hosts.allow和/etc/hosts.deny文件,仅允许特定IP访问NFS的mountd服务(需确保系统支持TCP Wrappers): 编辑/etc/hosts.allow,添加允许的客户端IP(如192.168.1…...

Seata AT模式的一些常见问题及其源码解析

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 Seata AT 基于两阶段提交协议的演变: 一阶段:业…...

华为GaussDB数据库的手动备份与还原操作介绍

数据库的备份以A机上的操作为例。 1、使用linux的root用户登录到GaussDB服务器。 2、用以下命令切换到 GaussDB 管理员用户,其中,omm 为当前数据库的linux账号。 su - omm 3、执行gs_dump命令进行数据库备份: 这里使用gs_dump命令进行备…...

2025年3月29日(matlab -ss -lti)

线性时不变系统(LTI系统)的定义与核心特性 线性时不变系统(Linear Time-Invariant System)是信号与系统分析中的基础模型,其核心特性包括线性和时不变性。以下从定义、验证方法和应用场景展开说明: 1. 线性…...

网络原理-TCP/IP

网络原理学习笔记:TCP/IP 核心概念 本文是我在学习网络原理时整理的笔记,主要涵盖传输层、网络层和数据链路层的核心协议和概念,特别是 TCP, UDP, IP, 和以太网。 一、传输层 (Transport Layer) 传输层负责提供端到端(进程到进…...

服务器磁盘卷组缓存cache设置介绍

工具1: storcli a. 确认软件包是否安装 [rootlocalhost ~]#rpm -qa | grep storcli storcli-1.21.06-1.noarch 备注:若检索结果为空,需要安装对应的软件安装包。安装命令如下: #rpm -ivh storcli-xx-xx-1.noarch.rpm b. 查看逻辑…...

Unity顶点优化:UV Splits与Smoothing Splits消除技巧

一、顶点分裂问题概述 1. 什么是顶点分裂 顶点分裂(Vertex Splits)是3D渲染中常见的性能问题,当模型需要为同一顶点位置存储不同属性值时,会创建多个顶点副本。主要分为两类: UV Splits:由UV不连续引起 Smoothing Splits&#…...

第五十三章 Spring之假如让你来写Boot——环境篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...

Router [Continuation Settings]

楼上网络CMCC-Wmew,楼下接收不到,可能因为喜好弱,再弄一台路由器中转一下 Router [Continuation Settings] 路由器中续设置 到这里这台K3的路由器设置完成了,作为转发,中续,她还需要设置上游路由器&#…...

Zookeeper中的Zxid是如何设计的

想获取更多高质量的Java技术文章?欢迎访问Java技术小馆官网,持续更新优质内容,助力技术成长 Java技术小馆官网https://www.yuque.com/jtostring Zookeeper中的Zxid是如何设计的 如果你们之前学习过 ZooKeeper,你们可能已经了解…...

蓝桥云客 岛屿个数

0岛屿个数 - 蓝桥云课 问题描述 小蓝得到了一副大小为 MN 的格子地图,可以将其视作一个只包含字符 0(代表海水)和 1(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右…...

深度学习篇---paddleocr正则化提取

文章目录 前言一、代码总述&介绍1.1导入必要的库1.1.1cv21.1.2re1.1.3paddleocr 1.2初始化PaddleOCR1.3打开摄像头1.4使用 PaddleOCR 进行识别1.5定义正则表达式模式1.6打印提取结果1.7异常处理 二、正则表达式2.1简介2.2常用正则表达式模式及原理2.2.1. 快递单号模式2.2.2…...

Android 蓝牙/Wi-Fi通信协议之:低功耗蓝牙(BLE 4.0+)介绍

介绍:蓝牙通信协议详解 1. 蓝牙协议分层 Android主要支持**经典蓝牙(Bluetooth Classic)和低功耗蓝牙(BLE)**两种模式: 经典蓝牙(BT 2.1/3.0) 低功耗蓝牙(BLE 4.0&…...

流影---开源网络流量分析平台(四)(分析引擎部署)

目录 功能介绍 部署过程 一、安装依赖环境 二、源码编译部署 三、运行环境配置 四、运行配置 功能介绍 本章我将继续安装流影的分析引擎组件首先,ly_analyser是流影的威胁行为分析引擎,读取netflow v9格式的数据作为输入,运行各种威胁行…...

31天Python入门——第14天:异常处理

你好,我是安然无虞。 文章目录 异常处理1. Python异常2. 异常捕获try-except语句捕获所有的异常信息获取异常对象finally块 3. raise语句4. 自定义异常5. 函数调用里面产生的异常补充练习 异常处理 1. Python异常 Python异常指的是在程序执行过程中发生的错误或异…...

浅析Android Jetpack ACC之LiveData

一、Android Jetpack简介 Android官网对Jetpack的介绍如下: Jetpack is a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that develo…...

【区块链安全 | 第十五篇】类型之值类型(二)

文章目录 值类型有理数和整数字面量(Rational and Integer Literals)字符串字面量和类型(String Literals and Types)Unicode 字面量(Unicode Literals)十六进制字面量(Hexadecimal Literals&am…...

深度学习篇---模型训练评估参数

文章目录 前言一、Precision(精确率)1.1定义1.2意义1.3数值接近11.4数值再0.5左右1.5数值接近0 二、Recall(召回率)2.1定义2.2意义2.3数值接近12.4数值在0.5左右2.5数值接近0 三、Accuracy(准确率)3.1定义3…...

SQL Server 可用性组自动种子设定失败问题

目录标题 SQL Server 可用性组自动种子设定失败问题笔记一、问题背景二、错误日志分析错误信息错误代码与分析 三、自动种子设定概述(同上,无需修改)四、解决步骤1. 备份主数据库2. 在辅助副本上恢复数据库3. 重新启动自动种子设定 SQL Serve…...

02 相机标定相关坐标系

标定相关坐标系 一共四个坐标系 图像像素坐标系: u-v,图像左上角为原点图像物理坐标系: x-y,图像中心为原点...

Ubuntu修改用户名

修改用户名: 1.CTRL ALT T 快捷键打开终端,输入‘sudo su’ 转为root用户。 2.输入‘ gredit /etc/passwd ’,修改用户名,只修改用户名,后面的全名、目录等不修改。 3.输入 ‘ gedit /etc/shadow ’ 和 ‘ gedit /etc/…...

Windows 系统下多功能免费 PDF 编辑工具详解

IceCream PDF Editor是一款极为实用且操作简便的PDF文件编辑工具,它完美适配Windows操作系统。其用户界面设计得十分直观,哪怕是初次接触的用户也能快速上手。更为重要的是,该软件具备丰富多样的强大功能,能全方位满足各类PDF编辑…...

UE学习记录part11

第14节 breakable actors 147 destructible meshes a geometry collection is basically a set of static meshes that we get after we fracture a mesh. 几何体集合基本上是我们在断开网格后获得的一组静态网格。 选中要破碎的网格物品,创建集合 可以选择不同的…...

Redis-07.Redis常用命令-集合操作命令

一.集合操作命令 SADD key member1 [member2]: sadd set1 a b c d sadd set1 a 0表示没有添加成功,因为集合中已经有了这个元素了,因此无法重复添加。 SMEMBERS key: smembers set1 SCARD key: scard set1 SADD key member1 …...

vscode 源代码管理

https://code.visualstudio.com/updates/v1_92#_source-control 您可以通过切换 scm.showHistoryGraph 设置来禁用传入/传出更改的图形可视化。...

arm64位FFmpeg与X264库

参考链接: https://blog.csdn.net/gitblog_09700/article/details/142945092...

iOS审核被拒:Missing privacy manifest 第三方库添加隐私声明文件

问题: iOS提交APP审核被拒,苹果开发者网页显示二进制错误,收到的邮件显示的详细信息如下图: 分析: 从上面信息能看出第三方SDK库必须要包含一个隐私文件,去第三方库更新版本。 几经查询资料得知,苹果在…...

用mkdocs写文档#自动更新github-page

https://wuyisheng.github.io/blog 背景是上一篇博客 使用mkdocs,最后提及可以部署github page。这里说明下怎么自动部署。 当然,这篇博客主要的目的还是提供下github page的链接 :) 我是这样做的: step 1: pip3 i…...

【LeetCode Solutions】LeetCode 101 ~ 105 题解

CONTENTS LeetCode 101. 对称二叉树(简单)LeetCode 102. 二叉树的层序遍历(中等)LeetCode 103. 二叉树的锯齿形层序遍历(中等)LeetCode 104. 二叉树的最大深度(简单)LeetCode 105. 从…...