泉州大型网站设计公司/网站seo服务
目录
1.数据库约束
1.1约束类型
1.2 非空约束(NOT NULL )
1.3 唯一约束(UNIQUE)
1.4默认值约束(DEFAULT )
1.5主键约束(PRIMARY KEY)
1.6外键约束(FOREIGN KEY )
写在前面
- 文章截图均是每个代码显示的图。
- 数据库对代码大小写不敏感,可以大写也可以小写,不要把大小写混在一起使用,最好只使用大写或者只使用小写。
1.数据库约束
定义:约束故名思意就是对列进行限制约束。约束是在创建表的时候添加上去的,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。
1.1约束类型
- 非空约束(NOT NULL )- 指示某列不能存储 NULL 值。
- 唯一约束(UNIQUE) - 保证某列的每行必须有唯一的值。
- 默认值约束(DEFAULT )- 规定没有给列赋值时的默认值
- 主键约束(PRIMARY KEY) - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- 外键约束(FOREIGN KEY )- 保证一个表中的数据匹配另一个表中的值的参照完整性。
- 检查约束(CHECK) - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。
约束的使用方式 :在建表时,我们只需在建立每列时,在每列的后面加上约束类型即可。
1.2 非空约束(NOT NULL )
create table student(id int not null,sn int,name varchar(20),qq_mail varchar(20));desc student;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| sn | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| qq_mail | varchar(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
上方代码就是将学生id加上了非空约束,这样学生id在填写时就不能为空了,为空会怎样,我们演示一下。
可以看出,当我们将学生id置空时,客户端报了错。若需要让以列成为必填项,这时非空约束就到了发挥作用的时候。
1.3 唯一约束(UNIQUE)
mysql> create table student(-> id int not null,-> sn int unique,-> name varchar(20),-> sex varchar(5)-> );
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| sn | int(11) | YES | UNI | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | varchar(5) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
我们在学号sn列加上了唯一约束,唯一约束的含义是:这一列不能出现重复的数据,例如(当有一个1时,我们又去添加一个1,这时就会报错。)
1.4默认值约束(DEFAULT )
create table student (id int not null,sn int unique,name varchar(20) default '无名氏',sex varchar(5));desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| sn | int(11) | YES | UNI | NULL | |
| name | varchar(20) | YES | | 无名氏 | |
| sex | varchar(5) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
添加默认值约束的列在填写时为空时(这时需要添加到列名),会默认填入设置好的默认值。
还可以使用MySQL给的关键字(default),填这个也是会得到设置的默认值。
1.5主键约束(PRIMARY KEY)
主键约束是非空约束和唯一约束的合集,它满足这两个约束的所有条件。
create table student(id int primary key auto_increment,sn int unique,name varchar(20) default '无名氏',sex varchar(5));desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| sn | int(11) | YES | UNI | NULL | |
| name | varchar(20) | YES | | 无名氏 | |
| sex | varchar(5) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
注意:对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。一个表中只能有一个主键。
例如:
insert into student values (1,10,'张三','男'),(null,11,'李四','男'),(100,12,'小红','女'),(null,13,'王五','男');
代码先设置id是1,之后插入一条id设为空,因为有自增主键,客户端将这个自动设置为2,
当设置id为100时,再将id设为空,这次id没有根据顺序排列,而是用最大值+1编号。
1.6外键约束(FOREIGN KEY )
外键用于关联其他表的主键或唯一键,对于两个具有关联关系的表来说,关联字段所在的表就是主表(父表),外键所在的表就是从表(子表)。
语法格式:
foreign key (字段名) references 主表(列)
示例:
- 创建班级表classes,id为主键 :
CREATE TABLE classes (id INT PRIMARY KEY auto_increment,name VARCHAR(20),`desc` VARCHAR(100)
);
- 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id
CREATE TABLE student (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);
注意:
- 在两个表中相同字段,并且外键在主表中是主键或者是唯一字段
- 主表的内容不能随意删除、修改,因为删除、修改操作会对从表造成影响。
相关文章:

【数据库】MySQL数据库约束(六大约束)
目录 1.数据库约束 1.1约束类型 1.2 非空约束(NOT NULL ) 1.3 唯一约束(UNIQUE) 1.4默认值约束(DEFAULT ) 1.5主键约束(PRIMARY KEY) 1.6外键约束(FOREIGN KEY &…...

使用inotify监视文件后台运行收到 SIGTTIN 信号的原因及解决方案
一、起因 由于之前写了个程序要实时监控指定文件的变化状态,所以使用了“inotify”进行监视。但是却发现用了“inotify”之后进程无法手动后台运行了。 也就是 ./process.exe &,这种方法不行了。 原因是: 当使用inotify监视文件变化时&a…...

L3-021 神坛
在古老的迈瑞城,巍然屹立着 n 块神石。长老们商议,选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好。特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面积…...

ArrayList和LinkedList区别
List<TreeNode> list new ArrayList<TreeNode>(); List<TreeNode> allTrees new LinkedList<TreeNode>(); 这两行代码都是用来创建一个存储多个 TreeNode 对象的列表,但是它们使用的底层实现不同。 ArrayList 是一种数组实现的动态数组&…...

977. 有序数组的平方 1. 两数之和 349. 两个数组的交集
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 …...

Mysql问题:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause
1 问题描述 使用Navicat连接到MySQL(版本:8.0.18),执行查询: select * from t_user WHERE user_name admin查询结果没有问题,但是报错: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY claus…...

Idea springboot springCloud热加载热调试常用的两种方式
场景描述 在项目开发的过程中,需要修改调试的时候偶每次都需要重启项目浪费时间,下面是我整理的两种常用的两种方式方式一 修改启动配置方式(主要针对debug模式下) 点击启动配置》edit configrations… configration下面修改Upd…...

银河麒麟V10SP1高级服务器版本离线RPM方式升级openssl openssh 自动化升级系统补丁实战实例全网唯一
银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和实时性等需求,依据CMMI5级标准研制的提供内生本质安全、云原生支…...

2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻
目录前言C左值和右值二、右值引用二、右值引用前言 对于C的左值和右值相信很多人都没有一个很透彻的了解,之前我也是不懂的时候查阅了好多文章,但是讲完我还是一头雾水,直到我遇到一篇宝藏文章,讲的左值右值的关系以及Move函数的用法是相当的清楚,文章链接在这,话不多说讲解一…...

Vue3这样子写页面更快更高效
在开发管理后台过程中,一定会遇到不少了增删改查页面,而这些页面的逻辑大多都是相同的,如获取列表数据,分页,筛选功能这些基本功能。而不同的是呈现出来的数据项。还有一些操作按钮。 对于刚开始只有 1,2 个页面的时候大多数开发者可能会直接将之前的页面代码再拷贝多…...

锐捷AP设置限速(胖模式)
基于整个AP限速命令 Ruijie(config)#wlan-qos ap-based { per-user-limit | total-user-limit } { down-streams | up-streams } average-data-rate average-data-rate burst-data-rate burst-data-rate per-user-limit 对AP上的每个用户进行限速 …...

聚势合力,电巢与SDIA协会“战略合作签约仪式”圆满落成
前言: 2023年03月02日下午,电巢科技与深圳市平板显示行业协会齐聚深圳南山电巢XR演播厅,共同举办了隆重的战略合作签约仪式。 双方就数字化建设、品牌赋能、人才培养、技术创新等企业服务深入合作上达成一致,合力为产业赋能&…...

Linux安装后基础配置--网络--ssh--基本软件
安装教程比较多就不写了。 网络配置 设置虚拟网络 修改网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT由no改为yes: 修改为静态网络 /etc/sysconfig/network-scripts/ifcfg-eth33 BOOTPROTOstatic IPADDR192.168.1.129 GATEWAY192.168…...

剑指 Offer 66. 构建乘积数组
剑指 Offer 66. 构建乘积数组 难度:middle\color{orange}{middle}middle 题目描述 给定一个数组 A[0,1,…,n−1]A[0,1,…,n-1]A[0,1,…,n−1],请构建一个数组 B[0,1,…,n−1]B[0,1,…,n-1]B[0,1,…,n−1],其中 B[i]B[i]B[i] 的值是数组 AAA…...

1.1 误差的来源
不难发现,考察用计算机解决科学计算问题时所经历的几个环节(如图1-1所示),其中每一步都可能产生误差,首先,数学模型是通过对实际问题进行抽象与简化得到的,它与实际问题之间有误差.数学模型与实…...

python进程间通信
进程间通信表示进程之间的数据交换。 为了开发并行应用程序,需要在进程间交换数据。 下图显示了多个子过程之间同步的各种通信机制 - 各种通信机制 队列 队列可以用于多进程程序。 多处理模块的Queue类与Queue.Queue类相似。 因此,可以使用相同的API…...

麒麟Linux操作系统磁盘策略永久调整为deadline
1.前言在安装数据库,比如达梦数据库时,为获取磁盘最佳性能,一般要将数据磁盘设置为deadline。2. 修改磁盘调度算法2.1临时修改假设磁盘为sda,echo deadline > /sys/block/sda/queue/scheduler2.2通用机永久修改grubby --update-kernelALL …...

yum安装Docker(CentOS7.9)
目录 一、安装环境 编写yum源(根据系统版本) 二、安装docker-ce 默认安装docker-ce是最新版本 ps:安装不成功则需要安装container-selinux,下载网络yum源,再安装docker-ce即可 #查看dcoker-ce所产生的文件路径 三、启动docker 四、配置镜像加速器…...

c++错误 free(): double free detected
记一次bug调试。。。。 我定义了一个类,测试的时候,调用它的方法出现了free(): double free detected ,但是调用其他方法是正常的。这个错误,字面意思就是检测到了双重释放。是指对于同一块内存,释放了两次。 我的类…...

12升400V 升压DC-DC高压脱毛仪解决方案SC3671
ipl(intense pulsed light,强脉冲光)脱毛,也叫光子脱毛,是市场上的一种新型脱毛技术和美容方法,其利用强脉冲光特殊的波长和光热效应实现破坏毛囊并达到永久脱毛的效果,具有速度快,效果好,安全性…...

h264格式分析
h264格式分析一.简介二.h264编码原理1.帧间压缩2.帧内压缩三.编码结构1.IDR帧2.解码顺序四.NALU1.nalu头信息2.annexb模式一.简介 h264是一种视频编码标准,又叫Advanced Video Codec,即AVC 二.h264编码原理 1.帧间压缩 通过I、B、P帧实现帧间压缩 I…...

【数据分析师求职面试指南】实战技能部分
文章目录必备技能数据人员如何创造价值完整的指标体系构建数据监控集报表设计设计一份优质的数据分析报告基于互联网大数据的应用A B 测试用户画像完整的数据挖掘项目流程1. 分析问题,明确目标2.模型可行性分析3.选取模型4.选择变量5.特征工程6.建立模型&效果…...

树与二叉树(二叉树的表示,性质,遍历,还原)
基本术语:A(或B)是I的祖先,I是A(或B)的子孙;D是I的双亲,I是D的孩子;节点的孩子个数称为节点的度;树中节点的最大度数称为树的度;度大于0的节点称为…...

mysql 源码学习理解记录--lock_rec_move
记录源码学习笔记,如有错误,还请帮忙指正。 Lock_rec_move 函数使用场景之用于update Update 匹配条件时会用lock_rec_lock先加锁。然后再进行ha_update_row 操作。 在修改时,当修改的字段前后长度不一致时,会导致不能原地修改…...

markdown(.md)常用语法
markdown(.md)常用语法markdown常用语法常用目录标题分割线格式空格换行无序列表有序列表列表嵌套文字引用行内代码代码块字体转义斜体加粗删除线下划线功能链接todo listtypora插入图片并保存在本地包含了一些常用的MD语法和操作,语法不是很…...

千言数据集赛题介绍
赛题题目 通用信息抽取任务评测 将多种不同的信息抽取任务用统一的通用框架进行描述,着重考察相关技术方面在面对新的、未知的信息抽取任务与范式时的适应和迁移能力。 赛题介绍 信息抽取旨在将非结构化文本中的信息进行结构化,是自然语言处理的基础…...

信息技术最全总结(备考教资)
信息技术 备考教资信息技术知识点总结,欢迎收藏!需要xmind和备考书籍的可以评论区留言。 第一部分-学科专业知识 第一章-信息技术基础知识 信息与信息技术概述 信息概述 信息的定义 信息本身不是实体信息是通过文字、数字、图像、图形、声音、视频等方…...

opencv识别车道线(霍夫线变换)
目录1、前言2、霍夫线变换2.1、霍夫线变换是什么?2.2、在opencv中的基本用法2.2.1、HoughLinesP函数定义2.2.2、用法3、识别车道3.1、优化3.1.1、降噪3.1.2、过滤方向3.1.3、截选区域3.1.4、测试其它图片图片1图片2图片31、前言 最近学习opencv学到了霍夫线变换&am…...

MySQL的同步数据Replication功能
MySQL提供了Replication功能,可以实现将一个数据库的数据同步到多台其他数据库。前者通常称之为主库(master),后者则被称从库(slave)。MySQL复制过程采用异步方式,但延时非常小,秒级…...

2023年全国最新高校辅导员精选真题及答案17
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 21.完善大学生的自我意识,我们可以采取的措施是()。 …...