连接实现多表更新与查询

来源:互联网 发布:燕雀焉知鸿鹄之志全文 编辑:程序博客网 时间:2024/06/06 01:35

多表操作语法:

这里写图片描述

分析:

  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

1 0
原创粉丝点击