MySQL数据库(数据库约束)

news2024/11/17 19:33:11

目录

数据库约束

数据库约束的类型: 

null约束 : 

unique约束(唯一约束): 

default约束(默认值约束):  

primary key约束(主键约束): 

foreign key约束(外键约束): 


数据库约束

数据库约束的类型: 

not null- 指示某列不能存储 null值。
unique- 保证某列的每行必须有唯一的值。
default - 规定没有给列赋值时的默认值。
primary key - not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性

null约束 : 

创建表时,可以指定某列不为空

 drop table if exists student;
 create table student (id int not null,sn int,name varchar(20),qq_mail varchar(20));

unique约束(唯一约束): 

指定sn列为唯一的、不重复的:

 drop table if exists student;
 create table student (id int,sn int unique,name varchar(20),qq_mail varchar(20));

 default约束(默认值约束):  

指定插入数据时,name列为空,默认值无名氏:

 drop table if exists student;
 create table student (id int,sn int ,name varchar(20) default '无名氏',qq_mail varchar(20));

primary key约束(主键约束): 

指定id列为主键:

drop table if exists student;
create table student (id int primary key,sn int ,name varchar(20),qq_mail varchar(20));


对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。

drop table if exists student;
create table student (id int primary key auto_increment,sn int ,name varchar(20),qq_mail varchar(20));
desc student;
insert into student values(1,1,'张三','********@qq.com');
insert into student (sn,name,qq_mail)values(2,'李四','********@qq.com');
select *from student;

foreign key约束(外键约束): 

外键用于关联其他表的主键或唯一键,语法:
语法形式:

foreign key(字段名) references 主表(列)
create table class (id int primary key,name varchar(20));
 create table student(id int primary key,name varchar(20),class_id int,foreign key(class_id)references class(id));

这样就使得student和class产生了联系。而且在插入数据的时候,只能插入符合外键约束的数据:

insert into class values(1,'java1班');
insert into class values(2,'java2班');
select *from class;

class中的数据: 

 insert into student values(1,'张三',2);
 insert into student values(2,'李四',1);
 select *from student;

student中的数据:

也就是说张三class_id为2,也就是java1班,李四就是java2班的。这是我们插入一条在class中不存在的id:

 insert into student values (3,'王五',100);

就会出现报错了,无法插入,这就体现了外键的约束。

还要注意的一点就是,外键约束约束的其实是双方,(我们可以把class看成主(父)表,student看成子表) ,除了上述关系外,如果我们想删除父表,也必须删除子表,否则无法删除:

drop table class;

 因为约束的存在所以无法删除。要想删除就要先把子表删除。

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

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

相关文章

Active Directory 04 - Bronze Bit Attack (CVE-2020-17049)

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助,并分享学习和实践过程…

buuctf Basic

buuctf Basic 1.Linux Labs 根据提示我们可以知道需要远程连接linux服务器,这里使用xshell进行如下配置 输入ssh的用户名root,密码123456 连接成功 构造命令 ls …/ 查看文件 查看flag cat …/flag.txt 为flag{8fee8783-1ed5-4b67-90eb-a1d603a0208…

1信号的描述

信号的描述 1.1 连续时间与离散时间信号 一 信号 信号可以描述范围极其广泛的物理现象。信号可以分为确知信号与随机信号,也可以分为连续时间信号与离散时间信号。 确知信号可以表示成一个或几个自变量的函数。 信号的描述 连续时间信号 x(t), x(t1, t2)… 离散时间…

[TPAMI‘21] Heatmap Regression via Randomized Rounding

paper: https://arxiv.org/pdf/2009.00225.pdf code: https://github.com/baoshengyu/H3R 总结:本文提出一套编解码方法: 编码:random-round整数化 激活点响应值表征小数部分,使得GT可以通过编码后的heatmap解码得到&#xff1b…

flowable的变量实操及排坑

主要理解一下知识点 一、名字解释 详情解释传送门 setVariables 和 setVariablesLocal区别? 1.流程变量 在流程执行或者任务执行的过程中,用于设置和获取变量,使用流程变量在流程传递的过程中传递业务参数。 对应的表: act_ru_variable&…

操作系统——4.操作系统的运行机制和体系结构

这篇文章,我们一起来学习一下操作系统的运行机制和体系结构 目录 1.概述 2.运行机制 2.1两种指令 2.2两种处理器状态 ​编辑2.3两种程序 ​编辑2.4 操作系统运行机制小结 3.操作系统内核 ​4.操作系统的体系结构 5.小结 1.概述 首先,我们来看一下…

OpenResty | nginx内部发送请求

文章目录一. http请求的API二. 封装http工具函数三. CJSON工具类四. hash均衡(1) 原理(2) 实现一. http请求的API 关于OpenResty如何安装和编写业务逻辑可以参考这篇文章:点击跳转 nginx提供了内部API用以发送http请求: local resp ngx.location.capt…

听说2年以上的自动化测试都有16k+,4年10k的你还要等待奇迹吗?

个人简介学渣一枚,2017年6月某xx学校毕业。从事自动化测试已经4年,。2018年的时候,由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,…

【Vue】浅谈vue2、vue3响应式原理,vue中数组的响应式,响应式常见问题分析

前言:此处响应式指的是数据响应式变化,而不是页面的响应式布局,页面的响应式布局在我的其他文章中有提到。 一、什么是vue响应式 Vue 最标志性的功能就是其低侵入性的响应式系统。组件状态都是由响应式的 JavaScript 对象组成的。当更改它们…

以太网基础

1.系统概述网卡(Network Interface Card,简称NIC),也称网络适配器,一个网卡主要包括OSI的最下面的两层,物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并…

Ambire 最新消息——2023 年 1 月

大家好,这里是我们在过去几周所做的一切的快速回顾。 发展 整个钱包的交易模拟和余额预测 我们推出了一项真正改变加密钱包 UX 游戏规则的功能:Ambire 现在向用户显示他们的钱包余额将如何更新,甚至在签署交易之前。 这项新功能可以分解为 Am…

PMP证书在哪个行业比较有用?

PMP 各个行业都能用,PMP 的知识体系是通用的,管理层的考试也有借鉴PMP知识的地方。历年考生考的最多的是IT 行业,其他行业也都有分布。PMP认证从国外引进大陆这么多年了,其火热程度依然不减,我个人认为是取决于市场的运…

34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…

水泥|物流行业停车场电动发卡机读卡器K720的维护及使用注意事项

水泥|物流行业停车场电动发卡机读卡器K720采用工业级设计,表面烤漆处理,具有良好的耐磨耐腐蚀性。适应各种高、低温, 多灰尘等恶劣 环境。其发卡原理为拟人型摩擦式发卡,对各类变形卡有非常好的适应性。预留了活动式票箱安装位&am…

MyBatis 插件 + 注解轻松实现数据脱敏

问题在项目中需要对用户敏感数据进行脱敏处理,例如身份号、手机号等信息进行加密再入库。解决思路就是:一种最简单直接的方式,在所有涉及数据敏感的查询到对插入时进行密码加解密方法二:有方法一到出现对所有重大问题的影响&#…

C++如何实现系统语言切换功能,MessageBox的确认/取消按钮语言显示如何跟程序一致

文章目录前言 一、新建工程二、添加多国语言的资源三、程序语言设置四、语言切换五、字符串处理六、MessageBox的问题七、相关函数和类型参考文章前言 目前很多软件都是要出口到多个国家,多个地区,因此,为软件提供多国语言支持就成为了一个基…

20230215使用X99主板的电脑的性能测试(intel E5-2696V3 )

20230215使用X99主板的电脑的性能测试 2023/2/15 22:59 1850¥ 套餐七 模拟器参考20开 18核心36线程单路 适用 设计渲染 模拟器虚拟机工作室游戏多开 处理器 intel E5-2696V3 主频2.3G 18核心36线程 散热器 定制12CM大六铜管温控静音 主板 intel芯片X99-D3全固态大…

[项目篇] 音乐播放器开发报告

文章目录1. 项目描述:2. 项目上线展现:3. 项目具体实现:1. 登录2. 注册3.退出系统4.添加音乐4.1前后端交互约定4.2上传文件业务逻辑:4.3创建model包中的music类4.4在MusicMapper接口中,声明insertMusic抽象方法4.5在mybatis包中添…

既然有HTTP协议,为什么还要有RPC

既然有HTTP协议,为什么还要有RPC? 从TCP聊起 作为一个程序员,假设我们需要在A电脑的进程发一段数据到B电脑的进程,我们一般会在代码里使用socket进行编程。 这时候,我们可选项一般也就TCP和UDP二选一。TCP可靠&…

第六章 - 数据过滤where(where与and和or的组合用法)

第六章 - 数据过滤&#xff08;where的用法&#xff09;基本用法where的条件限制符等于号不等号! 或者<>小于<大于>小于等于<大于等于>between 的用法空值和非空值组合条件 and组合条件 orand 和 or 的计算次序in 和 not in基本用法 在查询语句中&#xff0…