MySQL数据库(五)

news2024/11/24 4:20:03

目录

一、数据库的约束

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,
        name varchar(20) default 'unkown',
        classes_id int,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 主
表(列)

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

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

相关文章

【C++】入门基础知识

命名空间 由来 在c语言中,任何函数,变量的名字都不能一样,如果是一个人的代码库里还好,大不了自己再改改,但是当和其他人,公司的库合起来,那就很麻烦了,到底是谁的名字改呢&#x…

求Sn=a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字

求Sna aa aaa aaaa aaaaa的前5项之和,其中a是一个数字。 例如:2 22 222 2222 22222 解析: a aa aaa aaaa aaaaa a a*10a (a*10a)*10 a ((a*10a)*10 a) a ((a*10a)*10 a) a 直接上代码吧: #include&l…

java工作随笔

String s JSONObject.toJSONString(fixedAsset);logger.error("-----------------8------------------" s);CusFixedAssettDTO CusFixedAssettDTO3 JSONObject.parseObject(s, CusFixedAssettDTO.class);父类转子类 相同对象合并 import java.util.Date; Data T…

手把手教你搭建SpringCloud项目(九)集成OpenFeign服务接口调用

一、OpenFeign简介 什么是Feign? Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行封装,使其支持…

要想做好日语翻译,你需要这样做?

我们知道,中日两国一衣带水比邻而居,彼此之间的文化贸易往来非常频繁,对日语翻译的需求也日益增加。那么,想要做好日语翻译,我们该怎么做? 首先,要具备扎实的日语语言能力、较高的母语水平以及灵…

零基础学习,轻松打造物业服务小程序

现如今,物业服务已经成为了人们生活中不可或缺的一部分。为了更好地满足人们对物业服务的需求,许多企业和个人开始开发物业服务小程序,以便提供更加便捷和高效的服务。然而,对于大多数人来说,搭建一个小程序可能需要一…

从小白到大神之路之学习运维第64天--------Zabbix监控mysql、ftp服务以及自定义配置

第三阶段基础 时 间:2023年7月19日 参加人:全班人员 内 容: Zabbix监控mysql、ftp服务以及自定义 目录 一、Zabbix监控mysql数据库 二、Zabbix监控ftp服务 三、Zabbix自定义监控项 整体zabbix搭建完成,server端huyang1监…

golang 日志库zap和日志切割实践

介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。 支持不同的日志级别。例如INFO,DEBUG&a…

uni.app开发小程序如何获取当前经纬度、位置信息以及如何重新发起授权定位

uni.app开发小程序如何获取当前经纬度、位置信息以及如何重新发起授权定位 前提 先去微信小程序后台申请 wx.getLocation接口1.引入下载的高德小程序SDK2.data中定义所需变量3.onLoad中获取实例 并调用获取经纬度 位置方法4.定义获取定位经纬度 位置信息方法5.用户拒绝授权后,可…

【MySQL】查询进阶

查询进阶 数据库约束约束类型NULL , DEFAULT , UNIQUE 约束主键约束外键约束 聚合查询聚合函数group by子句HAVING 联合查询内连接外连接自连接子查询单行子查询多行子查询 数据库约束 约束类型 NOT NULL #表示某行不能储存空值 UNIQUE #保证每一行必须有唯一的值 DEFAULT #规…

DT灯光基础(辉光 雾 阴影 渲染选项)

点光源 不能宣染,换个版本。不能正常预览 聚光灯 t 手柄 挡光版 平行光阴影 光线追踪阴影 没有看见阴影 灯光使用贴图 环境光 不进行渲染物体 不渲染阴影 接收阴影 不反射 可以看到反射 没有反射了 灯光链接 取消灯照 灯光雾 辉光 变化不明显

【C++】C++入门必备知识详细讲解

C入门必备知识 一、命名空间1. namespace2. namespace 的使用场景 二、了解 C 中的输入和输出三、缺省参数四、函数重载1. 函数重载的概念2. C支持函数重载的原理 五、引用1. 引用的概念2. 引用特性3. 常引用4. 引用的使用场景(1)做参数(传引…

No.2(3)——双指针算法实现平方数组排序

双指针算法指的是,从数组的两侧开辟指针变量进行查找,这类问题往往通过暴力(双循环)可以解出,而采用双指针相当于用空间换取时间,省略双层循环中重复的部分。 对于一个含有负数的有序数组,要求保…

Kubernetes Volume及其类型(NFS、SAN) - PV - PVC - PV与PVC与Pod的关系

目录 volume 卷 官方文档:卷 | Kubernetes 一、emptyDir(临时卷) 二、hostPath卷 type字段参数 hostPath 实验: 三、第3方提供的存储卷(百度云、阿里云、亚马逊云、谷歌云等) 四、local卷 五、NF…

Geany配置python虚拟环境(Anaconda)

Geany配置python运行环境步骤: 以我的conda为例 我的conda中python虚拟环境base环境python位于路径 D:\Anaconda3 打开Geany -> 生成 -> 设置生成命令 在弹出的窗口内输入以下命令 # Compile选项后修改 "D:\Anaconda3\python.exe" -m py_compi…

准备WebUI自动化测试面试?这30个问题你必须掌握(一)

本文共有8600字,包含了前十五个问题,如需要后十五个问题,可查看文末链接~ 1. 什么是WebUI自动化测试? WebUI自动化测试是指使用自动化测试工具和技术来模拟用户在Web用户界面(UI)上执行操作,并…

条件概率我知道,但什么是条件期望?--草稿

目录 1 目标问题: 什么是条件期望 2 条件期望,全期望公式 1 目标问题: 什么是条件期望 这次先不说目标 先引用一个小学数学题 1班平均分是93,2班平均分是95,两个班的平均分怎么算 错误算法,(9395)/294 除非两个班的学生数量一…

园区电能监测系统

园区电能监测系统是一种能够对园区内电能使用情况进行实时监测和管理的系统,可以帮助企业更好地控制能源消耗,提高能源利用效率,从而降低能源成本,对于推进节能减排和可持续发展具有重要意义。 园区电能监测系统通常由多个子系统组…

RocketMQ 5.0 快速入门

RocketMQ 5.0 Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联…

大二web作业精仿王者荣耀(html+css)

经过漫长的期末考试季节,我成功地完成了一个王者荣耀的仿写项目,并且非常高兴地与大家分享。 作品展示 作业-王者荣耀 作品目录 获取源码 1,复制该网站 https://download.csdn.net/download/qq_42431718/87946610 2,点击上方下…