黑马mysql商品表_2019-06-15 Java学习日记之mysql多表查询

SQL 会创建多表及多表的关系:

需求:分类表和商品表之间是不是有关系? 如果有关系,在数据库中如何表示这种关系

create tablecategory(

cidint primary keyauto_increment,

cnamevarchar(10),

cdescvarchar(31)

);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,'馋嘴零食','瓜子花生,八宝粥,辣条');select * fromcategory;select cname,cdesc from category;

所有商品:

1.商品ID

2.商品名称

3.商品的价格

4.生产日期

5.商品分类ID

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

create tableproduct(

pidint primary keyauto_increment,

pnamevarchar(10),

pricedouble,

pdatetimestamp,

cnoint);

insert into product values(null,'小米mix4',998,null,1);insert into product values(null,'锤子',2888,null,1);insert into product values(null,'阿迪王',99,null,2);insert into product values(null,'老村长',88,null,3);insert into product values(null,'劲酒',35,null,3);insert into product values(null,'小熊饼干',1,null,4);insert into product values(null,'卫龙辣条',1,null,5);insert into product values(null,'旺旺大饼',1,null,5);

//插入数据会失败insert into product values(null,'充气的',1,null,12);

多表之间的建表原则:

一对多:商品和分类

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

多对多:老师和学生,学生和课程

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

一对一:班级和班长,公民和身份证,国家和国旗

建表原则:

将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表

直接将两张表合并成一张表

将两张表的主键建立起连接,让两张表里面的主键相等

网上商城表实例的分析: 用户购物流程:

用户表 (用户的ID,用户名,密码,手机)

create table user(

uidint primary keyauto_increment,

usernamevarchar(31),

passwordvarchar(31),

phonevarchar(11)

);insert into user values(1,'zhangsan','123','13811118888');

订单表 (订单编号,总价,订单时间 ,地址,外键用户的ID)

create tableorders(

oidint primary keyauto_increment,sum int not null,

otimetimestamp,

addressvarchar(100),

unoint,foreign key(uno) references user(uid)

);insert into orders values(1,200,null,'黑马前台旁边小黑屋',1);insert into orders values(2,250,null,'黑马后台旁边1702',1);

商品表 (商品ID, 商品名称,商品价格,外键cno)

create tableproduct(

pidint primary keyauto_increment,

pnamevarchar(10),

pricedouble,

cnoint,foreign key(cno) referencescategory(cid)

);insert into product values(null,'小米mix4',998,1);insert into product values(null,'锤子',2888,1);insert into product values(null,'阿迪王',99,2);insert into product values(null,'老村长',88,3);insert into product values(null,'劲酒',35,3);insert into product values(null,'小熊饼干',1,4);insert into product values(null,'卫龙辣条',1,5);insert into product values(null,'旺旺大饼',1,5);

订单项: 中间表(订单ID,商品ID,商品数量,订单项总价)

create tableorderitem(

onoint,

pnoint,foreign key(ono) referencesorders(oid),foreign key(pno) referencesproduct(pid),

ocountint,

subsumdouble);

给1号订单添加商品 200块钱的商品

insert into orderitem values(1,7,100,100);insert into orderitem values(1,8,101,100);

给2号订单添加商品 250块钱的商品 ()

insert into orderitem values(2,5,1,35);insert into orderitem values(2,3,3,99);

商品分类表(分类ID,分类名称,分类描述)

create tablecategory(

cidint primary keyauto_increment,

cnamevarchar(15),

cdescvarchar(100)

);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,'馋嘴零食','瓜子花生,八宝粥,辣条');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值