连接实现多表更新与查询

多表操作语法:

这里写图片描述

分析:

  1. 简单查看表中的内容,可以看到有很多重复的数据。例如goods_cate字段中光’笔记本配件’就重复了好几次,而一般情况下汉字所占的字节数比数字占的字节数多(GBK 编码中,一个汉字字符存储需要2个字节。UTF-8编码中,一个汉字字符储存需要3到4个字节。而当规定数字类型为TINYINT时,只占用1个字节),当记录数目很庞大的时候重复的数据就会占用很多内存空间。
  2. 可以新建一张数据表存储goods的cate,再通过外键约束两张表的内容,可以省略一些内存空间

新建商品类型表与插入类型数据:

这里写图片描述
这里写图片描述

多表更新(参照tdb_goods_cates表中每个cate_name的cate_id更新tdb_goods表中每个记录的goods_cate):

这里写图片描述
这里写图片描述

多表更新二(先新建tdb_goods_brands的同时插入来自tdb_goods中的brand_name分组,再内连接表tdb_goods实现数据更新):

这里写图片描述
这里写图片描述
这里写图片描述

修改tdb_goods表中原有列的数据类型:

这里写图片描述

分析:其实写到这里,就已经实现了逻辑外键!这样数据表tdb_goods中的cate_id字段与brand_id字段都是逻辑外键约束,是数字,当呈现给用户时应该呈现相应的中文内容,因此要通过内连接(INNER JOIN)实现联合查询:

这里写图片描述


三张表的联合查询:

这里写图片描述

  1. 用 AS 关键字规定表(或列)的别名,这样书写SQL语句时就可以变得简练
  2. 注意三张表或三张表以上的多表 INNER JOIN 之间不需要逗号分隔开,直接换行即可
  3. 从返回结果可以看到cate_name与brand_name都通过逻辑约束得到了相应内容。

顺便一提:左外连接与右外连接

左外连接:

这里写图片描述

  1. A LEFT JOIN B ON 条件
  2. 显示A中全部记录,若B中无匹配,则为NULL

右外连接:

这里写图片描述

  1. A RIGHT JOIN B ON 条件
  2. 显示B中全部记录,若A中无匹配,则为NULL

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值