MySQL D5

2018-12-17  本文已影响0人  在海的那边有只小倩

Inner Join 以foreign key为基准,只留下重合部分的数据

SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name;

Left Join

SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name;

Right Join

SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name;

Full Join

SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name

注意:MySQL里没有Full Join语法,可以用Left Join+Right Join代替。

Union

SELECT column_name(s) FROM table_name1 UNION / UNION ALL SELECT column_name(s) FROM table_name2 注: UNION 操作符选取不同的值,UNION ALL 允许重复的值。  


练习

USE ClassicModels;

1. 找出customer支付的check number, 如果没有check number, 也要保留customer (提示:Customers.customerNumber, Payments.checkNumber)

2. 找出customer支付的check number, 如果没有check number,不用保留 customer (提示:Customers.customerNumber, Payments.checkNumber)

3. 找出order number 对应的所有product line, 如果没有匹配,order number和product line也都要保留 (提示:OrderDetails.orderNumber, Products.productLine)

USE ClassicModels;

## 找出customer支付的check number, 如果没有check number, 也要保留customer

## Customers.customerNumber, Payments.checkNumber

SELECT*FROM customers;

SELECT*FROM payments;

SELECT customers.customerNumber, payments.checkNumber

FROM customers LEFT JOIN payments ON customers.customerNumber=payments.customerNumber;

## 找出customer支付的check number, 如果没有check number,不用保留customer

## Customers.customerNumber, Payments.checkNumber

SELECT customers.customerNumber, payments.checkNumber

FROM customers Right JOIN payments ON customers.customerNumber=payments.customerNumber;

## 找出order number 对应的所有product line, 如果没有匹配,order number和product line也都要保留

## OrderDetails.orderNumber, Products.productLine

SELECT orderdetails.orderNumber, products.productLine

FROM orderdetails Left JOIN products ON orderdetails.productCode=products.productCode

UNION

SELECT orderdetails.orderNumber, products.productLine

FROM orderdetails Right JOIN products ON orderdetails.productCode=products.productCode;

上一篇下一篇

猜你喜欢

热点阅读