sql union 语法与实例
sql union允许您结合的结果2个或更多台个人查询。联盟不同,它是由查询是相互独立的子查询从。联盟结合了这些个别选择输出,并列出作为一个单一的输出表中的一部分。
SELECT column1, ... column_n
FROM derived_table
UNION [ALL]
SELECT column1, ... column_n
FROM derived_table
union每个查询的SQL语句必须要有领域的结果相同数量的设置与类似的数据类型。此外,在使用联盟,只有选择不同的值(类似于选择不同的)。
实例一
SELECT Item
FROM Antiques
UNION
SELECT ItemDesired
FROM Orders
在这个例子中,如果一个项目出现两个古董和Orders表,它将出现在您的结果集一次。
实例二
SELECT FirstName, LastName
FROM EmployeeAddressTable
WHERE City IN ('Losantiville','Paris')
UNION SELECT OwnerFirstName,OwnerLastName
FROM AntiqueOwners
WHERE City IN ('Losantiville','Paris','San Diego')
========================
sql join 语句多表查询
到目前为止,我们一直在寻找的查询,检索时间从一个单一的表中的数据。单表查询是有用的,但他们不利用SQL语言的全部功能。 SQL是关系数据库教程查询语言,因此,其最重要的特点之一是它能够从几个不同的检索相关的表的信息。在关系型数据库而言,这一过程被称为连接。该表将被命名为参加在从选择该条的规定与以逗号分隔每个表的名称。在参加由在WHERE子句谓词定义的表之间的关系。谓词可以指任何从联接的表列形式的关系。
例如
SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeAddressTable, EmployeeStatisticsTable
WHERE EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo
前面的例子检索编号,名字,姓氏和雇员的薪水。来自薪酬领域连接表。此SQL语句将返回从EmployeeAddressTable和EmployeeStatisticsTable表的所有行,如果有一个匹配的EmployeeIDNo无论是EmployeeAddressTable和EmployeeStatisticsTable表的价值。
内加入
这是,事实上,在加入最常见的类型。内连接返回从多个表中的所有行加入条件得到满足。必须有一个共同的领域,以两个表匹配的值。一个内部联接不能嵌套在一个左或右加入加入。
SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeAddressTable INNER JOIN EmployeeStatisticsTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo
随着内部联接操作,任何关系比较运算符可以用于ON子句:=,“,”,“=,”=,或“<”。上面的例子返回所有情况下的'雇员ID'的'雇员'表的字段值相匹配'的'EmployeeStatisticsTable'表的EmployeeID'字段。如果在EmployeeAddressTable行并无EmployeeStatisticsTable比赛,这些行会不会列出。
左加入
左加入运算符用于创建一个左外连接,包括从第一个(左边的所有记录的两个表),即使没有匹配的第二记录值。
SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeStatisticsTable LEFT JOIN EmployeeAddressTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo
此SQL语句返回所有从第一个表(EmployeeStatisticsTable)行,即使有第二个表(EmployeeAddressTable)不匹配。如果在EmployeeStatisticsTable行并无EmployeeAddressTable比赛,这些行也将上市。在结果集,他们将显示为。
right join
加入经营者的权利是用来创造一个良好的外部联接,包括所有由第二(右记录两个表),即使没有匹配在第一的记录值。
SELECT EmployeeAddressTable.EmployeeIDNo,
EmployeeAddressTable.FirstName,
EmployeeAddressTable.LastName,
EmployeeStatisticsTable.Salary
FROM EmployeeStatisticsTable RIGHT JOIN EmployeeAddressTable
ON EmployeeAddressTable.EmployeeIDNo = EmployeeStatisticsTable.EmployeeIDNo