MySQL【知识改变命运】08

数据库约束

  • 1:约束的几个类型
  • 2:NOT NULL非空约束
  • 3:UNIQUE 唯⼀约束
  • 4:PRIMARY KEY 主键约束
    • 4.1:回顾
  • 5:FOREIGN KEY 外键约束
    • 5.1:创建班级表(主表),并初始化数据
    • 5.2:重构学⽣表(从表),加⼊外键约束
  • 6:DEFALUT 默认值约束
  • 7:CHECK 约束

数据库约束是关系型数据库的一个重要约束
主要保证数据插入的有效性(数据本身是否正确,关联关系是否正确)
人工检查数据工作量太大了,在数据库中定义一些约束,那么数据在写入数据库时候,就会帮助我们做一些检查。

1:约束的几个类型

类型说明
NOT NULl非空约束指定非空约束列不能出现NULL 值
DEFALUT 默认约束当前没有给指定列值时候。默认使用默认值。
UNIQUE 唯一约束指定唯一约束的列,这条列上面不能出现相同的值
FRIMARY KEY 主键约束NOT NULL和UNIQUE的结合,可以指定一个或者多个列(复合主键),但是只能有一个主键,有助于数据的查询
POREIGN KEY 外键约束外键约束关联两张表
CHECK 约束用于限制或数据库表中的值,确保数据可靠性,准确性

2:NOT NULL非空约束

创建一个表:
在这里插入图片描述

创建一个学生表中,name一般不能为NULL,名字为那样就没有意义。我们就要给名字加上NOTNULL 非空约束条件;
在这里插入图片描述
在这里插入图片描述
我们查询表结构,就可以看出来NULL那一列为no表示不能为NULL值

在这里插入图片描述
这样name这一列添加NULL就会报错。

3:UNIQUE 唯⼀约束

当我们设置让一个列有唯一值时候,就可以给这列设置UNIQUE ,比如我们让id列为唯一值;
创建一个表:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们给id列限制了UNIQUE,id就不能插入重复值,所有当第二次插入数据时候,就报错了,但是可以插入NULL
在这里插入图片描述

4:PRIMARY KEY 主键约束

主键约束唯⼀标识数据库表中的每条记录。
主键必须包含唯⼀的值,且不能包含 NULL 值。
每个表只能有⼀个主键,可以由单个列或多个列组成。
通常为每张表都指定⼀个主键,主键列建议使⽤BIGINT类型

在这里插入图片描述
在这里插入图片描述
主键=唯一+非空。
我们也可以给主键加入自增列标识:

在这里插入图片描述
我们在设置AUTO_INCREMENT前id列是不可以插入NULL,但是设置后,可以插入NULL,但是NULL会被转化id自增列的数据
在这里插入图片描述

在这里插入图片描述
我们也可以手动设置主键列的值auto_increment
在这里插入图片描述
在这里插入图片描述
下次auto_increment 就是从1001开始计数。

每个表只能有一个主键
在这里插入图片描述
但是一个主键可以包含多个列:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是复合健必须所有列都是一样的才能被判定为一样。、
在这里插入图片描述
替换,如果存在冲突则替换,不存在冲突则插⼊

# 语法
REPLACE [INTO] table_name[(column [, column] ...)]
VALUES(value_list) [, (value_list)] ...
value_list: value, [, value] ...

4.1:回顾

在这里插入图片描述
接下来介绍一下自增操作:
自增操作不管插入数据失败还是成功都不会回退,自增操作在插入的前面。

5:FOREIGN KEY 外键约束

外键⽤于定义主表和从表之间的关系
外键约束主定义在从表的列上,主表关联的列必须是主键或唯⼀约束
当定义外键后,要求从表中的外键列数据必须在主表的主键或唯⼀列存在或为null。

5.1:创建班级表(主表),并初始化数据

在这里插入图片描述

5.2:重构学⽣表(从表),加⼊外键约束

# 语法:
foreign key (id) references class(id)
drop table if exists student;# 重构表
create table student(
id bigint PRIMARY KEY auto_increment, name varchar(20) not null,age int DEFAULT 18,class_id bigint,foreign key (class_id) references class(id) # 创建外键约束
);

查看表结构,Key列的值为MUL表⽰外键约束的列
在这里插入图片描述
正常插⼊数据
在这里插入图片描述
插⼊⼀个班级号为100的学⽣,由于主表中没有这个班级,插⼊失败
在这里插入图片描述
插⼊班级Id为NULL的记录,可以成功,表⽰当前学⽣还没有分配置班级
在这里插入图片描述
删除主表某条记录时,从表中不能有对该记录的引⽤
在这里插入图片描述
删除主表某条记录时,从表中不能有对该记录的引⽤
在这里插入图片描述
删除主表时要先删除从表

6:DEFALUT 默认值约束

DEFAULT 约束⽤于向列中插⼊默认值,如果没有为列设置值,那么会将默认值设置到该列
语法:

DEFALUT 默认值

7:CHECK 约束

可以应⽤于⼀个或多个列,⽤于限制列中可接受的数据值,从⽽确保数据的完整性和准确性。在8.0.16开始全⾯⽀持CHECK约束,之前的版本会忽略CHECK的定义
但是注意,一般再应用程序级别校验

create table student(id bigint PRIMARY KEY auto_increment, # 设置⾃增主键name varchar(20) not null,age int DEFAULT 18,gender char(1),check (age >= 16),check (gender = '男' or gender = '⼥')
);

列与列之间也可以⽐较,需要在单独⼀⾏中定义

create table t_check (c1 int check(c1 <> 0),c2 int check(c2 > 0),c3 int,check(c3 >= c2)
);

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

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

相关文章

移动云智算平台,斩获两大国际知名设计奖项

近日&#xff0c;移动云一站式智算平台从全球激烈的竞争中脱颖而出&#xff0c;斩获2024年缪斯设计奖与法国设计奖两项国际知名设计大奖。这两大奖项在全球设计与创新领域颇具影响力&#xff0c;致力于表彰来自全球的优秀和原创设计作品。此次获奖&#xff0c;体现了移动云出色…

5. Node.js Http模块

2.4 Http模块 2.4.1创建Http服务端 //1.导入http模块 let http=require(http)//2.创建服务对象 let server=http.createServer((request,response)=>{console.log(request.method) //获取请求方式console.log(request.url) //获取请求url(路径和参数部份…

JavaWeb Servlet--09深入:注册系统04--修改页面

修改页面 分析&#xff1a;点击修改超链接&#xff0c;就跳转到一个修改界面&#xff0c;要显示原本的数据&#xff0c;且密码显示出来&#xff0c;在该页面将对用户的数据的进行修改&#xff0c;最后提交。 开始业务&#xff1a; 1.在web下创建一个修改界面update.jsp 写法…

蓝牙资讯|苹果AirPods Pro 2耳机推送开发者Beta固件

科技媒体 MacRumors 报道&#xff0c;苹果公司邀请开发者&#xff0c;针对 Lightning 和 USB-C 接口的 AirPods Pro 2 耳机&#xff0c;推送了新的 7B5013d 固件版本&#xff0c;较之前的 7B5013c 有所提升。 苹果未来会向所有 AirPods Pro 2 用户推送本次固件更新&#xff0…

基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析

本文探讨了Python脚本与动态模态分解(DMD)的结合应用。我们将利用Python对从OpenFOAM模拟中提取的二维切片数据进行DMD计算。这种方法能够有效地提取隐藏的流动模式,深化对流体动力学现象的理解。 使用开源CFD软件OpenFOAM,有两种方法可以对CFD数据进行DMD计算。第一种方法是直…

外卖平台开发定制全攻略:从选技术到上线运营

随着外卖行业的蓬勃发展&#xff0c;越来越多的餐饮企业希望拥有一个定制化的外卖平台&#xff0c;以便在激烈的市场竞争中脱颖而出。那么&#xff0c;如何从技术选型到平台开发再到上线运营&#xff0c;打造一个适合自身业务的外卖平台&#xff1f;本文将从开发技术、系统架构…

LLM中20种提示词策略

在大型语言模型&#xff08;LLM&#xff09;应用中&#xff0c;Prompt策略是指如何设计输入提示&#xff08;Prompt&#xff09;以引导模型生成期望的输出。以下是一些常见的Prompt策略&#xff1a; 1. 零样本提示&#xff08;Zero-Shot Prompting&#xff09; 描述: 模型在没…

微信小程序-自定义组件

文章目录 微信小程序-自定义组件概述创建和使用数据、方法和属性slot 插槽默认插槽具名插槽 组件样式注意项样式隔离 数据监听组件间通信父传子子传父获取子组件实例 生命周期组件的生命周期组件所在页面的生命周期App、Page与Component生命周期对比冷启动保留当前页面和关闭当…

Hadoop集群基础搭建

目录 一.虚拟机安装 1.配置虚拟机的ip 2.配置本机的ip 3.新建虚拟机 4.克隆三台虚拟机 二.虚拟机网络配置 1.修改ip配置 2.配置主机名和主机映射 3.配置SSH免密登陆 三.安装JDK 1.tar命令解压JDK安装包 2.配置JDK的环境变量 四.安装Hadoop 1.tar命令解压Hadoop安…

AnaTraf | 深入探秘:如何利用网络报文分析仪进行高效抓包分析

目录 什么是网络报文分析仪&#xff1f; 抓包分析的核心作用 1. 故障排除 2. 性能优化 3. 安全监测 抓包分析的常见场景与技巧 1. 分析网络延迟问题 2. 排查TCP三次握手问题 3. 分析丢包问题 总结 AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具A…

智能驾驶必备:MEB低速紧急制动功能如何保护你的车辆?

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

springboot家庭膳食生活助手小程序-计算机毕业设计源码85829

摘 要 家庭膳食生活助手系统是一个基于小程序平台的项目&#xff0c;采用springboot框架进行开发。该系统旨在帮助用户更加便捷地规划和管理家庭膳食&#xff0c;促进健康饮食和生活方式。本系统通过用户自定义的家庭成员信息和饮食偏好&#xff0c;智能生成个性化的膳食计划…

【C++】类和对象(类的默认成员函数)

目录 一.构造函数 二.析构函数 三.拷贝构造函数 四.赋值运算符重载 五.取地址运算符重载 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数。 一.构造…

【C语言】函数的声明与定义

函数的声明 用户自定义函数需要在main函数之前进行声明&#xff0c;用分号结尾。 函数的定义 用户自定义函数在main函数之后进行定义&#xff0c;需要写出具体形参的变量名。注意函数的返回值和返回值类型要一一对应。 函数的调用 调用时&#xff0c;直接使用函数名进行调用&am…

【v5.3.0】修复订单批量发货提示 isPicUpload is not defined

使用订单批量发货的时候&#xff0c;没有反应&#xff0c;控制台提示 ReferenceError: isPicUpload is not defined 修改文件src/pages/order/orderList/components/tableList.vue 把isPicUpload改成isFileUpload&#xff0c;然后重新打包admin后台上传即可

推荐系统框架

推荐系统框架 理论---->应用 fellow前沿的理论&#xff0c;应用到推荐系统 SoTA&#xff08;state of the art&#xff09;&#xff1a;意思是“最先进的”或“当前技术的最高水平”。通常用于描述某个领域中最新、最优或最具前沿性的技术、方法或成果。在研究和开发中&am…

【C语言】sizeof和strlen的区别

本篇博客将讲解以下知识&#xff1a; 1、sizeof和strlen的区别 1、sizeof和strlen的区别 &#xff08;1&#xff09;sizeof sizeof是单目操作符&#xff0c;不是函数&#xff0c;计算变量所占内存空间大小。单位是字节。如果操作数是类型的话&#xff0c;计算的是使用这种类型…

Bilidown v1.2.4 B站在线视频下载解析工具中文单文件版

Bilidown是一款专为B站视频下载而设计的工具&#xff0c;一款简洁好用的B站视频下载工具&#xff0c;支持由UP主上传的单集&#xff0c;多集以及相关封面&#xff0c;弹幕&#xff0c;字幕&#xff0c;音乐&#xff0c;刮削等等&#xff0c;支持任意粒度批量组合&#xff0c;登…

CSS3 提示框带边角popover

CSS3 提示框带边角popover。因为需要绝对定位子元素&#xff08;这里就是伪元素&#xff09;&#xff0c;所以需要将其设置为相对对位 <!DOCTYPE html> <html> <head> <title>test1.html</title> <meta name"keywords" con…

论文复现以及运行问题(论文:NUNO:一种非均匀数据下参数偏微分方程学习的通用框架)

前言 本人现在做的流固耦合案例里面包括流体和固体的数据&#xff0c;但是都是不均匀大小的网格数据&#xff08;点云的数据&#xff09;&#xff0c;不是均匀的网格数据&#xff0c;由于前期确定了使用模型wno小波神经算子&#xff0c;但是该模型输入为均匀的网格&#xff0c…