1、多表的创建

1.1创建一个名为thing的数据库

1.1.1 创建thing数据库

create database thing;

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_外键


1.1.2 登录数据库

use thing;

1.2创建一个商品分类的表category

1.2.1 商品分类:手机数码,鞋靴箱包,香烟酒水,酸奶饼干,零食

1.分类的ID
2.分类的名称
3.分类描述

1.2.2 在thing数据库中创建商品分类这个表

create table category(
	cid int primary key auto_increment,    
	cname varchar(10),
	cdesc varchar(31)   
);

1.2.3 在category这个表中插入一些数据

insert into category values(null,'手机数码','电子产品');
insert into category values(null,'鞋靴箱包','生活用品');
insert into category values(null,'香烟酒水','黄鹤楼,二锅头');
insert into category values(null,'酸奶饼干','娃哈哈,纯甄');
insert into category values(null,'零食','瓜子,花生,辣条');

1.3 创建一个所有商品的表product
1.3.1 所有商品

1.商品ID
2.商品名称
3.商品价格
4.生产日期
5.商品分类ID

1.3.2 在user数据中中创建商品这个表

商品和商品分类:从属关系

create table product(
	pid int primary key auto_increment,
	pname varchar(10),
	price double,
	pdate timestamp,
	cno int 
);

1.3.3 在product表中插入数据

insert into product values(null,'小米8',4999,null,1);
insert into product values(null,'锤子',66,null,1);
insert into product values(null,'阿迪',2000,null,2);
insert into product values(null,'老村长',88,null,3);
insert into product values(null,'劲酒',35,null,3);
insert into product values(null,'小熊饼干',3.5,null,4);
insert into product values(null,'娃哈哈',10,null,4);
insert into product values(null,'卫龙辣条',3,null,5);
insert into product values(null,'旺旺雪饼',2,null,5);

1.4 查看创建的表以及表中的数据
1.4.1 查看thing数据库中所有表

show tables;

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_数据库_02


1.4.2 查看表category中的数据

select * from category;

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_外键_03


1.4.3 查看product表中的数据

select * from product;

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_数据_04

2、多表之间关系的维护:外键约束

foreign key

2.1 练习:给product中的cno添加一个外键约束

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

2.2 练习:各种坑
2.2.1 插入cno为8的一条数据
此时,我们在去向product表中插入数据,如果插入的数据的cno在category表中找不到对应的cid,就无法插入数据

insert into product values(null,'oppo',2999,null,8);

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_数据库_05


2.2.2 从分类表中,删除分类信息为5 的信息

由于我们在表product中添加了分类IP为5的数据,所以我们无法删除

delete from category where cid=5;

mysql商品表 有多个图片地址怎么建表 用mysql创建商品表_数据_06


如果我们一定要删除这条数据,那么就要先将product表中所有cno=5的数据全部删除之后,再去删除表category中cid=5的数据

3、建数据库与多表之间的建表原则

3.1 建数据库的原则

  • 一个项目或应用建一个数据库

3.2多表之间的建表原则


  • 建表原则:在多的一方添加一个外键指向一的一方的主键

  • 建表原则:多建一张中间表,中间表至少要有两个外键,将多对多的关系拆成一对多,这两个外键分别指向原来的那张表

  • 建表原则:
    1.将一对一的情况,当作是一对多情况处理,在任意一张表中添加一个外键,并且这个外键要唯一,指向另一张表;
    2.直接将两个表合成一张表;
    3.将两张表的主键建立起连接,让两张表里界面主键相等。

4、主键约束与唯一约束


  • 外键都是指向另外一张表的主键
  • 一张表只有一个

  • 唯一约束不可以作为其他表的外键
  • 可以有多个唯一约束