《MySQL必知必会》学习笔记-联结

《MySQL必知必会》学习笔记-联结

  • 联结

联结

SQL最强大的功能之一就是能在数据检索查询的执行中联结(join)表。
联结是一种机制,用来在一条SELECT语句中关联表。联结不是物理实体,它在实际的数据库表中不存在。联结由MySQL根据需要建立,它存在于查询的执行当中。
关系表的设计就是要保证把信息分解成多个表,一类数据一个表。各表通过某些常用的值(即关系设计中的关系(relational))互相关联。
外键(foreign key) 为某个表中的一列,它包含另一个表的主键,定义了两个表之间的关系。

  • 创建联结
    规定要联结的所有表以及它们如何关联即可。
  1. 使用WHERE子句+完全限定列名
    mysql> SELECT vend_name, prod_name, prod_price
    -> FROM vendors, products
    -> WHERE vendors.vend_id = products.vend_id
    -> ORDER BY vend_name, prod_name;
    ±------------±---------------±-----------+
    | vend_name | prod_name | prod_price |
    ±------------±---------------±-----------+
    | ACME | Bird seed | 10.00 |
    | ACME | Carrots | 2.50 |
    | ACME | Detonator | 13.00 |
    | ACME | Safe | 50.00 |
    | ACME | Sling | 4.49 |
    | ACME | TNT (1 stick) | 2.50 |
    | ACME | TNT (5 sticks) | 10.00 |
    | Anvils R Us | .5 ton anvil | 5.99 |
    | Anvils R Us | 1 ton anvil | 9.99 |
    | Anvils R Us | 2 ton anvil | 14.99 |
    | Jet Set | JetPack 1000 | 35.00 |
    | Jet Set | JetPack 2000 | 55.00 |
    | LT Supplies | Fuses | 3.42 |
    | LT Supplies | Oil can | 8.99 |
    ±------------±---------------±-----------+
  2. 使用INNER JOIN … ON(内部联结、等值联结)
    mysql> SELECT vend_name, prod_name, prod_price
    -> FROM vendors INNER JOIN products
    -> ON vendors.vend_id = products.vend_id;
  3. 联结多个表
    mysql> SELECT cust_name, cust_contact FROM customers, orders, orderitems
    -> WHERE customers.cust_id = orders.cust_id
    -> AND orderitems.order_num = orders.order_num
    -> AND prod_id = ‘TNT2’;
    ±---------------±-------------+
    | cust_name | cust_contact |
    ±---------------±-------------+
    | Coyote Inc. | Y Lee |
    | Yosemite Place | Y Sam |
    ±---------------±-------------+

你可能感兴趣的:(MySql学习)