目录
数据准备
一、单表写入,insert…select
案例:获取goods的分类,写入到新的数据表
二、多表更新、表关系join
案例一:我们使用内链接,链接goods数据表和goods_two数据表,然后修改goods_cate
三、案例:多表更新之一步到位(create …select)
数据准备
//创建一个新的数据库
mysql> create table if not exists goods_two(
-> cate_id smallint unsigned primary key auto_increment,
-> cate_name varchar(20) not null);
Query OK, 0 rows affected (0.35 sec)
//查看数据表结构:
mysql> desc goods_two;
+-----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------------+------+-----+---------+----------------+
| cate_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| cate_name | varchar(20) | NO | | NULL | |
+-----------+----------------------+------+-----+---------+----------------+
2 rows in set (0.05 sec)
一、单表写入,insert…select
- 注意,前面博客我们也简单的介绍过insert…select
- 地址:http://blog.csdn.net/bobo89455100/article/details/72965261
- 位置:文章最后一个案例
案例:获取goods的分类,写入到新的数据表
//第一步,查看我们goods数据发现我们数据表分为了7类。注意这里还是用到的上篇博客的goods数据表
mysql> select goods_cate from goods group by goods_cate;
+---------------+
| goods_cate |
+---------------+
| 台式机 |
| 平板电脑 |
| 服务器/工作站 |
| 游戏本 |
| 笔记本 |
| 笔记本配件 |
| 超级本 |
+---------------+
7 rows in set (0.00 sec)
//第二步,把我们这7类写入我们创建好的新数据表,这里用到的就是我们今天学的知识,insert...select
语法:insert [into] tbl_name[(col_name,...)] select...
//第三部:把goods数据库的所有分类,写入写的数据表中。
mysql> insert goods_two(cate_name) select goods_cate from goods group by goods_c
ate;
Query OK, 7 rows affected (0.06 sec)
Records: 7 Duplicates: 0 Warnings: 0
//查看插入到新数据表中的记录
mysql> select * from goods_two;
+---------+---------------+
| cate_id | cate_name |
+---------+---------------+
| 1 | 台式机 |
| 2 | 平板电脑 |
| 3 | 服务器/工作站 |
| 4 | 游戏本 |
| 5 | 笔记本 |
| 6 | 笔记本配件 |
| 7 | 超级本 |
+---------+---------------+
7 rows in set (0.00 sec)
二、多表更新、表关系join
注意:我们需要多表更新,就需要给这些表添加关系
- 语法结构
- 链接类型有三种 :
案例一:我们使用内链接,链接goods数据表和goods_two数据表,然后修改goods_cate
//第一步,查看插入到新数据表中的记录,添加内连接到goods,用cate_id来代替总表中的goods_cate参数。
mysql> select * from goods_two;
+---------+---------------+
| cate_id | cate_name |
+---------+---------------+
| 1 | 台式机 |
| 2 | 平板电脑 |
| 3 | 服务器/工作站 |
| 4 | 游戏本 |
| 5 | 笔记本 |
| 6 | 笔记本配件 |
| 7 | 超级本 |
+---------+---------------+
//第二步、我们给这两张数据表添加内连接,这样我们更新数据表goods_two中的数据,就会改变goods中的数据,这样我们就不用操作总表去改变数据,只需要通过子表来改变数据即可,方便我们操作。
mysql> update goods inner join goods_two on goods_cate=cate_name
-> set goods_cate = cate_id;
Query OK, 22 rows affected (0.07 sec)
Rows matched: 22 Changed: 22 Warnings: 0
//建立关系前.总表中的goods_cate,还是笔记本配件
*************************** 22. row ***************************
goods_id: 22
goods_name: 商务双肩背包
goods_cate: 笔记本配件
brand_name: 索尼
goods_price: 99.000
is_show: 1
is_saleoff: 0
22 rows in set (0.00 sec)
//建立关系后、后面的值,就会改变成goods_two中与之对应的cate_id值,而cate_id多代表的意思就是笔记本配件
*************************** 22. row ***************************
goods_id: 22
goods_name: 商务双肩背包
goods_cate: 6
brand_name: 索尼
goods