MySQL数据库(五)

目录

一、数据库的约束

1.1 约束类型

1.1.1 null约束

1.1.2unique约束

1.1.3default默认值约束

1.1.4primary key主键约束

1.1.5foreign key外键约束

二、内容重点总结


一、数据库的约束

1.1 约束类型

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

1.1.1 null约束

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

create table student (
        id int not null,
        sn int,
        name varchar(20),
        email varchar(20)
);

当我们插入空值的时候会发生错误,这就是null约束

1.1.2unique约束

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

--将student删除重新构造表结构

drop table student;

create table student(
        id int not null,
        sn int unique,
        name varchar(20),
        email varchar(20)
);

 插入一条数据,在sn中插入一条重复的数据,看看能否插入成功

这里发现不能插入重复值

 这里发现,虽然不能重复,但是是可以为空值的

1.1.3default默认值约束

当插入数据的时候,列为空的时候,插入指定的默认值

-- 重新设置学生表结构
drop table student;
create table student (
         id int not null,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
 );

下面进行插入看看姓名为空的一个效果,发现当我的列为空的时候会插入自定义的值

1.1.4primary key主键约束

相当于uniquenot null的结合,不重复也不能为空

-- 重新设置学生表结构
drop table student;

create table student (
         id int primary key,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
);

插入数据查看效果,当前表中有一条数据

当插入重复的数据之后发现直接就报错了,说明不能插入重复的数据

同时,当插入数据的时候id为空时就会报错,所以说明不能为空

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

当插入值的时候并没有插入id的值 由于设置了自增长所以会有一个自增的值。

1.1.5foreign key外键约束

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

foreign key (字段名) references 主表(列)

案例:

  • 创建班级表classes,id为主键

-- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识
 create table classes (
         id int primary key auto_increment,
         name varchar(20),
         `desc` varchar(100)  
--``这个符号是数字esc下面的那个符号
 );

对班级表插入数据

  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

-- 重新设置学生表结构
create table student (
        id int primary key auto_increment,
        sn int unique,

        classes_id int,
        name varchar(20) default 'unkown',

        foreign key(classes_id) references classes(id)

        --注意外键约束可以有多个
 );

由于学生表的classes_id是被班级表的id约束的,所以插入的过程中如果插入班级表中没有的班级是会报错的,但是班级表中含有的班级就不会。

 当插入一个班级表中没有的数据的时候就会报错。

classes表对student有一个约束作用,同时student对classes表也存在约束作用,当要删除classes表时会发现删除不掉!这里的显示意思就是说该表存在约束别人的条件不能进行删除

 要删除classes表应该怎么办呢,只能先删除student表

二、内容重点总结

约束类型说明示例
NULL约束使用NOT NULL指定列不为
name varchar(20) not null,
UNIQUE唯一约束指定列为唯一的、不重复的name varchar(20) unique,
DEFAULT默认值约
指定列为空时的默认值age int default 20,
主键约束NOT NULL 和 UNIQUE 的
结合
id int primary key,
外键约束关联其他表的主键或唯一键foreign key (字段名) references 主
表(列)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

blender 叶片制作

圆润叶片 效果展示 shift a 新建矩形,s y 延 y 轴方向压扁,ctrl r 循环切割,滚动滚轮,延 y 轴方向切两条循环线,框选点,s 缩放,调整到叶片造型,添加细分修改器;给叶片…

opencv-14 图像加密和解密

在OpenCV中,图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或,可以实现加密;将加密后的图像与密钥图像再次进行按位异或,可以实…

CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 代码地址:https://github.com/THUDM/CodeGe 一、简介 CodeGeeX,是一个具有130亿…

FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载

水果音乐编辑软件FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载是兔八哥爱分享搜集到的Mac Os系统上一款功能齐全的音乐编曲工具,可以为需要创作高品质音乐曲目的专业和业余艺术家提供多轨录音,排序和混音。 借助FL Studio 21的帮助…

vue+canvas图片裁切

vuecanvas图片裁切 头像的裁切、图片的一些处理…… vue:路由router、vuex状态管理 组件效果 组件代码: 实现思路 盒子即一张画布,把选择的图片放到画布中进行裁切,按照canvas的一些语法裁切一部分内容。 有一个固定大小的画布&am…

数组的递归筛选

数组递归筛选 根据一个值筛选出来通过 includes 递归 const options [{name: "ikun",options: [{name: "YAY11",},],},{name: "YAY",}, ];function findValue(orgOptions,val) {let newArr1 []orgOptions.forEach(item>{if(item.options…

【windows测试通过】关于Godot导入外部音频文件的问题

file.open(filepath, file.READ) var buffer file.get_buffer(file.get_len()) #put data into audiostreamsample var stream AudioStreamSample.new() stream.data buffer 代码给出,还没有测试过。(godot3.2测试未通过) 在运行时轻松加载外部音频…

ROS:动态参数

目录 一、前言二、概念三、作用四、实际用例4.1需求4.2客户端4.2.1流程4.2.2新建功能包4.2.3添加.cfg文件4.2.4配置 CMakeLists.txt4.2.5编译 4.3服务端(C)4.3.1流程4.3.2vscode配置4.3.3服务器代码实现4.3.4编译配置文件4.3.5执行 4.4服务端(Python)4.4.1流程4.4.2vscode配置4…

Kakfa - 多副本架构

文章目录 基本架构Kafka 多副本架构概念优点缺点 图解多副本架构小结 基本架构 Kafka 多副本架构 概念 Kafka 是一个高性能、分布式的消息系统,被广泛应用于各种场景中。在 Kafka 中,多副本架构是保证数据可靠性的重要手段之一。 多副本架构指的是将同…

微信小程序中常见组件的使用

文章目录 微信小程序中常见组件的使用视图组件viewscroll-viewswipermovable-area 基础组件icontextrich-textprogress 表单组件buttoncheckbox、checkbox-grouplabelforminputpicker单列选择器多列选择器时间选择器&日期选择器&地区选择器 picker-viewradiosliderswit…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

Java将获取的参数,图片以及pdf文件放入到word文档指定位置

首先引入的依赖 <!-- poi库 --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId&…

【hadoop】HDFS

HDFS 操作HDFSWeb Console 网页工具操作NameNode操作SecondaryNameNode 命令行Java API HDFS的原理解析数据上传的过程数据下载的过程 HDFS的高级特性回收站配额Quota名称配额空间配额 快照Snapshot安全模式 SafeMode权限管理&#xff1a;类似LinuxHDFS的集群 HDFS的底层原理&a…

UART串口通信协议

一、串行通信 串行通信分为两种方式&#xff1a;同步串行通信和异步串行通信。 同步串行通信需要通信双方在同一时钟的控制下&#xff0c;同步传输数据。 异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。 二、UART 通用异步收发传输器&#xff08;Unive…

基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

首先前端发起HTTP请求之后&#xff0c;后端返回一个Excel输出流&#xff0c;然后前端用Blob类型接收数据&#xff0c;并且解析响应头数据以及提取源文件名&#xff0c;最后用a标签完成下载。 一、后端代码 &#xff08;1&#xff09;导入阿里巴巴的EasyExcel依赖&#xff08;…

云计算的学习(五)

五、虚拟化特性介绍 1.集群特性 1.1HA HA&#xff08;Hith Available&#xff0c;高可用特性)&#xff0c;克服单台主机的局限性&#xff0c;当一台服务器损坏&#xff0c;运行在损坏服务器上的虚拟机会自动迁移到其他运行状态正常的服务器上&#xff0c;整个迁移过程用户无感…

基于ssm的社区生活超市的设计与实现

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战。专注于计算机毕设开发、定制、文档编写指导等&#xff0c;对软件开发具有浓厚的兴趣&#xff0c;工作之余喜欢钻研技术&#xff0c;关注IT技术的发展趋势&#xff0c;感谢大家的关注与支持。 技术交流和部署相关看文章…

设计模式-外观模式在Java中的使用示例

场景 外观模式 外观模式是一种使用频率非常高的结构型设计模式&#xff0c;它通过引入一个外观角色来简化客户端与子系统 之间的交互&#xff0c;为复杂的子系统调用提供一个统一的入口&#xff0c;降低子系统与客户端的耦合度&#xff0c;且客户端调用非常方便。 示例 自…

让小程序动起来-轮播图的两种方式--【浅入深出系列003】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择啥是轮播图轮播图的关键代码最常见的轮播图代码便于理解的轮播代码两种轮播代码的比较 实际操练第一步&#xff0c;就是找到文件。第二步&#xff0c;先改动一下最显眼…

HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

HTTP1.1 优点&#xff1a; 整体方面&#xff1a;简单、灵活和易于扩展、应用广泛和跨平台 性能方面&#xff1a;长连接、管道网络传输解决请求队头阻塞&#xff08;没有使用&#xff09; 缺点&#xff1a; 安全方面&#xff1a;无状态、明文窃听、伪装、篡改 性能方面&am…