前面,我们在谈INSERT语句时,使用两种语句:INSERT…SELECT  和  INSERT…VALUES。

INSERT…SELECT可以使用子查询。因为在写SELECT时。  ***  =    ***,这就是子查询。

  我们还以tdb_goods这张表为例,这张表目前一共有22条数据,但是这22条数据中有很多重复的信息,下面我们简单来查看一下。

select  *   from   tdb_goods\G;

  比如这21、22条记录,他们的商品类别都是笔记本配件,他们的品牌都是索尼。这些都是重复的信息,我们都知道汉字占的字节数肯定要比数字要多,如果这种记录越来越多,那么你的数据表就越来越庞大,那么查找的时候速度就会越来越慢,那最好的办法就是使用外键来实现,如果使用外键,那么至少要有两张数据表,所以我们需要再做一张数据表来存储我们的产品分类和品牌。

  下面我们就来创建商品的分类表,操作命令及结果如下:

CREATE  TABLE  IF  NOT   EXISTS   tdb_goods_cates(
cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREENT,
cate_name VARCHAR(40) NOT NULL
);

  OK,我们的数据表创建成功。

  那么我们该如何插入数据呢,难道我们要一条一条去查找吗,当然不用,一定会有其他的方法,我们可以对查找的分类进行分组来实现,下面我们来看一看我们该怎么写?操作命令及结果如下:

SELECT  goods_cate  FROM  tdb_goods   GROUP  BY   goods_cate; 

  我们发现一共分了这么几类,那么下面我们就要把这几类写到我们刚创建的那张数据表中。理论上有两种方法,一种我们可以用INSERT语句逐条的去插入。这种比较麻烦,那么有没有更简单的方法吗,当然有,我们可以使用之前我们提到过的INSERT…SELECT语句来实现,意思就是将查询的结果写入到我们指定的数据表中。

  下面我们就来尝试一下这种方法,操作命令及结果如下:

INSERT   tdb_goods_cates(cate_name)    SELECT  goods_cate  FROM  tdb_goods  GROUP    BY     goods_cate;

  我们发现记录插入成功,但是这里面还有一个问题,记录现在我们已经插入成功了,但是我们根本就没有使用过外键来实现。

  我们来查看一下,我们输入SELECT * FROM tdb_goods\G;结果如下:

  我们发现在这张表中仍然存储的是笔记本配件这些商品类别,而应该存储的是商品类别名所对应的那个数字编号,所以我们现在就需要根据我们的分类表去更新我们的商品表,就是参照tdb_goods_cates去更新tdb_goods这张表。以前我们学的是单表更新,那么现在我们要参照一个表去更新另一个表,那么这里就涉及到多表更新。

最新文章

  1. 通过c程序更改文件的ctime和mtime
  2. SPFA导读及介绍(转载)
  3. 通过源码学Java基础:BufferedReader和BufferedWriter
  4. mysql-----gtid_executed详解 原创
  5. 正确认识Android的内存管理机制,合理关闭进程 (一)
  6. 图标字体IcoMoon 使用
  7. 【转】在CentOS上安装tomcat
  8. Spring + Spring MVC + Hibernate项目开发集成(注解)
  9. C# 开发系列(一)
  10. Java之String、StringBuffer、StringBuilder
  11. 9.2.2、Libgdx的输入处理之事件处理
  12. 基于 HTML5 的 3D 工业互联网展示方案
  13. spring boot 入门及示例
  14. 软件工程(FZU2015) 赛季得分榜,第五回合
  15. c++简单学习
  16. JAVA项目中的常用的异常处理
  17. Apk反编译助手
  18. [iOS] Edit / Memo 原生控件才提供拼字检查
  19. jmeter分布式环境
  20. SVG中的元素属性

热门文章

  1. Centos7&docker-ce&compose&wordpress
  2. SSIS安装以及安装好找不到商业智能各种坑
  3. 将Spring Boot应用程序迁移到Java9:兼容性
  4. 关于ValueAnimation以及Interpolator +Drawable实现的自己定义动画效果
  5. 深入C++ new/delete,malloc/free解析
  6. 空暇时候思考之const
  7. Linux经常使用命令(九) - cat
  8. js中编码的处理
  9. blog_html
  10. taglist安装