美文网首页
MySQL常用命令(九)-表的联结

MySQL常用命令(九)-表的联结

作者: 油条稀饭 | 来源:发表于2020-06-14 11:26 被阅读0次

外键

作用:作为某个表的一列,它包含另外一张表的主键值,定义了两个表之间的关系;

联结

作用:在一条SELECT中检索出多个关联表的数据。

mysql> SELECT * FROM vendors;
+----+-----------------+
| id | name            |
+----+-----------------+
|  1 | 平价蔬菜棚      |
|  2 | 天天好心情      |
+----+-----------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM product;
+----+-------------+-------+-----------+
| id | productName | price | vendorsId |
+----+-------------+-------+-----------+
|  3 | 豆角        |    10 |         1 |
+----+-------------+-------+-----------+
1 row in set (0.00 sec)

mysql> SELECT vendors.id ,vendors.`name` ,product.id, product.productName FROM vendors , product;#笛卡尔积;
+----+-----------------+----+-------------+
| id | name            | id | productName |
+----+-----------------+----+-------------+
|  1 | 平价蔬菜棚      |  3 | 豆角        |
|  2 | 天天好心情      |  3 | 豆角        |
+----+-----------------+----+-------------+
2 rows in set (0.00 sec)

mysql> SELECT vendors.id ,vendors.`name`, product.id ,product.productName FROM vendors , product WHERE vendors.id = product.vendorsId
    -> ;
+----+-----------------+----+-------------+
| id | name            | id | productName |
+----+-----------------+----+-------------+
|  1 | 平价蔬菜棚      |  3 | 豆角        |
+----+-----------------+----+-------------+
1 row in set (0.00 sec)

内联结的两种形式

mysql> SELECT product.productName,product.price,vendors.name FROM product,vendors WHERE product.vendorsId = vendors.id
    -> ;
+-------------+-------+-----------------+
| productName | price | name            |
+-------------+-------+-----------------+
| 豆角        |    10 | 平价蔬菜棚      |
+-------------+-------+-----------------+
1 row in set (0.00 sec)

mysql> SELECT product.productName,product.price,vendors.name FROM product INNER JOIN vendors ON product.vendorsId = vendors.id;
+-------------+-------+-----------------+
| productName | price | name            |
+-------------+-------+-----------------+
| 豆角        |    10 | 平价蔬菜棚      |
+-------------+-------+-----------------+
1 row in set (0.00 sec)

多表联结

多表联结会降低性能,所以尽量减少表的联结。

mysql> SELECT * FROM test.order;
+----+-----------+------------+---------+
| id | productId | customerId | quality |
+----+-----------+------------+---------+
|  1 |         3 |          1 |       2 |
+----+-----------+------------+---------+
1 row in set (0.00 sec)

mysql> SELECT * FROM test.product;
+----+-------------+-------+-----------+
| id | productName | price | vendorsId |
+----+-------------+-------+-----------+
|  3 | 豆角        |    10 |         1 |
+----+-------------+-------+-----------+
1 row in set (0.00 sec)

mysql> SELECT * FROM test.customer;
+----+--------+-------------+
| id | name   | tel         |
+----+--------+-------------+
|  1 | 张三   | 15377294698 |
|  2 | 李四   | 15927955409 |
|  3 | 王五   | 15927955403 |
+----+--------+-------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM test.vendors;
+----+-----------------+
| id | name            |
+----+-----------------+
|  1 | 平价蔬菜棚      |
|  2 | 天天好心情      |
+----+-----------------+
2 rows in set (0.00 sec)

mysql> SELECT product.productName,product.price,order.quality,customer.name,vendors.name 
    -> FROM test.order,test.product,test.customer,test.vendors WHERE order.productId = product.id AND order.customerId = customer.id AND vendors.id = product.vendorsId;
+-------------+-------+---------+--------+-----------------+
| productName | price | quality | name   | name            |
+-------------+-------+---------+--------+-----------------+
| 豆角        |    10 |       2 | 张三   | 平价蔬菜棚      |
+-------------+-------+---------+--------+-----------------+
1 row in set (0.00 sec)

相关文章

  • MySQL常用命令(九)-表的联结

    外键 作用:作为某个表的一列,它包含另外一张表的主键值,定义了两个表之间的关系; 联结 作用:在一条SELECT中...

  • MySQL联结表

    关系表: 把信息分解成多个表,一类数据一个表,各表通过某些常用值(即关系设计中的关系(relational))互相...

  • MySql 联结表

    创建联结 1、where联结 结果: 注意:这里如果省略where条件,会返回笛卡尔积结果 2、内部联结 inne...

  • MySQL—表联结

  • MySQL常用命令

    数据库表三部分组成 1)表结构2)表数据3)表索引 常用命令 关闭mysql 开启mysql 登录mysql 查看...

  • MySQL学习之联结表

    内联结是inner外联结分为左右 跟着程老哥学习下MySQL,看到联结表的时候还是很懵逼的,我们用案例看看,这几个...

  • Mysql必知必会笔记——中

    在使用多个联结时应该分别测试每个联结,这样使故障排除更简单。 联结 WHERE子句指示mysql匹配两个表中的ve...

  • 03随风而逝

    写写今天学到的知识, 简单,少。 《mysql必知必会》:有 子查询,联结表,高级联结,组合查询,插入数据,更新和...

  • MySQL——使用子查询和联结表(九)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQ...

  • 设置更改root密码、连接MySQL、MySQL常用命令

    设置更改root密码 连接MySQL 连接MySQL MySQL常用命令 MySQL常用命令MySQL常用命令 扩...

网友评论

      本文标题:MySQL常用命令(九)-表的联结

      本文链接:https://www.haomeiwen.com/subject/iomaohtx.html