目录
??前言
??一、数据库约束
???1.1 约束类型
???1.2 null约束
???1.3 unique约束
??二、表的设计
???2.1 “一对一”关系
???2.2 “一对多”关系
???2.3 “多对多”关系
??三、新增
??四、查询
???4.1 聚合查询
???4.1.1 聚合函数
???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就是默认值: