数据库->数据库约束

news2024/11/24 21:22:54

目录

一、数据库约束

1.定义

2.约束类型

3.NOT NULL 非空约束

4. UNIQUE 唯一约束

5.PRIMARY KEY 主键约束

1.主键的使用

2.把表中的主键交给数据库自己维护 

2.1主键列设置为null 则使用自增

2.2插入除了主键以外的所有非空列(推荐方法)

2.3自定义的主键值

4.为一个表定义两个主键(error)

5.一个主键包含多个列

6.主键或唯⼀键冲突时的更新操作

6.1 更新

6.2替换

6.FOREIGN KEY 外键约束

1.语法

2.应用

7.DEFALUT 默认值约束

1.应用

1.1重构学⽣表,有以下要求,年龄不能⼩于16岁,性别只能是男或⼥

1.2列与列之间进行比较


一、数据库约束

1.定义

数据库约束是关系型数据库的一个重要功能  

主要作用是保证数据的有效性  也可以理解为数据的正确性(数据本身是否正确,关联关系是否正正确)

人工检查数据的完整性工作量非常大,在数据库中定义一些约束,那么数据在写入数据库的时候,就会帮我们做一些检验

约束一般是在指定的列上创建的

2.约束类型

类型说明
NOT NULL⾮空约束指定⾮空约束的列不能存储 NULL 值
DEFALUT 默认约束当没有给列赋值时使⽤的默认值
UNIQUE 唯⼀约束指定唯⼀约束的列每⾏数据必须有唯⼀的值
PRIMARY KEY 主键约束NOT NULL 和 UNIQUE的结合,可以指定⼀个列或多个列,有助于防⽌数据
重复和提⾼数据的查询性能
FOREIGN KEY 外键约束外键约束是⼀种关系约束,⽤于定义两个表之间的关联关系,可以确保数据
的完整性和⼀致性
CHECK 约束 ⽤于限制列或数据在数据库表中的值,确保数据的准确性和可靠性

3.NOT NULL 非空约束

学⽣名为NULL时,这条记录是不完整的

在不可以为空的列后面加 not null 

4. UNIQUE 唯一约束

指定了唯⼀约束的列,该列的值在所有记录中不能重复,⽐如⼀个⼈的⾝份证号,学⽣的学号等

在需要加唯一约束的列后面加 unique 关键字

只加了唯一约束的列可以写入null  而且可以写入很多条null

5.PRIMARY KEY 主键约束

非空语约束 + 唯一约束 + 提高效率

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

1.主键的使用

在数据校验上   即非空 又 唯一

2.把表中的主键交给数据库自己维护 

2.1主键列设置为null 则使用自增

2.2插入除了主键以外的所有非空列(推荐方法)

2.3自定义的主键值

只要符合非空和唯一即可

自增操作一旦完成  不论是否写入成功 都不会回退

4.为一个表定义两个主键(error)

5.一个主键包含多个列

两列全部重复才报错

6.主键或唯⼀键冲突时的更新操作

6.1 更新

删除原数据  新增新数据

6.2替换

如果没有冲突则直接插入新数据 和 insert 的功能一样

6.FOREIGN KEY 外键约束

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

外键约束也是对数据的一个校验过程 从表中使用主表中的某个值 这个值必须在主表中存在

1.语法

foreign key (id) references class(id) -- 加入外界关联

2.应用

删除主表时 如果从表有对主表的引用 则不允许删除主表的记录

 删除主表时 应该先解除主外键关系 或者先删除从表

7.DEFALUT 默认值约束

指定值的列用具体的值填充  没有指定值的列 用默认值填充如果明确指定列的值为null   则用null填充改列 

默认约束只是数据库层面的一个兜底行为 

8.CHECK 约束

对单行数据进行检验 一般在应用程序级别进行校验

1.应用

1.1重构学⽣表,有以下要求,年龄不能⼩于16岁,性别只能是男或⼥

1.2列与列之间进行比较

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

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

相关文章

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多,学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作,实际开发中,是通过各类更上层的组件去实现。而这些组件在读写kafka数据时,用的当然是kafka的jav…

【K8S系列】Kubernetes 中 NodePort 类型的 Service 无法访问的问题【已解决】

在 Kubernetes 中,NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果 NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口进行访问,可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方…

如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!

随着中国开发者日益成熟,应用质量明显提升,越来越多的开发者选择出海寻找机会扩大市场。但“应用出海”说起来容易,做起来难。其中,最大的困恼就是对海外市场缺乏了解。 很多开发者会选择使用网络爬虫(Web Crawling&a…

centos7之LVS-DR模式传统部署

介绍 优缺点以及适用场景 优点:能负载更多的Realserver减轻LB的压力,性能高于tun模式。 缺点:不支持端口转发(VIP:80必须代理RIP:80),Realserver和LVS需要在同一网段下。 适用:适用于大多数公司,也是大多数公司用的最多的模式。…

爬虫+数据保存2

爬取数据保存到MySQL数据库 这篇文章, 我们来讲解如何将我们爬虫爬取到的数据, 进行保存, 而且是把数据保存到MySQL数据库的方式去保存。 目录 1.使用pymysql连接数据库并执行插入数据sql代码(insert) 2.优化pymysql数据库连接以及插入功能代码 3.爬取双色球网站的数据并保…

什么样的工程项目管理软件适合中小施工企业?

工程行业是典型的传统行业,劳动密集,协作频繁,依赖经验传承。在工程项目施工过程中,常见的难题纷繁复杂,其中包括效率低下、材料浪费、数据不实、原材料成本上涨、工期延误、质量缺陷和安全风险等。这些问题不仅阻碍了…

机器学习中的嵌入是什么?

一、说明 嵌入是真实世界对象的数字表示,机器学习(ML)和人工智能(AI)系统利用它来像人类一样理解复杂的知识领域。例如,计算算法了解 2 和 3 之间的差为 1,这表明与 2 和 100 相比,2…

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案

一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步,社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车辆、入室盗窃等不文明行为和违法行为频繁出现。目前,许多小区的物业管理和安全防护系统仍然较为简单和陈旧&a…

Typora一款极简Markdown文档编辑器和阅读器,实时预览,序列号生成!免费!最新可用!

文章目录 一、Typora下载和安装二、Typora序列号生成 Typora是一款Markdown编辑器和阅读器,风格极简,实时预览,所见即所得,支持MacOS、Windows、Linux操作系统,有图片和文字、代码块、数学公式、图表、目录大纲、文件管…

uniapp的video视频属性打包app后层级过高

问题:在使用uniapp开发APP时,使用video标签显示视频发现H5可以正常展示,但是打包到APP后,它的层级过高,把底部导航都盖住了。 官网说明:uni-app官网 官网给了cover-view组件或plus.nativeObj.view、subNVue…

人工智能原理实验一:知识的表示与推理实验

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对智能程序、智能算法等有…

混凝土裂缝图像分割系统:快速图像识别

混凝土裂缝图像分割系统源码&数据集分享 [yolov8-seg-C2f-RFAConv&yolov8-seg-C2f-SCConv等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glo…

不再输入单号查快递,批量查快递单号信息的新方法,智能排序快递时效并查找时效相同的单号,一站式物流查询解决方案

厌倦了逐个输入快递单号查询物流信息的繁琐过程?想要一键就能批量查询快递单号,并且智能排序快递时效,轻松查找时效相同的单号?那么,恭喜你,你即将解锁快递查询的新境界!快递批量查询高手软件&a…

国标GB28181设备管理软件EasyGBS国标GB28181公网平台应用到“雪亮工程”

随着信息技术的飞速发展,视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一变革中,国标GB28181设备管理软件EasyGBS凭借其强大的功能和广泛的应用场景,成为推动这一转变的重要力量。特别是在“雪亮工程”这一重要的群众性…

Redis 哨兵 总结

前言 相关系列 《Redis & 目录》《Redis & 哨兵 & 源码》《Redis & 哨兵 & 总结》《Redis & 哨兵 & 问题》 参考文献 《Redis的主从复制和哨兵机制详解》《Redis中的哨兵(Sentinel)》《【Redis实现系列】Sentinel自动故…

springboot使用配置类从 application.yml 或 application.properties 文件中读取静态属性

springboot使用配置类从 application.yml 或 application.properties 文件中读取静态属性 1. 配置类定义 通过 ConfigurationProperties(prefix “data-base-check”),Spring Boot 将带有 data-base-check 前缀的属性从 application.yml 或 application.propertie…

Java 中的微服务架构与 Spring Boot 集成(30/30)

目录 Java 中的微服务架构与 Spring Boot 集成 1. 微服务架构概述 2. Spring Boot 简介 2.1 Spring Boot 的特点 3. 使用 Spring Boot 构建微服务 3.1 构建一个简单的微服务 4. 服务发现与注册中心 4.1 使用 Eureka 实现服务注册和发现 5. 使用 Spring Cloud Gateway …

ssm020基于ssm的人才招聘网站+jsp(论文+源码)_kaic

摘 要 随着科技的发展,人才招聘的方式也发生着改变。本基于ssm的人才招聘网站正是采用计算机技术和网络设计的新型系统,可以有效的把招聘信息与网络相结合,为用户提供工作帮助和管理需求。本系统采用mysql数据库存储数据,兼容性…

Servlet 3.0 新特性全解

文章目录 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模块支持servlet3.0提供的异步处理提供异步原因实现异步原理配置servlet类成为异步的servlet类具体实现异步监听器改进的ServletAPI(上传文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

全球最大开源系统遭“绑架”,华为携国产系统冲出国门,优势尽显

被“绑架”的Linux 在科技飞速发展的今天,开源软件已成为全球技术合作与创新的重要基石。其中大家熟知的开源系统Linux内核项目,自1991年由芬兰学生Linus Torvalds创建以来,一直以其开放性、协作性和透明性著称。它鼓励全球各地的开发者共同…