MYSQL数据库(十二)- 添加表关系join、insert...select、create ...select多表更新

目录

数据准备

一、单表写入,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

案例:获取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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值