[Mysql]数据库约束

news2024/11/13 16:03:50

文章目录

  • 前言
  • 1. 数据库约束
    • 1.1 not null
    • 1.2 unique
    • 1.3 primary key,主键约束
    • 1.4 default,设置默认值
    • 1.5 foreign key 外键约束


前言

数据库约束,在实际应用中,由于某些特定的要求,例如学生的学号不能为空,学生表中的班级id,在班级表中要能存在,所以,为了保证数据的完整性,数据库设置了数据库约束功能。下面,我们来康康有哪些约束和约束的功能吧~


1. 数据库约束

1.1 not null

非空约束,避免某些重要数据为空。

1.2 unique

有些数据是不能有重复的,例如没有学号重复的同学。上述两个约束将在后面进行演示

1.3 primary key,主键约束

主键,用主键约束的数据非空且不能重复。
一个表只能有一个主键。
not null 与 primary key联合使用可起到主键的作用。
如下图所示·。
在这里插入图片描述
联合主键,将多个列放在一起共同作为主键

create table student(id int, name varchar(20), classid int,primary key(id,name));

效果如下图,意思是只要知道这个学生的id和name就可以找到这个学生,当然这里是不合法的,因为这里将id和name设置成联合主键,学生的id可能出现重复,不合法.

在这里插入图片描述
自增主键
例如学生的学号,不能重复,为了保证这种性质,我们设置了自增主键.
在使用自增主键时,学生的学号可以为null,系统会按顺序为学生自动设置学号.
如下图所示
在这里插入图片描述
注意,若是自己设置了一个id,那么自增主键下次会在这个id后面自增,如下图,我们自己设置了一个同学id为5,那么下次使用自增主键时,id为6.
在这里插入图片描述

1.4 default,设置默认值

有些数据,暂时不确定的时候可以不插入,这个default可以将为设置的值标记为default.如下图,只设置了id,name被填上默认值"无名氏"

在这里插入图片描述

1.5 foreign key 外键约束

外键约束针对多个表之间的约束.例如,在学生表中设置classid,在class表中设置id,则学生表中的classid号,在class中的classid一定要存在,否则则报错. 这里学生表为主表,班级表为副表
将class表的classid设置为student的外键

create table student(id int primary key auto_increment,name varchar(20),classid int,foreign key(classid) references class(id));

如下图,在学生表插入班级号1,但由于班级号的id中还没有1,不匹配,报错.
在这里插入图片描述
所以,在设置学生的classid时,要保证在class中,有和classid匹配的值.
外键约束也约束副表,由于class中的id被学生表引用,那么被引用class的id不能被删除,否则报错.

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

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

相关文章

python足球作画

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 足球(Football[英]、 Soccer[美])是一项以脚为主,控制和支配球,两支球队按照一定规则在同一块长方形…

HTML如何制作公司网站首页(web前端期末大作业)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

新老用户该如何选择腾讯云服务器!

随着云计算的快速发展,很多用户都选择上云,上运中最常见的产品就是云服务器CVM和轻量应用服务器了,那么怎么选购最优惠呢,这篇文章将介绍新老用户选购腾讯云服务器的几个优惠方法。 一、买赠专区 第一个介绍的就是买赠专区&…

软考高级——系统架构设计师通关宝库

关于报考时间。每年8到9月进行报名,11月考试。一定要关注报名时间,各省有些许差别。系统架构设计师一年只有一次考试机会。 关于考试科目。考试科目分为 综合题(选择题案例分析题论文题。 其中综合题只有75道,考试时间两个半小时…

企企通成功入选「亿欧EqualOcean 2022 中国SaaS 50强」榜单!

近日,由EqualOcean全球化智库主办的2022 EqualOcean Summit for Globalization (ESG) 2022 全球化峰会顺利召开,并重磅发布《2022年中国SaaS 50强》榜单。作为行业领先的数字化采购SaaS服务商,企企通凭借在SRM领域的持续创新和深厚的SaaS服务经验成功入选…

CSS栅格布局(Grid)

今天写页面布局,突然想到了栅格布局,以往习惯了弹性布局,然后发现栅格布局有点香,然后就简单的整理了一下,用于学习与分享。 一、什么是栅格布局 可以理解为将一个元素分成行列,然后可以设置对应的大小、布…

接口自动化测试:mock server之Moco工具

什么是mock server mock:英文可以翻译为模仿的,mock server是我们用来解除依赖(耦合),假装实现的技术,比如说,前端需要使用某些api进行调试,但是服务端并没有开发完成这些api&#…

机器学习:在SAS中运行随机森林

为了在SAS中运行随机森林,我们必须使用PROC HPFOREST指定目标变量,并说明天气变量是“类别”还是“定量”。 最近我们被客户要求撰写关于随机森林的研究报告,包括一些图形和统计输出。为了进行此分析,我们使用了目标(…

Kamiya艾美捷抗胸腺嘧啶二聚体单抗(环丁烷嘧啶二聚体CPD)说明书

Kamiya艾美捷抗胸腺嘧啶二聚体单抗相关性质: 同义词:环丁烷嘧啶二聚体(CPD) 特异性:与由以下物质产生的胸腺嘧啶二聚体发生特异性反应:双链或单链DNA的紫外线照射。不与(6-4)照片产…

基于安卓的校园信息助手系统设计(Eclipse开发)

使用说明 1.1 软件的安装 将.api文件安装到iphone手机上,点击图标即可使用。 2.2 软件的使用 2.2.1 初始界面 软件安装好之后,在手机上显示初始界面。 2.2.2 程序主界面 主要有【课程表模块】、【新闻模块】、【学校概况模块】、【黄页模块】、【考生问答…

程序员的刻板印象,都是真的吗?

自从当了程序员,身边人对于我的职业一直好奇不断,刚好看到网上大家的刻板印象,整理几个最常见的问题,实事求是地解答一下! “青春饭、35岁危机、会修电脑、年薪10w、还有戴眼镜、格子衫、发际线高” 这些大家都在网上见…

8-事件组或标志

1-事件位(标志) 事件位用于指示事件是否发生。事件位通常称为事件标志。例如,一个应用程序可以: 定义一个标志,当为1时,表示消息已经接收并进行处理,当为0时,表示没有消息要处理。…

【王道计算机网络笔记】数据链路层-数据链路层的功能

文章目录数据链路层的研究思想数据链路层基本概念数据链路层功能概述为网络层提供服务链路管理帧定界、帧同步与透明传输(组帧)封装成帧透明传输组帧方法字符计数法字符填充法零比特填充法违规编码法流量控制停止-等待协议停等协议-无差错情况停等协议-有…

es搜索功能——DSL查询文档——DSL基本语法

1、查询的基本语法 # GET请求方式(固定写法) # indexName 要查询的索引库 # _search 查询语句的固定格式 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 2、无条件查询&#xff…

基础入门 - Spring Boot HelloWorld 第一节

需求&#xff1a;浏览器发送 /hello 请求&#xff0c;响应 Hello&#xff0c;Spring Boot 2 创建 maven 项目 boot-01-helloworld 如果想用Spring Boot来进行开发 需要在pom中创建父工程 <!-- Spring Boot 父工程 --> <parent> <groupId>org.springframew…

医疗健康产品展

​ 国内医疗健康行业的独角兽公司&#xff08;估值超10亿&#xff09; 下面&#xff0c;我们先看名列第二的企业&#xff1a; 微医&#xff08;平安医疗健康管理股份有限公司&#xff09; 基本信息 微医是国际领先的医疗健康科技平台&#xff0c;由廖杰远及其团队于2010年创建…

【GD32F427开发板试用】FreeRTOS移植工程

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;kings669669 前言 为了方便需要FreeRTOS&#xff0c;附上移植完毕的工程&#xff0c;方便大家后续的开发。 GitHub&#xff1a;https://githu…

【flutter电子木鱼】flutter 打包 android apk,记录配置签名的过程/调试的过程及flutter build apk放到手机上用。

目标&#xff1a; 目标通过这篇blog记录一下flutter打包android apk的过程&#xff0c;项目是参考以下链接的git仓库&#xff0c;然后自己重新创建了一个project。安卓应用市场的木鱼充斥着广告和付费体验极差&#xff0c;自己做一个还可以根据喜好做适应性调整&#xff0c;不…

图文版实现无头非循环单链表的增加和删除操作

hi&#xff0c;上一期已经给大家分享过代码版的链表的增删查改了&#xff0c;现在要对部分方法进行详细的介绍了 首先来说一说在任意位置的增加一个结点 废话不多说&#xff0c;开整 先来一幅图 加入已经有这样的链表了&#xff0c;现在要在 任意一个位置插入元素 我们先考…

zookeeper的安装与配置

1. 在root账户下创建zookeeper安装目录&#xff1a;mkdir /home/zookeeper 2. 进入zookeeper目录&#xff1a;cd /home/zookeeper 3. 通过wget命令下载zookeeper安装包&#xff1a;wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0…