-
右外连接
显示右表的全部记录及左表符合连接条件的记录
查看全部 -
查询所有商品的详细信息(通过左外连接实现)
mysql> SELECT goods_id, goods_name, cate_name, brand_name, goods_price FROM tdb_goods AS g -> LEFT JOIN tdb_goods_cates AS c ON g.cate_id = c.cate_id -> LEFT JOIN tdb_goods_brands AS b ON g.brand_id = b.brand_id; +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+ | goods_id | goods_name | cate_name | brand_name | goods_price | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+ | 1 | R510VC 15.6英寸笔记本 | 笔记本 | 华硕 | 3399.000 | | 2 | Y400N 14.0英寸笔记本电脑 | 笔记本 | 联想 | 4899.000 | | 3 | G150TH 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | 4 | X550CC 15.6英寸笔记本 | 笔记本 | 华硕 | 2799.000 | | 5 | X240(20ALA0EYCD) 12.5英寸超极本 | 超级本 | 联想 | 4999.000 | | 6 | U330P 13.3英寸超极本 | 超级本 | 联想 | 4299.000 | | 7 | SVP13226SCB 13.3英寸触控超极本 | 超级本 | 索尼 | 7999.000 | | 8 | iPad mini MD531CH/A 7.9英寸平板电脑 | 平板电脑 | 苹果 | 1998.000 | | 9 | iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 3388.000 | | 10 | iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 2788.000 | | 11 | IdeaCentre C340 20英寸一体电脑 | 台式机 | 联想 | 3499.000 | | 12 | Vostro 3800-R1206 台式电脑 | 台式机 | 戴尔 | 2899.000 | | 13 | iMac ME086CH/A 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | 14 | AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux ) | 台式机 | 宏碁 | 3699.000 | | 15 | Z220SFF F4F06PA工作站 | 服务器/工作站 | 惠普 | 4288.000 | | 16 | PowerEdge T110 II服务器 | 服务器/工作站 | 戴尔 | 5388.000 | | 17 | Mac Pro MD878CH/A 专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | 18 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 19 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | 20 | X3250 M4机架式服务器 2583i14 | 服务器/工作站 | IBM | 6888.000 | | 21 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 22 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+
22 rows in set (0.00 sec)
查询所有商品的详细信息(通过右外连接实现):
mysql> SELECT goods_id, goods_name, cate_name, brand_name, goods_price FROM tdb_goods AS g -> RIGHT JOIN tdb_goods_cates AS c ON g.cate_id = c.cate_id -> RIGHT JOIN tdb_goods_brands AS b ON g.brand_id = b.brand_id; +----------+--------------------------------------------------------------------------------------+---------------------+--------------+-------------+ | goods_id | goods_name | cate_name | brand_name | goods_price | +----------+--------------------------------------------------------------------------------------+---------------------+--------------+-------------+ | 1 | R510VC 15.6英寸笔记本 | 笔记本 | 华硕 | 3399.000 | | 4 | X550CC 15.6英寸笔记本 | 笔记本 | 华硕 | 2799.000 | | 2 | Y400N 14.0英寸笔记本电脑 | 笔记本 | 联想 | 4899.000 | | 5 | X240(20ALA0EYCD) 12.5英寸超极本 | 超级本 | 联想 | 4999.000 | | 6 | U330P 13.3英寸超极本 | 超级本 | 联想 | 4299.000 | | 11 | IdeaCentre C340 20英寸一体电脑 | 台式机 | 联想 | 3499.000 | | 3 | G150TH 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | 7 | SVP13226SCB 13.3英寸触控超极本 | 超级本 | 索尼 | 7999.000 | | 18 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 19 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | 21 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 22 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | 8 | iPad mini MD531CH/A 7.9英寸平板电脑 | 平板电脑 | 苹果 | 1998.000 | | 9 | iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 3388.000 | | 10 | iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 2788.000 | | 13 | iMac ME086CH/A 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | 17 | Mac Pro MD878CH/A 专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | 12 | Vostro 3800-R1206 台式电脑 | 台式机 | 戴尔 | 2899.000 | | 16 | PowerEdge T110 II服务器 | 服务器/工作站 | 戴尔 | 5388.000 | | 14 | AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux ) | 台式机 | 宏碁 | 3699.000 | | 15 | Z220SFF F4F06PA工作站 | 服务器/工作站 | 惠普 | 4288.000 | | 20 | X3250 M4机架式服务器 2583i14 | 服务器/工作站 | IBM | 6888.000 | | NULL | NULL | NULL | 海尔 | NULL | | NULL | NULL | NULL | 清华同方 | NULL | | NULL | NULL | NULL | 神舟 | NULL | | NULL | NULL | NULL | 海尔 | NULL | | NULL | NULL | NULL | 清华同方 | NULL | | NULL | NULL | NULL | 神舟 | NULL | +----------+--------------------------------------------------------------------------------------+---------------------+--------------+-------------+ 28 rows in set (0.00 sec)
查看全部 -
左外连接
显示左表的全部记录及右表符合连接条件的记录
查看全部 -
内连接
显示左表及右表符合连接条件的记录
mysql> DESC tdb_goods; +-------------+------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------------+------+-----+---------+----------------+ | goods_id | smallint unsigned | NO | PRI | NULL | auto_increment | | goods_name | varchar(150) | NO | | NULL | | | cate_id | smallint unsigned | NO | | NULL | | | brand_id | smallint unsigned | NO | | NULL | | | goods_price | decimal(15,3) unsigned | NO | | 0.000 | | | is_show | tinyint(1) | NO | | 1 | | | is_saleoff | tinyint(1) | NO | | 0 | | +-------------+------------------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec) mysql> DESC tdb_goods_cates; +-----------+-------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------------+------+-----+---------+----------------+ | cate_id | smallint unsigned | NO | PRI | NULL | auto_increment | | cate_name | varchar(40) | YES | | NULL | | +-----------+-------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec) mysql> SELECT goods_id, goods_name, cate_name, brand_name, goods_price FROM tdb_goods AS g -> INNER JOIN tdb_goods_cates AS c ON g.cate_id = c.cate_id -> INNER JOIN tdb_goods_brands AS b ON g.brand_id = b.brand_id; +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+ | goods_id | goods_name | cate_name | brand_name | goods_price | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+ | 1 | R510VC 15.6英寸笔记本 | 笔记本 | 华硕 | 3399.000 | | 2 | Y400N 14.0英寸笔记本电脑 | 笔记本 | 联想 | 4899.000 | | 3 | G150TH 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | 4 | X550CC 15.6英寸笔记本 | 笔记本 | 华硕 | 2799.000 | | 5 | X240(20ALA0EYCD) 12.5英寸超极本 | 超级本 | 联想 | 4999.000 | | 6 | U330P 13.3英寸超极本 | 超级本 | 联想 | 4299.000 | | 7 | SVP13226SCB 13.3英寸触控超极本 | 超级本 | 索尼 | 7999.000 | | 8 | iPad mini MD531CH/A 7.9英寸平板电脑 | 平板电脑 | 苹果 | 1998.000 | | 9 | iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 3388.000 | | 10 | iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版) | 平板电脑 | 苹果 | 2788.000 | | 11 | IdeaCentre C340 20英寸一体电脑 | 台式机 | 联想 | 3499.000 | | 12 | Vostro 3800-R1206 台式电脑 | 台式机 | 戴尔 | 2899.000 | | 13 | iMac ME086CH/A 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | 14 | AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux ) | 台式机 | 宏碁 | 3699.000 | | 15 | Z220SFF F4F06PA工作站 | 服务器/工作站 | 惠普 | 4288.000 | | 16 | PowerEdge T110 II服务器 | 服务器/工作站 | 戴尔 | 5388.000 | | 17 | Mac Pro MD878CH/A 专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | 18 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 19 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | 20 | X3250 M4机架式服务器 2583i14 | 服务器/工作站 | IBM | 6888.000 | | 21 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | 22 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+ 22 rows in set (0.01 sec)
查看全部 -
连接条件
使用 ON 关键字来设定连接条件,也可以使用 WHERE 来代替。
通常使用 ON 关键字来设定连接条件,
使用 WHERE 关键字进行结果集记录的过滤。
查看全部 -
连接类型
INNER JOIN,内连接
在 MySQL 中,JOIN,CROSS JOIN 和 INNER JOIN 是等价的。
LEFT [OUTER] JOIN,左外连接
RIGHT [OUTER] JOIN,右外连接
查看全部 -
数据表参照
table_reference tbl_name [[AS] alias] | table_subquery [AS] alias
数据表可以使用 tbl_name AS alias_name 或 tbl_name alias_name 赋予别名。
table_subquery 可以作为子查询使用在 FROM 子句中,这样的子查询必须为其赋予别名。
查看全部 -
语法结构
table_reference {[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr
查看全部 -
连接
MySQL 在 SELECT 语句、多表更新、多表删除语句中支持 JOIN 操作。
查看全部 -
连接
MySQL 在 SELECT 语句、多表更新、多表删除语句中支持 JOIN 操作。
查看全部 -
分别在 tdb_goods_cates 和 tdb_goods_brands 表插入记录:
mysql> INSERT tdb_goods_cates(cate_name) VALUES('路由器'), ('交换机'), ('网卡'); -> INSERT tdb_goods_brands(brand_name) VALUES('海尔'), ('清华同方'), ('神舟');
在 tdb_goods 数据表写入任意记录:
INSERT tdb_goods(goods_name, cate_id,brand_id, goods_price) VALUES('LaserJet Pro P1606dn 黑白激光打印机', '12', '4', '1849'); mysql> SELECT * FROM tdb_goods_cates; +---------+-----------+ | cate_id | cate_name | +---------+-----------+ | 1 | ??? | | 2 | ??? | | 3 | ??? | | 4 | ???? | | 5 | ??? | | 6 | ???/??? | | 7 | ????? | | 8 | ??? | | 9 | ??? | | 10 | ?? | +---------+-----------+ 10 rows in set (0.00 sec)
查看全部 -
查看 tdb_goods 的数据表结构:
mysql> DESC tdb_goods; +-------------+------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------------+------+-----+---------+----------------+ | goods_id | smallint unsigned | NO | PRI | NULL | auto_increment | | goods_name | varchar(150) | NO | | NULL | | | goods_cate | varchar(40) | NO | | NULL | | | brand_name | varchar(40) | NO | | NULL | | | goods_price | decimal(15,3) unsigned | NO | | 0.000 | | | is_show | tinyint(1) | NO | | 1 | | | is_saleoff | tinyint(1) | NO | | 0 | | +-------------+------------------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)
通过 ALTER TABLE 语句修改数据表结构:
mysql> ALTER TABLE tdb_goods -> CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL, -> CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL; Query OK, 22 rows affected (0.14 sec) Records: 22 Duplicates: 0 Warnings: 0 mysql> DESC tdb_goods; +-------------+------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------------+------+-----+---------+----------------+ | goods_id | smallint unsigned | NO | PRI | NULL | auto_increment | | goods_name | varchar(150) | NO | | NULL | | | cate_id | smallint unsigned | NO | | NULL | | | brand_id | smallint unsigned | NO | | NULL | | | goods_price | decimal(15,3) unsigned | NO | | 0.000 | | | is_show | tinyint(1) | NO | | 1 | | | is_saleoff | tinyint(1) | NO | | 0 | | +-------------+------------------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)
查看全部 -
通过 tdb_goods_brands 数据表来更新 tdb_goods 数据表(错误)
UPDATE tdb_goods INNER JOIN tdb_goods_brands ON brand_name = brand_name SET brand_name = brand_id; -- Column 'brand_name' in field list is ambigous
正确:
mysql> UPDATE tdb_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brand_name = b.brand_name -> SET g.brand_name = b.brand_id; Query OK, 22 rows affected (0.00 sec) Rows matched: 22 Changed: 22 Warnings: 0 mysql> SELECT * FROM tdb_goods; +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+---------+------------+ | goods_id | goods_name | goods_cate | brand_name | goods_price | is_show | is_saleoff | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+---------+------------+ | 1 | R510VC 15.6英寸笔记本 | 笔记本 | 1 | 3399.000 | 1 | 0 | | 2 | Y400N 14.0英寸笔记本电脑 | 笔记本 | 2 | 4899.000 | 1 | 0 | | 3 | G150TH 15.6英寸游戏本 | 游戏本 | 3 | 8499.000 | 1 | 0 | | 4 | X550CC 15.6英寸笔记本 | 笔记本 | 1 | 2799.000 | 1 | 0 | | 5 | X240(20ALA0EYCD) 12.5英寸超极本 | 超级本 | 2 | 4999.000 | 1 | 0 | | 6 | U330P 13.3英寸超极本 | 超级本 | 2 | 4299.000 | 1 | 0 | | 7 | SVP13226SCB 13.3英寸触控超极本 | 超级本 | 4 | 7999.000 | 1 | 0 | | 8 | iPad mini MD531CH/A 7.9英寸平板电脑 | 平板电脑 | 5 | 1998.000 | 1 | 0 | | 9 | iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版) | 平板电脑 | 5 | 3388.000 | 1 | 0 | | 10 | iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版) | 平板电脑 | 5 | 2788.000 | 1 | 0 | | 11 | IdeaCentre C340 20英寸一体电脑 | 台式机 | 2 | 3499.000 | 1 | 0 | | 12 | Vostro 3800-R1206 台式电脑 | 台式机 | 6 | 2899.000 | 1 | 0 | | 13 | iMac ME086CH/A 21.5英寸一体电脑 | 台式机 | 5 | 9188.000 | 1 | 0 | | 14 | AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux ) | 台式机 | 7 | 3699.000 | 1 | 0 | | 15 | Z220SFF F4F06PA工作站 | 服务器/工作站 | 8 | 4288.000 | 1 | 0 | | 16 | PowerEdge T110 II服务器 | 服务器/工作站 | 6 | 5388.000 | 1 | 0 | | 17 | Mac Pro MD878CH/A 专业级台式电脑 | 服务器/工作站 | 5 | 28888.000 | 1 | 0 | | 18 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 4 | 6999.000 | 1 | 0 | | 19 | 商务双肩背包 | 笔记本配件 | 4 | 99.000 | 1 | 0 | | 20 | X3250 M4机架式服务器 2583i14 | 服务器/工作站 | 9 | 6888.000 | 1 | 0 | | 21 | HMZ-T3W 头戴显示设备 | 笔记本配件 | 4 | 6999.000 | 1 | 0 | | 22 | 商务双肩背包 | 笔记本配件 | 4 | 99.000 | 1 | 0 | +----------+--------------------------------------------------------------------------------------+---------------------+------------+-------------+---------+------------+ 22 rows in set (0.00 sec) mysql> DESC tdb_goods; +-------------+------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------------+------+-----+---------+----------------+ | goods_id | smallint unsigned | NO | PRI | NULL | auto_increment | | goods_name | varchar(150) | NO | | NULL | | | goods_cate | varchar(40) | NO | | NULL | | | brand_name | varchar(40) | NO | | NULL | | | goods_price | decimal(15,3) unsigned | NO | | 0.000 | | | is_show | tinyint(1) | NO | | 1 | | | is_saleoff | tinyint(1) | NO | | 0 | | +-------------+------------------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)
查看全部 -
通过 CREATE...SELECT 来创建数据表并且同时写入记录
mysql> CREATE TABLE tdb_goods_brands ( -> brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, -> brand_name VARCHAR(40) NOT NULL -> ) SELECT brand_name FROM tdb_goods GROUP BY brand_name; Query OK, 9 rows affected (0.06 sec) Records: 9 Duplicates: 0 Warnings: 0 mysql> SHOW TABLES; +------------------+ | Tables_in_imooc | +------------------+ | tdb_goods | | tdb_goods_brands | | tdb_goods_cates | +------------------+ 3 rows in set (0.01 sec) mysql> SELECT * FROM tdb_goods_brands; +----------+------------+ | brand_id | brand_name | +----------+------------+ | 1 | 华硕 | | 2 | 联想 | | 3 | 雷神 | | 4 | 索尼 | | 5 | 苹果 | | 6 | 戴尔 | | 7 | 宏碁 | | 8 | 惠普 | | 9 | IBM | +----------+------------+ 9 rows in set (0.00 sec)
查看全部 -
CREATE...SELECT
创建数据表同时将查询结果写入到数据表
CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] select_statement
查看全部
举报