博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019-06-15 Java学习日记之mysql多表查询
阅读量:6701 次
发布时间:2019-06-25

本文共 3534 字,大约阅读时间需要 11 分钟。

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

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

create table category(  cid int primary key auto_increment,  cname varchar(10),  cdesc varchar(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 * from category;select cname,cdesc from category;

所有商品:

1.商品ID

2.商品名称

3.商品的价格

4.生产日期

5.商品分类ID

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

create table product(    pid int primary key auto_increment,      pname varchar(10),      price double,      pdate timestamp,      cno int);
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(      uid int primary key auto_increment,        username varchar(31),        password varchar(31),        phone  varchar(11)  );  insert into user values(1,'zhangsan','123','13811118888');

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

create table orders(        oid int primary key auto_increment,          sum int not null,        otime timestamp,          address varchar(100),          uno int,          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 table product(        pid int primary key auto_increment,          pname varchar(10),          price double,          cno int,          foreign key(cno) references category(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 table orderitem(      ono int,        pno int,        foreign key(ono) references orders(oid),        foreign key(pno) references product(pid),        ocount int,        subsum double  );

 

 给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 table category(        cid int primary key auto_increment,          cname varchar(15),          cdesc varchar(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,'馋嘴零食','瓜子花生,八宝粥,辣条');

 

转载于:https://www.cnblogs.com/clqbolg/p/11042273.html

你可能感兴趣的文章
用备份控制文件做不完全恢复下的完全恢复(全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>)...
查看>>
闪回之 回收站、Flashback Drop (table、index、trigger等)
查看>>
V-rep学习笔记:碰撞检测与距离计算
查看>>
H264--1--编码原理以及I帧B帧P帧[4]
查看>>
关于Android中设置闹钟的相对比较完善的解决方案
查看>>
node端代理浏览器路由 解决浏览器跨域问题
查看>>
003_内存的深入理解
查看>>
Centos下SVN环境部署记录
查看>>
VIM退出命令
查看>>
实战VMware的三种网络模式
查看>>
office-word去掉效验红色的波浪线
查看>>
Struts2之Action与配置文件
查看>>
Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准
查看>>
多线程简单示例
查看>>
Android Studio 怎样打开两个项目?
查看>>
POJ 3278 Catch That Cow(BFS,板子题)
查看>>
[ACM] hdu 1671 Phone List (字典树)
查看>>
在Winform开发中使用FastReport创建报表
查看>>
vuejs监听苹果iphone手机键盘事件
查看>>
linux 内核参数优化
查看>>