【MySQL系列】 MySQL表的增删改查(进阶)

本文详细探讨了MySQL数据库的约束类型,包括null、unique、default、primary key、foreign key和check约束,强调了它们在数据校验中的作用。接着,介绍了表的设计,涵盖一对一、一对多和多对多关系的设计策略。此外,文章还讲解了数据的新增操作,并深入浅出地阐述了聚合查询、分组查询(group by和having子句)、联合查询(笛卡尔积、内连接、外连接、自连接和子查询)的概念和使用方法,帮助读者掌握高级查询技巧。
摘要由CSDN通过智能技术生成

目录

??前言

??一、数据库约束

???1.1 约束类型

???1.2 null约束

???1.3 unique约束

???1.4 default约束

???1.5 primary key 约束

???1.6 foreign key 约束

???1.7 check约束(了解)

??二、表的设计

???2.1 “一对一”关系

???2.2 “一对多”关系

???2.3 “多对多”关系

??三、新增

??四、查询

???4.1 聚合查询

???4.1.1 聚合函数

???4.1.2 分组查询(group by 子句)

???4.1.3 having 子句?

???4.2 联合查询(最复杂的)

???4.2.1 笛卡尔积

???4.2.2 内连接

???4.2.3 外连接

???4.2.4 自连接

???4.2.5 子查询

???4.2.6 合并查询

??后续


前言

老规矩~~

为了本篇博客的学习,先把 MySQL数据库 里面的表 全部都删除掉~~

只留下自己创建的java数据库(自带的数据库肯定是不动的了)~~

一、数据库约束

所谓的约束~~

其实就是 数据库可以让程序员定义一些对数据的限制规则,数据库 会在 插入/修改数据的时候,会按照这些规则 对数据进行校验~~

如果校验不通过,就直接报错~~

约束的本质 就是让我们及时发现数据中的错误,更好的保证数据的正确性~~


1.1 约束类型

not null

指示某列不能存储 null值(即 该列是必填项)

unique

保证某列的每行必须有唯一的值

default

规定没有给列赋值时的默认值

primary key

not null 和 unique 的结合。确保某列(或两个列或多个列)有唯一标识,有助于更快速的找到 表中的一个特定的记录

foreign

保证一个表中的数据 匹配 另一个表中的值的参照完整性

check

保证列中的值符合指定的条件


1.2 null约束

此时,先创建一张 student表:

这张表,初始情况下,没有任何的约束,允许为null:

此时,我们完全可以插入空值:

但是,如果我们加上 not null,那么就不会插入成功了~~

删除上面所创建的 student表:

重新创建一个 student表(有约束条件 not null):

查看 student表 的结构,发现此时 id列不允许为空:

此时,如果再插入空值的时候,会提示报错:id列不允许为空值:

这个是由于创建 student表 的时候,在 id列 设置了 not null~~

使得在下面插入数据的时候,id列 不允许插入空值~~


1.3 unique约束

unique约束,是保证 唯一性约束~~

首先,删除 原来的 student表:

先创建一个普通的表(无任何约束):

插入多条相同的记录,发现插入记录都成功了:

此时,查询 student表 的全列数据:

可以看到的是,创建的是普通的表(无unique约束),

此时,是完全可以插入普通的数据的~~

默认情况下,表里的数据都是可以重复的~~

现在,重新创建一个 带有unique约束的 student表:

首先,删除上次创建的 普通student表:

接着,创建一个带有unique约束的 student表:

此时,观察 student表 的结构,发现id只能是唯一值:

此时,向 student表里面 插入相同数据,会发现出错了(第一条插入没问题,第二条开始就出错了):

duplicate:重复~~

entry:条目~~


1.4 default约束

default约束,就是设定默认值~~

即 当我们插入数据的时候,如果不去指定,那么插入的时候就会自动去填写这个默认值~~

默认情况下的默认值,是null~~

可以通过 default约束 来修改默认的默认值~~

删除旧的 student表:

重新创建一张新的 student表(不加任何限制):

此时我们可以查看 student表 的结构:

当我们对表进行指定列插入的时候,就会涉及到默认值的情况的:

此时,我们只针对 id列进行插入,那么 剩下的 name列 就按照默认值来走的:

那么,我们可以通过 default约束 来修改默认值~~

重新删除 student表:

创建一张带有 default约束 的 student表:

此时,可以查看表的结构:

那么,此时可以插入数据来观察:

当然,只插入name的话,id就是默认值:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值