MySQL数据表的约束

news2025/1/21 12:05:34

数据表约束:对于某一列的值能添加哪些内容做了一定的限制,这种限制的手段就称为约束。

(一)约束的类型

NOT NULL 指示某列不能存储 NULL 值。
UNIQUE保证某列的每行必须有唯一的值。
DEFAULT规定没有给列赋值时的默认值。
PRIMARY KEY NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。 
FOREIGN KEY 保证一个表中的数据匹配另一个表中的值的参照完整性。 
CHECK 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 CHECK子句。(MySQL8.016版本后才支持check约束)

(二)非空约束(NOT NULL)

           若在某一属性定义时规定该属性 not null ,不能将空值存放在该属性中。

 在创建表之后添加非空约束,必须将当前表中要添加非空约束的属性为null的行先删除或者修改为非空。

(三)唯一约束(UNIQUE)

        指的是对应字段是唯一的,不能重复。一个表的唯一约束可以有多个

null值不受唯一键的约束

 查看唯一约束 show keys from tb_name;

创建表之后想修改某一属性为唯一约束:alter table tb_name add unique(属性名称); 

注意:添加前要保证当前表中要添加的属性没有重复值。

(四)默认值约束 (DEFAULT)

规定了默认值的表,在插入数据时若没有指定该列,则使用默认值插入数据

若显示对默认值的列插入null值,不会触发默认值

(五)主键约束(PRIMARY KEY)

1.primary key = unique + not null   

在MySQL中,某个属性使用 unique + not null -->默认会将该属性置为主键!(第一个unique + not null),因为一个表中只能有一个主键

(2)主键列的值不能重复,不能为null

(3)删除表中主键

alter table tb_name drop primary key;

(4)创建表之后添加主键     前提:当前表中没有主键约束

alter table tb_name add primary key(作为主键的属性名称);

(4-1)单一主键

(4-2)联合主键 :主键约束可以由多列共同组成

(5)自增主键 auto_increment

一般来说作为主键的列都是int 或者是定长的char 类型,且因为主键不重复且不为空,因此我们可以将主键的增长交给数据库自动执行。

(5-1)自增主键可以显示的插入 null 或者不写,都会触发自增操作

 (5-2)自增主键是以当前已经出现过的数字最大值 + 1;

(5-2-1)delete 删除表数据

 (5-2-2)truncate删除表数据

truncate 表数据后,插入数据会还原自增主键的值

 (5-3)可以显示给自增主键插入一个值

下次触发自增操作时,仍然是以当前出现过的数字最大值作为基准自增

(5-4)插入失败,报错也会使用自增主键

(六)外键约束 (FOREIGN KEY)

外键用于关联其他表,涉及多个表之间的关联约束,语法:

                foreign key (当前表中的哪个属性) references 主表(关联属性)

 

 (1)添加时,主表中的关联属性必须存在相应值后才能在从表(当前表)中插入数据。

student表中 class_id关联class表的id属性,student表中插入数据时,属性class_id要能正确插入,class表中的id值必须存在。

 (2)删除时,先看从表,从表中外键约束的属性关联的所有记录都删除后才能在执行主表的删除操作。

 

 

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

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

相关文章

利用less实现多主题切换(配合天气现象)

1. 先看效果: 2. 话不多说直接撸吧: 原理:先给body元素添加style,再根据天气现象动态更改style 开撸: 创建src/assets/style/variables.less 使用 XXX:var(–XXX,‘style’) 声明系列变量,之后添加其他变…

redis如何保证接口的幂等性

背景 如何防止接口中同样的数据提交,以及如何保证消息不被重复消费,这些都是shigen在学习的过程中遇到的问题。今天,趁着在学习redis的间隙,我写了一篇文章进行简单的实现。 注意:仅使用于单机的场景,对于…

春秋云镜 CVE-2017-1000480

春秋云镜 CVE-2017-1000480 Smarty < 3.1.32 PHP代码执行漏洞 靶标介绍 3.1.32 之前的 Smarty 3 在未清理模板名称的自定义资源上调用 fetch() 或 display() 函数时容易受到 PHP 代码注入的影响。 启动场景 漏洞利用 poc /index.php?eval*/phpinfo();/*/index.php?ev…

原生JavaScript+PHP多图上传实现

摘要 很多场景下需要选择多张图片上传&#xff0c;或者是批量上传以提高效率&#xff0c;多图上传的需求自然就比较多了&#xff0c;本文使用最简单的XMLHttpRequest异步上传图片。 界面 上传示例 代码 index.html <!DOCTYPE html> <html><head><titl…

node.js下载安装环境配置以及快速使用

目录 一、下载 二、安装 三、测试安装是否成功 四、配置环境 五、测试配置环境是否成功 六、安装淘宝镜像 七、快速上手 1、建立一个自己的工作目录 2、下载工作代码 八、各种配置文件匹配问题入坑 九、总结 一、下载 Node.js 中文网 想选择其他版本或者其他系统使用…

【Chrome】chrome浏览器未连接到互联网

问题描述 电脑上安装了一个联想电脑管家&#xff0c;进行了一下清理&#xff0c;并优化了一下启动项&#xff0c;Chrome浏览器突然什么网站都无法访问了。以为更新坏了&#xff0c;但相同的网站放到火狐浏览器上&#xff0c;竟然可以打开&#xff0c;怎么回事呢&#xff1f;怎…

使用EMgu检测人脸

1,安装EMgu 在NuGet中,查找并安装EMgu 2,做人脸检测 首先,声明几个重要的类 //Thread.Sleep(3000);matImg = new Mat();capture.Retrieve(matImg, 0); frame=new Image<Bgr, byte>(matImg.Bitmap); 当,frame != null时,检测到人脸 3,给人脸画框 i…

MySQL主从分离读写复制

在高负载的生产环境里&#xff0c;把数据库进行读写分离&#xff0c;能显著提高系统的性能。下面对MySQL的进行读写分离。 试验环境 A机&#xff1a;IP:192.168.0.1 mysql版本&#xff1a;mysql-5.6.4,主数据服务器&#xff08;只写操作&#xff09; B机&#xff1a;IP:192.…

SpringMVC_执行流程

四、SpringMVC执行流程 1.SpringMVC 常用组件 DispatcherServlet&#xff1a;前端控制器&#xff0c;用于对请求和响应进行统一处理HandlerMapping&#xff1a;处理器映射器&#xff0c;根据 url/method可以去找到具体的 Handler(Controller)Handler:具体处理器&#xff08;程…

SpringMVC实现增删改查

文章目录 一、配置文件1.1 导入相关pom依赖1.2 jdbc.properties&#xff1a;配置文件1.3 generatorConfig.xml&#xff1a;代码生成器1.4 spring-mybatis.xml &#xff1a;spring与mybatis整合的配置文件1.5 spring-context.xml &#xff1a;上下文配置文件1.6 spring-mvc-xml:…

uni-app 之 获取网络列表数据

uni-app 之 获取网络列表数据 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view v-for"(item) in caturl" :key&…

学信息系统项目管理师第4版系列05_组织通用管理

1. 流程管理 1.1. 流程是组织运行体系的框架基础&#xff0c;流程框架的质量影响和决定了整个组织运行体系的质量 1.2. 流程是指工作活动流转的过程 1.2.1. 流程可以是跨部门、跨岗位工作活动流转的过程 1.3. 业务流程是一组将输入转化为输出的相互关联或相互作用的活动 1…

NPM 常用命令(六)

1、npm explain 1.1 命令使用 npm explain <package-spec>别名: why 1.2 描述 此命令将打印导致在当前项目被其他引用包的依赖链。 如果提供了一个或多个包规范&#xff0c;则只有与其中一个说明符匹配的包才会解释它们的关系。 包规范还可以引用 ./node_modules 中…

Typescript技术分享

1、初识TypeScript TypeScript是什么&#xff1f; TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集。TypeScript 在 JavaScript 的基础上添加了可选的静态类型和基于类的面向对象编程。 2、TS类型 2.1 布尔类型(boolean) boolean类型只有两个取…

重建与发展:数字资产借贷行业朝着可持续发展迈进!

纵观历史&#xff0c;贷款和货币一样古老&#xff0c;无论哪种形式的货币都需要有其借贷市场。现在&#xff0c;比特币以其分散和透明的性质&#xff0c;在加密领域占据龙头地位。 就像之前的货币一样&#xff0c;比特币要真正蓬勃发展&#xff0c;也需要一个强大的借贷市场。然…

2023计算机毕业设计题目 毕设选题大全

文章目录 0 前言1 java web 管理系统 毕设选题2 java web 平台/业务系统 毕设选题3 游戏设计、动画设计类 毕设选题 (适合数媒的同学)4 算法开发5 数据挖掘 毕设选题6 大数据处理、云计算、区块链 毕设选题7 网络安全 毕设选题8 通信类/网络工程 毕设选题9 嵌入式 毕设选题10 开…

数据中心的未来是什么?

数据中心作为数字化经济的基础设施&#xff0c;在未来的发展中将会呈现出以下几个趋势和变化&#xff1a;多云环境的普及&#xff1a;未来的数据中心将会逐渐实现多云环境的兼容和协同&#xff0c;支持从公共云、私有云到混合云的多重部署模式。多云化环境将提供更多的选择和灵…

Matlab图像处理-最大类间方差阈值选择法(Otsu)

基本思想 最大类间方差阈值选择法又称为Otsu 算法&#xff0c;该算法是在灰度直方图的基础上用最小二乘法原理推导出来的&#xff0c;具有统计意义上的最佳分割阈值。它的基本原理是以最佳阈值将图像的灰度直方图分割成两部分&#xff0c;使两部分之间的方差取得最大值&#x…

全球城市汇总【最新】

文章目录 案例图国家城市大洲 数据 全球城市、国家、介绍汇总。包含 .csv .sql .xml 格式数据。 案例图 国家 城市 大洲 数据 获取上图资源绑定 https://blog.csdn.net/qq_40374604/category_12435042.html 如找不到在合集中查找。

【web开发】3、Bootstrap基础

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Bootstrap是什么&#xff1f;二、使用步骤1.引入Bootstrap2.Bootstrap常用全局 CSS 样式介绍与示例布局容器栅格系统排版代码表格表单按钮图片辅助类3.Bootstra…