1、多表的创建
1.1创建一个名为thing的数据库
1.1.1 创建thing数据库
create database thing;
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;
1.4.2 查看表category中的数据
select * from category;
1.4.3 查看product表中的数据
select * from product;
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);
2.2.2 从分类表中,删除分类信息为5 的信息
由于我们在表product中添加了分类IP为5的数据,所以我们无法删除
delete from category where cid=5;
如果我们一定要删除这条数据,那么就要先将product表中所有cno=5的数据全部删除之后,再去删除表category中cid=5的数据
3、建数据库与多表之间的建表原则
3.1 建数据库的原则
- 一个项目或应用建一个数据库
3.2多表之间的建表原则
- 建表原则:在多的一方添加一个外键指向一的一方的主键
- 建表原则:多建一张中间表,中间表至少要有两个外键,将多对多的关系拆成一对多,这两个外键分别指向原来的那张表
- 建表原则:
1.将一对一的情况,当作是一对多情况处理,在任意一张表中添加一个外键,并且这个外键要唯一,指向另一张表;
2.直接将两个表合成一张表;
3.将两张表的主键建立起连接,让两张表里界面主键相等。
4、主键约束与唯一约束
- 外键都是指向另外一张表的主键
- 一张表只有一个
- 唯一约束不可以作为其他表的外键
- 可以有多个唯一约束