第二章java入门:4.数据库表关系与查询操作
01
—
外键和表关系
外键
外键:唯一标识其他表中的一条记录,用来通知数据库两张表列与列之间的对应关系, 并让数据库帮我们维护这样关系的键就叫做外键。
例如:员工表的部门id列(dept_id)和部门表的id列具有一 一对应的关系, 其中dept_id就是外键。
外键作用: 确保数据库数据的完整性和一致性
添加外键: 例如:foreign key(dept_id)references dept(id)
表关系
一对多
一对多,反过来就是多对一,以班级和学生为例:
(1)一个班级中可能会有多个学生(1~*)
(2)一个学生只能属于一个班级(1~1),两者合并结果还是1~*
因此,班级表和学生表是一对多的关系
对于一对多的两张表,可以在多的一方添加列,保存一的一方的主键,从而保存两张表之间的关系
一对一
以班级和教室为例:
(1)一个班级对应一个教室(1~1)
(2)一个教室也只对应一个班级(1~1),两者合并结果还是1~1
因此,班级表和教室表是一对一的关系
对于一对一关系的两张表,可以在任意一张表中添加列,保存另一张表的主键,从而保存两张表之间的关系
多对多
以学生和老师为例:
(1)一个学生对应多个老师(1~*)
(2)一个老师也对应多个学生(1~*),两者合并结果是*~*
因此,学生表和老师表是多对多的关系
对于多对多的关系,可以拆分成两张一对多的关系,无法在两张表中添加列保存关系,但我们可以添加一张第三方的表(专门保存两张表的关系),保存两张表的主键,从而保存两张表的关系。
02
—
多表连接查询
连接查询
连接查询:将两张或者两张以上的表,按照指定条件查询,将结果显示在一张表中。
多张表查询的语法:
select...
from A, B...
where...
如果表名过长,可以为表添加别名以方便书写
select...
from A a, B b...
where...
上面小写的a和b就是A和B表的别名
外连接查询
左外连接查询
显示左侧表中的所有记录,如果在右侧表中没有对应的记录,则显示为null
语法:
select ...
from a left join b on (a.id=b.xid)
右外连接查询
显示右侧表中的所有记录,如果在左侧表中没有对应的记录,则显示为null
语法:
select ...
from a right join b on (a.id=b.xid)
子查询
所谓的子查询,其实就是将一个查询得出的结果,作为另外一个查询的条件。
格式:
select...
from...
where...(select...from...)
多表查询
......等等
资料下载:
视频01:14.where和having区别
视频02:15.完成mysql涉及的所有查询
视频03:16.备份与恢复数据库
视频04:17.表关系与数据库乱码问题
视频05:18.Navicat工具的使用
每日分享更多文章及视频!欢迎你的加入