【MySQL数据库】 四

本文主要介绍了mysql数据库的几种常见的约束. 

一.数据库约束

我们希望存储的数据是靠谱的,mysql提供一些机制来辅助我们自动的依赖程序对数据进行检查 .

这类查数据的机制,就是约束

一旦约束好了,后续在进行增 删 改的时候,mysql就会自动的对修改的数据做出检查,如果不符合约束就会直接报错 !

not null

不是存储null值 . 跟在列名类型后面

unique

唯一 . 保证某列的某行必须有唯一的值

default

标识没有给值时候的默认值

primary key

主键 , 非空 唯一

foreign key

外键


  • not null

  • unique

指的是同一列不允许出现重复的值

设置id为unique,当插入两条id相同的数据,那么就会报错

  • default

如果未设置,使用默认值

  • primary key

主键约束

1.非空

2.不能重复

一个表只能有一个主键

自增主键

主键往往是一个整数类型的id,要求不能重复

允许客户端,在插入数据的时候,不手动指定主键的值,而是交给mysql自行分配,确保分配出来的这个主键的值,和之前的不重复

此时允许id设置为null,mysql会自动自增

mysql 服务器会维护id的最大值,每次从最大的id开始自增

如果mysql是一个单个节点的系统,基于上述策略,是没有问题的

如果mysql是一个分布式系统(有好几个主机,每个主机上都有mysql),此时自增主键就无法保证唯一性了


为了解决这个问题,市面上有一些分布式id的生成算法 ; 核心公式,目的就是为了保证系统上每个节点生成的id是唯一的 , 把id作为作为一个字符串,这个字符串由下列几个部分拼接成

1.主机编号/机房编号

2.时间戳

3.随机因子

生成的字符串格式的id就能够保证分布式系统下的唯一性了

分布式系统

由于一台主机的硬件资源是有限的 (cpu/内存/硬盘/网络带宽) ,增加主机就可以解决资源不足的问题.

  • foreign key

外键约束

父表:起约束的表

子表:受约束的表

1.插入或者修改子表中受约束的这一列的数据,就需要保证插入/修改后的数据在父表中是存在的. 如果是不存在的,就会报错

2.如果删除/修改父表中的记录,就需要看这个记录在子表中被使用了,如果被使用了,就不能进行删除/修改! ! !

索引

设置外键的时候,就会导致在进行的子表的时候,频繁的查询父表 ,这个操作是很耗时的,

为了加快查询速度,如果父表中的id这一列是带有索引,那就很好 

primary key和unique这两个约束,都是有索引的

3.没有索引,就不能建立外键

  • check

写一个具体的表达式 , 符合当前的记录条件就可以进行插入/修改

对于mysql5来说,不支持check (写了也无效)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wscat

wscat 是一个用于 WebSocket 通信测试的命令行工具 安装wscat flynnsinflynnsin:~$ sudo npm install -g wscat loadDep:ws → afterAdd ▄ ╢████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░…

爱上C语言:函数递归,青蛙跳台阶图文详解

🚀 作者:阿辉不一般 🚀 你说呢:生活本来沉闷,但跑起来就有风 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请…

大数据毕业设计选题推荐-旅游景点游客数据分析-Hadoop-Spark-Hive

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

修复RGBA的png为RGB的png

修改IHDR里面的color type 修改IHDR的crc 删除sBit和sRGB两个chunk

linux中各种最新网卡2.5G网卡驱动,不同型号的网卡需要不同的驱动,整合各种网卡驱动,包括有线网卡、无线网卡、Wi-Fi热点

linux中各种最新网卡2.5G网卡驱动,不同型号的网卡需要不同的驱动,整合各种网卡驱动,包括有线网卡、无线网卡、自动安装Wi-Fi热点。 最近在做路由器二次开发,现在市面上卖的新设备,大多数都采用了2.5G网卡,…

crond服务

目录 一、crond服务基础知识 1、crond服务介绍 2、查看crond服务的状态 3、crond服务配置文件详解 4、额外的配置文件目录 二、crond服务基础命令 1、crond服务使用 2、 管理和操作 crond 服务 3、crond服务命令举例 一、crond服务基础知识 1、crond服务介绍 1、crond…

bug: https://aip.baidubce.com/oauth/2.0/token报错blocked by CORS policy

还是跟以前一样,我们先看报错点:(注意小编这里是H5解决跨域的,不过解决跨域的原理都差不多) Access to XMLHttpRequest at https://aip.baidubce.com/oauth/2.0/token from origin http://localhost:8000 has been blo…

HarmonyOS 数据管理与应用数据持久化(二)

通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备…

100量子比特启动实用化算力标准!玻色量子重磅发布相干光量子计算机

2023年5月16日,北京玻色量子科技有限公司(以下简称“玻色量子”)在北京正大中心成功召开了2023年首场新品发布会,重磅发布了自研100量子比特相干光量子计算机——“天工量子大脑”。 就在3个月前,因“天工量子大脑”在…

ModbusTcp通信(S7-1200PLC作为服务器端)

S7-200Smart plc作为ModbusTcp服务器端的通信 S7-200SMART PLC ModbusTCP通信(ModbusTcp服务器)_s7-200 modbustcp-CSDN博客文章浏览阅读2.3k次。S7-200SMART PLC 作为ModbusTCP通信(客户端)编程应用和程序详细讲解可以查看下面的博客,链接地址如下:S7-200SMART PLC Modbus…

你的停机真的优雅么?第二弹来袭 | 京东云技术团队

1. 前言 之前总结了一篇基于现有业务线在停机重启时会产生RPC和MQ调用强杀导致业务数据不一致文章,文中通过优雅停机改造对RPC服务进行反注册和MQ进行暂停消费,进而可以解决在停机时强制kill掉RPC线程或者MQ线程导致数据不一致现象,具体的原…

服务号能升级成订阅号吗

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?一、文章推送的篇数不同服务号在文章的推送篇数上是有所限制的(每月推4次)订阅号则每天可推送一篇文章。二、定义不同服务号主要是为关注用户提供服务使用的;订阅…

SQL数据库使用方法

首先打开sqlite3.exe所在文件夹,如图1 图1 在文件夹路径中将路径改为cmd,如图2所示 图2 在弹出的cmd窗口中输入如图3所示。 图3 sqlite3 tichiceliang.db 其中tichiceliang是数据库名称。然后按enter,再在cmd中输入.table,可以看到文件夹目…

一种使用wireshark快速分析抓包文件amr音频流的思路方法

解决方案: 1. 使用wireshark过滤amr,并导出原始数据文件; 2.使用ue的二进制编辑模式,编辑该文件,添加amr头,6个字节数据“#!AMR”,字节数据为 23 21 41 4D 52 0A 3.修正格式:通过抓包发现&#…

idea 将分支的代码合并到master

idea 将分支的代码合并到master 1. 首先签出到自己的分支 (自己的分支是自己写的代码,需要合并到master分支去) 2. 然后选中master分支,右键选择 签出并变基到“feature_SC” ,完成之后master分支中就已经是完整的代码了。 当…

基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python 计算机竞赛

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…

解决vue3父组件执行子组件方法报错:TypeError: Cannot read properties of null

现象: 父组件执行子组件的代码: 原因: Vue3使用的所有变量除了来自父组件传值的props以外,其他的html绑定的所有本地变量都必须通过return导出! 这一点是vue3 最坑爹的一点。很容易忘记。 解决办法:使用t…

如何在苹果Mac系统设置中查看Wi-Fi密码?

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上,选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」,单击「高级」。 3.…

小程序如何设置自动预约快递

小程序通过设置自动预约功能,可以实现自动将订单信息发送给快递公司,快递公司可以自动上门取件。下面具体介绍如何设置。 在小程序管理员后台->配送设置处,选择首选配送公司。为了能够支持自动预约快递,请选择正常的快递公司&…

【Nuxt】Nuxt3 中使用 swiper 并自动滑动、手动滑动、点击滑动

demo 示例 建议先看官网 nuxt-swiper .vue 文件中使用 样式请根据你项目实际来,只展示基础配置 import { Swiper, SwiperSlide } from swiper/vue import { Autoplay } from swiper/modules import swiper/css let useSwiper: any null // swiper实例 // 初始…