码迷,mamicode.com
首页 > 数据库 > 详细

MySQL多表&使用JDBC完成分类表CRUD的操作

时间:2019-05-12 10:40:25      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:需要   分类   info   图片   字段名   创建   商品   add   key   

 外键

  技术图片

  现在有两张表“分类表”和“商品表”,为了表明商品属于哪个 类别,通常情况下,我们将在商品上添加一列,用来存放分类的cid信息,此列成为外键

   技术图片

  此时,分类表 category 称作主表,cid 成为主键。商品表 products 成为从表,category_id 成为外键。

  通过主表和从表的外键描述主外键的关系,呈现的就是一对多的关系。

外键特点

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

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

声明外键约束

  语法:

alter table 从表 add[constraint] [外键名称] foreign key (从表外键在字段名)references 主表(主表的主键);

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

alter table 从表 drop foreign key 外键名称 

实际操作

创建数据库

技术图片

创建分类表

1.分类表
create table category(
    cid varchar(32) primary key,
    cname varchar(100)
);

技术图片

创建商品表

2.商品表
create table product(
    pid varchar(32) primary key,
    pname varchar(40),
    price double,
    category_id varchar(32)
);

 技术图片

设置编码格式

set name gbk;

 技术图片

添加点数据

insert into category(cid,cname) values(c001,家电);
insert into category(cid,cname) values(c002,服饰);
insert into category(cid,cname) values(c003,化妆品);

insert into product(pid,pname,price,category_id) values(p001,联想,5000,c001);
insert into product(pid,pname,price,category_id) values(p002,海尔,5000,c001);
insert into product(pid,pname,price,category_id) values(p003,雷神,5000,c001);

insert into product(pid,pname,price,category_id) values(p004,JACK JONES,800,c002);
insert into product(pid,pname,price,category_id) values(p005,真维斯,200,c002);
insert into product(pid,pname,price,category_id) values(p006,花花公子,440,c002);
insert into product(pid,pname,price,category_id) values(p007,劲霸,2000,c002);

insert into product(pid,pname,price,category_id) values(p008,香奈儿,800,c003);
insert into product(pid,pname,price,category_id) values(p009,相宜本草,200,c003);

 技术图片

最后一列 category_id 列在创建表的时候自己定义的,如果没有,则可以使用一下命令添加一列。

alter table product add category_id

链接两张表

alter table product add foreign key(category_id) references category(cid);

技术图片

两张表已经关联,主表有外键约束。不能轻易删除主表数据,因为从表有他的记录。

要想解除关系,先删除从表对他有关系的数据删除,再删除主表数据。

使用外键的目的

  保证数据的完整性。

 注意事项

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

  主表不能删除从表中已经引用的记录。

 表与表之间的关系

  表语表之间的关系,说的就是表与表数据之间的关系。

一对多的关系

  常见的实例:客户和订单,分类和商品,部门和员工。

  一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表的主键。

alter table 从表 add [constraint][外键名称] foreign key(从表外键在字段名) references 主表(主表的主键);

技术图片

多对多的关系

  常见的实例:学生和课程,商品和订单,演员和角色。

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

  技术图片

技术图片

建立关系

alter table stu_course add foreign key(sno)  references stu(sid);
alter table stu_course add foreign key(sno)  references course(cid);

 一对一关系(了解)

  在实际开发中应用不多,因为一对一可以创建成一张表。

  两种建表原则:

    外键唯一:主表的主键和从简的外键唯一,形成主外键关系,外键唯一 unique。

    外键是主键:主表的主键和从表的主键,形成主外键关系。

   技术图片

多表查询

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

MySQL多表&使用JDBC完成分类表CRUD的操作

标签:需要   分类   info   图片   字段名   创建   商品   add   key   

原文地址:https://www.cnblogs.com/wjw1014/p/10851218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!