Mysql内连接_INNER JOIN

本文详细介绍了SQL中的连接查询,包括内连接(INNER JOIN)、跨数据库连接、自连接以及连接同一数据库的多张表。通过实例展示了如何使用JOIN操作符连接不同或相同的表,以及如何处理多表之间的关系,如员工与管理人员的关系。同时,提到了复合连接和隐式内连接的用法,强调了显式语法JOIN的推荐使用。
摘要由CSDN通过智能技术生成
一、连接同一数据库的两张表
SELECT *
FROM orders
-- 内连接时INNER可以省略
INNER JOIN customers ON  orders.customer_id=customers.customer_id

这样会将orders表和customers表内容全部显示出来,左边是orders表

 
SELECT orders.customer_id,order_id,first_name,last_name,phone    # 有两列customer_id, 需指明选中哪一个
FROM orders
-- 内连接时INNER可以省略
INNER JOIN customers ON  orders.customer_id=customers.customer_id

表的名字后面紧跟字符,该字符可指替表——使用该方法后原来的表名将不再适用

SELECT o.customer_id,order_id,first_name,last_name,phone
FROM orders o # o代替orders,保存美观
-- 内连接时INNER可以省略
INNER JOIN customers c ON o.customer_id=c.customer_id

二、跨数据库连接两张表

将sql_store数据库中的order_items表和sql_inventory数据库中的products表连接起来,都包含product_id
 
USE sql_store;
SELECT *
FROM sql_inventory.products p    # 先展示此表,只需要给不在当前数据库中的表加前缀
JOIN order_items oi
    ON p.product_id=oi.product_id
USE sql_store;
SELECT *
FROM order_items oi    # 先展示此表
JOIN sql_inventory.products p
    ON p.product_id=oi.product_id
USE sql_inventory;
SELECT *
FROM sql_store.order_items oi    # 先展示此表
JOIN products p
    ON p.product_id=oi.product_id

三、自连接-自己连接自己,例如员工和管理人员在同一表中,查找他们的关系

USE sql_hr;
SELECT
    e.employee_id,
    e.first_name AS employee,
    m.first_name AS manager
FROM employees e
JOIN employees m ON e.reports_to=m.employee_id

 
四、连接同一数据库的多张表
USE sql_store;
SELECT order_id,order_date,first_name,last_name,os.name AS status
FROM orders o
JOIN customers c ON c.customer_id=o.customer_id
JOIN order_statuses os ON os.order_status_id=o.status
USE sql_invoicing;
SELECT
    c.name,
    pm.name AS method,
    p.date,p.amount
FROM clients c
JOIN payments p
    ON p.client_id=c.client_id
JOIN payment_methods pm
    ON pm.payment_method_id=p.payment_method

五、复合连接-连接有多个主键的表

USE sql_store;
SELECT *
FROM order_items oi
JOIN order_item_notes oin
    ON oi.order_id=oin.order_Id
    AND oi.product_id=oin.product_id

六、隐式语法内连接-不建议使用-强烈建议使用显示语法JOIN

USE sql_store;
SELECT *
FROM customers c,orders o
WHERE c.customer_id=o.customer_id

 


 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员班长

感谢您的一路相伴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值