笔记:MySQL多表操作

原表的结构:
在这里插入图片描述在这里插入图片描述

多表之间的关系维护
外键约束:foreign key
alter table 外表名 add foreign key(列名) references 主表名(列名);
补充删掉外键约束:alter table 表名 drop foreign key 约束名
在这里插入图片描述
多表之间的建表原则

  • 一对多:商品和分类
    • 建表原则:在多的一方添加一个外键指向一的一方的主键
  • 多对多:老师和学生,学生和课程
    • 建表原则:建立一张中中间表,将多对多的关系,中间表至少要有两个外键,分别指向另一张表
  • 一对一:班级和班长,公民和身份证,国家和国旗
    • 建表原则:
      • 将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键唯一,指向另一张表
      • 直接将两张表合并成一张
      • 将两张表的主键建立连接,让两张表里面主键相等
    • 实际用途:用的不是很多.(拆表操作)
      • 相亲网站
        • 个人信息:姓名,性别,年龄,身高,年收入,兴趣爱好(特长,学历,职业,要求…)
        • 拆表操作:将个人信息和不常用信息,减少表的臃肿,

交叉链接查询

在这里插入图片描述

笛卡尔积
查出来的结果是两张表的乘积,查出来的结果没有意义
select * from product,category

在这里插入图片描述
_过滤出有意义的数据
select * from product,category where cno=cid;
避免不知道条件来自哪里给表加上别名
select * from prodyct as p,category as c where p.cno=c.cid;
在这里插入图片描述
在这里插入图片描述
__内连接查询
___隐式内连接
:在查询出结果的基础上去做的where条件过滤
select * from product p,category c where p.cno=c.cid;
在这里插入图片描述
___显示内连接
:带着条件去查询结果,执行效率要高
select * from product p inner join categpry c on p.cno=c.cid;
在这里插入图片描述
__左外链接
:会将左表中的所有数据都查询出来,如果右表中没有对应的数据,用NULL代替
select * from product p left outer join category c on p.cno=c.cid;
在这里插入图片描述
__右外链接
:会将右表所有数据查询出来,如果左表没有对应的数据,用NULL代替
select * from product p right outer join category c on p.cno=c.cid;
在这里插入图片描述分页查询
select * from 表名 limit 起始索引,每页参数显示的个数
如:select 8 from product limit 0,3;
在这里插入图片描述
子查询
select * from product where cno = (select cid from category where cname='手机数码');
在这里插入图片描述
select pname, (select cname from category c where p.cno=c.cid) as 商品分类名称 from product p;
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值