内容介绍:

mysql多表

使用JDBC完成分类表CRUD的操作。

今日学习目标:

能够描述表与表的关系

能够独立编写一对多表关系SQL语句

能够独立编写多对多表关系语句

能够使用SQL进行多表查询

能够使用JDBC发送增删改查的操作。

 

外键描述:外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。在表列多的一方创建外键,指向需要连接的表的主键。我们通过主表的主键和从表的外键描述主外键关系,呈现就是一对多的关系。

外键特点:

1).从表外键的值时对主表主键的引用。

2).从表外键类型,必须与主表主键类型一致

声明外键约束:

语法:alter table 从表 add [constraint][外键名称] foreign key(从表外键字段名) references 主表 (主表的主键)。

[外键名称] 用于删除外键约束的,一般建议“_fk”结尾;

alter table 从表 drop foreign key 外键名称;(如果在建立外键约束时,省略了外键名称,此时就不能使用删除外键约束语句)

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键约束

上述省略了外键名称。

添加外键:alter table product add constraint category_fk foreign key(category_id) references category(cid);

 

删除外键:alter table product drop foreign key category_fk;

下列为删除、添加数据先后步骤:

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键约束_02

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键约束_03

注意事项:

1.从表外键不能添加,主表中不存在的记录。

2.主表不能删除,从表已经引用的记录。

 

多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

一对多解释:一(指该表只拿出一列数据)     多:(指该表需要返回多列数据)

示例图:

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键_04

多表查询:

1.交叉连接查询(基本不会使用-得到的是两个表的乘积);

语法:select * from A,B;

2.内连接查询(使用关键字inner join   ---- inner 可省略)

隐式内连接:select * from A,B where 条件;

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键约束_05

显示内连接:select * from A inner join B on 条件;(inner可以省略)

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键约束_06

3.外连接查询(使用关键字 outer join -- outer 可以省略)

左外连接:left outer join

select * from A left outer join B on 条件;(主表写在前面,从表写在后面)

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_主键_07

右外连接:right outer join

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键_08

左外连接与右外连接:

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_主键_09

mysql不用join怎么查多张表 mysql不设外建能多表查询嘛_外键_10