DataBase -- JOIN

SQL JOIN:用于根据两个或多个表中列的关系,从这些表中查数据。

(为了得到完整数据,我们需要从两个或多个表中获取结果。)

例如W3School中列出的实例,使用如下语句:

select Persons.LastName, Persons.FirstName, Orders.OrderNo
from Persons
inner Join orders
on Persons.Id_p = Orders.Id_p
order by Persons.LaseName
  • 除了上面的inner join还有以下几种连接:
    • JOIN:如果表中至少有一个匹配,则返回行;
    • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行;
    • RIGHT JOIN:即使左表中没有匹配,也从右表中返回所有的行;
    • FULL JOIN:只要其中一个表中存在匹配,则返回行。
  • INNER JOIN语法:(INNER JOIN 与 JOIN是相同的)
SELECT column_names 
FROM table_name1
INNER JION table_name2
ON table_name1.column_name = table_name2.column_name
  •  LEFT JOIN语法:
SELECT column_names
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name = table_name2.column_name
  • RIGHT JOIN语法:
SELECT column_names
FROM table_name1
RIGHT JOIN tale_name2
ON table_name1.column_name = table_name2.column_name
  • FULL JOIN语法:
SELECT column_names
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name = table_name2.column_name

Question:

Table: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+
PersonId is the primary key column for this table.

Table: Address

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
AddressId is the primary key column for this table.

Write a SQL query for a report that provides the following information for each person in the Person table, regardless if there is an address for each of those people:

FirstName, LastName, City, State

Analysis:

写一个SQL语句, 返回Person表格中的以下信息,不管这些people是否有住址信息。

使用上面的LEFT JOIN语句。

Answer:

select Person.FirstName, Person.LastName, Address.City, Address.State
from Person
left join Address
on Person.PersonId = Address.PersonId;

  

原文地址:https://www.cnblogs.com/little-YTMM/p/5245702.html