创建多表及多表的关系

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

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);
  • 多表之间的关系如何来维护
外键约束: foreign key-给product中的cno 添加一个外键约束alter table product add foreign key(cno)  references  category(cid);-从分类表中,删除分类为5信息delete from category where cid =5;  //删除失败,首先得去product表, 删除所有分类ID5  商品delete from product where cno=5;
  • 建数据库原则: 通常情况下,一个项目/应用建一个数据库
  • 多表之间的建表原则
 - 一对多 : 商品和分类建表原则: 在多的一方添加一个外键,指向一的一方的主键- 多对多: 老师和学生, 学生和课程建表原则: 建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至少要有两个外键,分别指向原来的那两张表。- 一对一: 班级和班长, 公民和身份证, 国家和国旗建表原则:  - 将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表- 直接将两张表合并成一张表- 将两张表的主键建立起连接,让两张表里面主键相等- 实际用途: 用的不是很多.    (拆表操作  )- 相亲网站: - 个人信息 : 姓名,性别,年龄,身高,体重,三围,兴趣爱好,(年收入,  特长,学历, 职业, 择偶目标,要求)- 拆表操作 : 将个人的常用信息和不常用信息,减少表的臃肿,

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

  • 商品分类表(分类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,'馋嘴零食','瓜子花生,八宝粥,辣条');
  • 商品表 (商品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);
  • 用户表
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,'家里',1);
  • 订单项: 中间表(订单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);
  • 内连接查询
-隐式内连接select * from product p,category c where p.cno=c.cid;
-显式内连接select * from product p inner join category c on p.cno=c.cid;
-区别:隐式内连接:在查询出结果的基础上去做where 条件过滤显式内连接:带着条件去查询结果,执行效率高。
  • 连接查询
    左外连接:会将左表中的所有数据都查询出来,如果右表中没有对应的数据,用NULL代替。
    右外连接:会将右表中的所有数据查询出来如果左表没有对应数据的话
  • 分页查询
    每页数据数据3,起始索引从0 ,第1页: 0,第2页: 3。
    起始索引: index 代表显示第几页 页数从1开始,每页显示3条数据
 startIndex  = (index-1)*3
  • 第一个参数是索引
    第二个参数显示的个数
select * from product limit 0,3;
select * from product limit 3,3;
  • 子查询
    sql的嵌套:查询语句里面嵌套查询语句

MySQL 多表操作相关推荐

  1. 关于MySQL分表操作的研究

    关于MySQL分表操作的研究 一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法.首先,我们需要想好到底分多少个表,前提当然是满足应用.这里 ...

  2. MYSQL数据库表操作pdf

    <MYSQL数据库表操作pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731023.html

  3. 数据库 MySQL 之 表操作、存储引擎

    数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名(     字段名1 ...

  4. 【MySQL多表操作练习】

    多表操作练习 > > > MySQL基础 > > > MySQL的多表操作查询 > > > MySQL多表操作练习 > > > ...

  5. qt mysql怎么选表_Qt的Mysql数据库表操作(1)

    Qt中的QSqlDatabase.QSqlQueryModel.QSqlRecord.QSqlTableModel等类为我们提供了快速开发数据库的方式,支持多种数据库连接,例如oracle,db2,M ...

  6. mysql怎么多表备份_学习MySQL多表操作和备份处理

    [IT168 服务器学院]前面我们熟悉了数据库和数据库表的基本操作,现在我们再来看看如何操作多个表. 多表操作 在一个数据库中,可能存在多个表,这些表都是相互关联的.我们继续使用前面的例子.前面建立的 ...

  7. 【MySQL】表操作和库操作

    文章目录 概念 库操作 1.创建数据库 2.删除数据库 3.选择数据库 4.显示数据库列表 表操作 1.创建数据表CREATE 2.删除数据表DROP 3.插入数据INSERT 4.更新数据UPDAT ...

  8. mysql数据表操作_MySQL数据表基本操作实例详解

    本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...

  9. mysql多表操作语句_MYSQL数据库语句之多表操作(三)

    多表操作 join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系. inner join(内连接):获取2个表中字段匹配关系的记录. 外连接 lef ...

  10. MySQL多表操作的外键约束

    目录 一.多表关系 一对一关系 一对多/多对一关系 多对多关系 二.外键约束 特点 创建外键约束 方式1-在创建表时设置外键约束 方式2-在创建表时设置外键约束 在外键约束下的操作 1.数据插入 2. ...

最新文章

  1. 服务器端linux发行版的选择
  2. java拦截到登陆界面,JavaWeb 使用Filter实现自动登录
  3. fedora20开机启动配置:systemctl
  4. 弹性架构_实践中的弹性基础架构
  5. 如何使用NodeManager来控制WebLogic Server
  6. TWiki 语法格式(TWiki语法教程及TWiki使用技巧)
  7. Objectove-c单例模式
  8. Android studio错误:module not specified
  9. 解决办法:对‘operator delete(void*)’未定义的引用
  10. js检测浏览器支持的字体
  11. 如何修改hosts文件?几种修改hosts文件的方法
  12. D3D11 法线贴图(凹凸贴图)
  13. 网络协议篇之CWMP协议(三)—— RPC方法
  14. python3实现base64编码
  15. 雷蛇灵刃触摸按压反馈失灵解决方法
  16. 安装SQL Server 2008 及 VS 2008
  17. Chatbot 聊天机器人页面交互设计
  18. 我博士科研经历中的经验和教训——朱亮
  19. RabbitMQ消息队列工作原理及集成使用
  20. NYOJ:458-小光棍数

热门文章

  1. 【ThreeJS基础教程-高级几何体篇】2.6.1 BufferGeometry应用1-物体居中与包围盒的应用
  2. 1086 简单数字打印
  3. Kaggle-Video Game Sales数据分析
  4. pip与虚拟环境相关操作
  5. 驱动---软件和硬件的桥梁
  6. postman学习笔记与相关面试题(含部分接口测试知识,可用于Jmeter的运用)
  7. java web开发菜鸟教程_Web开发的入门指导
  8. PDF格式分析(五)文档结构之文件头
  9. 餐饮行业数字化营销方案 | 如何用优质内容驱动营收、口碑双增长
  10. 学习C++:实践者的方法(Beta1)