内容介绍:
mysql多表
使用JDBC完成分类表CRUD的操作。
今日学习目标:
能够描述表与表的关系
能够独立编写一对多表关系SQL语句
能够独立编写多对多表关系语句
能够使用SQL进行多表查询
能够使用JDBC发送增删改查的操作。
外键描述:外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。在表列多的一方创建外键,指向需要连接的表的主键。我们通过主表的主键和从表的外键描述主外键关系,呈现就是一对多的关系。
外键特点:
1).从表外键的值时对主表主键的引用。
2).从表外键类型,必须与主表主键类型一致
声明外键约束:
语法:alter table 从表 add [constraint][外键名称] foreign key(从表外键字段名) references 主表 (主表的主键)。
[外键名称] 用于删除外键约束的,一般建议“_fk”结尾;
alter table 从表 drop foreign key 外键名称;(如果在建立外键约束时,省略了外键名称,此时就不能使用删除外键约束语句)
上述省略了外键名称。
添加外键:alter table product add constraint category_fk foreign key(category_id) references category(cid);
删除外键:alter table product drop foreign key category_fk;
下列为删除、添加数据先后步骤:
注意事项:
1.从表外键不能添加,主表中不存在的记录。
2.主表不能删除,从表已经引用的记录。
多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
一对多解释:一(指该表只拿出一列数据) 多:(指该表需要返回多列数据)
示例图:
多表查询:
1.交叉连接查询(基本不会使用-得到的是两个表的乘积);
语法:select * from A,B;
2.内连接查询(使用关键字inner join ---- inner 可省略)
隐式内连接:select * from A,B where 条件;
显示内连接:select * from A inner join B on 条件;(inner可以省略)
3.外连接查询(使用关键字 outer join -- outer 可以省略)
左外连接:left outer join
select * from A left outer join B on 条件;(主表写在前面,从表写在后面)
右外连接:right outer join
左外连接与右外连接: