我正在从https://www.w3schools.com/sql/sql_join_inner.asp练习sql内部连接
INNER JOIN Syntax
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
这是上面的语法。我有两个表格
以下是“订单”表中的选择:
OrderID CustomerID EmployeeID OrderDate ShipperID
10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2
并且有一个客户表也可以检查链接。
如果我想从两个表中获取所有行,只要列之间存在匹配即可。
给出的语法是:
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
情况1:
SELECT Orders.OrderID, Customers.CustomerName
FROM Customers
INNER JOIN Orders ON Orders.CustomerID = Customers.CustomerID;
问题1:如果我这样写的怎么办?我会得到相同的结果吗?
问题2:我怎么知道哪一个是表1和表2?它会基于我的看法吗?
另一件事,我想知道是什么https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner这个SQL尝试它编辑器是基于哪个SQL? oracle 11g?我的sql? ms访问?我很紧张。在我的硬盘我下载了oracle 11g发布2 gui。对初学者来说还可以吗?
对于这个简单的连接,它应该是相同的结果也是性能明智的,因为Oracle的optimizer chooses the join order of tables
优化器仅在简单的FROM子句中选择表的连接顺序。使用JOIN关键字的大多数联接被展平为简单联接,因此优化程序选择其联接顺序。
SQL教程使用Oracle语法展示和解释,所以你很高兴
当不同数据库有不同的语法时,它会通知你,for example:
MySQL: CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) ); SQL Server / Oracle / MS Access: CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );