本文章仅供刚学数据库的菜鸟看 老鸟勿笑
SQL join
SQL join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行join。
请看"Persons" 表:
Id_P | LastName | FirstName | Address | City |
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
接下来请看"Orders" 表:
Id_O | OrderNo | Id_P |
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
其中Persons表中Id_P为主键,Orders表中Id_O为主键,Id_P把两个表联系了起来。
首先我们要建立一个库
use master;
go
create databaseW3c
on (
name =W3c_dat,
filename ="D:\sql\W3c.mdf",
size =5mb,
maxsize =25mb,
filegrowth = 5mb
)
log on(
name =W3c_log,
filename ="D:\sql\W3c.ldf",
maxsize =25mb,
filegrowth = 5mb
);
Go
其次 我们要建立表
use W3c;
create tablePersons(
Id_P intprimary key,
LastName char(20),
FirstName char(20),
Address char(20),
City char(20)
)
use W3c;
create tableOrders(
Id_O intprimary key,
OrderNo int,
Id_P int,
foreign key(Id_P)references Persons(Id_P),
)
插入数据
use W3c;
insert intoPersons values
(1,'Adams', 'John', 'Oxford Street','London'),
(2,'Bush', 'George', 'Fifth Avenue','New York'),
(3,'Carter', 'Thomas', 'Changan Street','Beijing')
insert intoOrders values
(1, 77895, 3),
(2, 44678, 3),
(3, 33456, 1),
(4, 24562, 1),
(5, 34764, 2)
引用两个表
我们可以通过引用两个表的方式,从两个表中获取数据:
谁订购了产品,并且他们订购了什么产品?
select Persons.LastName,Persons.FirstName,Orders.OrderNo
from Persons,Orders
where Persons.Id_P= Orders.Id_P
SQL JOIN – 使用Join
除了上面的方法,我们也可以使用关键字JOIN来从两个表中获取数据。
select Persons.LastName,Persons.FirstName,orders.OrderNo
from Persons
inner joinOrders
on Persons.Id_P= Orders.Id_P
Order by Persons.LastName