1、标准SQL标准SQL一、SQL INNER JOIN在表中存在至少一个匹配时,INNER JOIN 关键字返回行。1、INNER JOIN语法SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:INNER JOIN 与 JOIN 是相同的。2、原始的表 (用在例子中的)Persons 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGe
2、orgeFifth AvenueNew York3CarterThomasChangan StreetBeijingOrders 表:Id_OOrderNoId_P1778953244678332245614245621534764653、内连接(INNER JOIN)实例现在,我们希望列出所有人的定购。您可以使用下面的 SELECT 语句:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Perso
3、ns.LastName结果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 Persons 中的行在 Orders 中没有匹配,就不会列出这些行。二、SQL LEFT JOINLEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。1、LEFT JOIN语法SELECT column_name(s)FROM table_na
4、me1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。2、原始的表 (用在例子中的)Persons 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingOrders 表:Id_OOrderNoId_P177895324
5、4678332245614245621534764653、左连接(LEFT JOIN)实例现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。您可以使用下面的 SELECT 语句:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas
6、77895CarterThomas44678BushGeorgeLEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。三、SQL RIGHT JOINRIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。1、RIGHT JOIN语法SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_nam
7、e注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。2、原始的表 (用在例子中的)Persons 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingOrders 表:Id_OOrderNoId_P1778953244678332245614245621534764653、右连接(RIGHT JOIN)实例现在,我们希望列出所有的定单,以及定购它们的人 -
8、如果有的话。您可以使用下面的 SELECT 语句:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas4467834764RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左
9、表 (Persons) 中没有匹配的行。四、 SQL UNIONUNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。1、SQL UNION 语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。2、SQL UNION ALL 语法SE
10、LECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。3、例子中使用的原始表Employees_China:E_IDE_Name01Zhang, Hua02Wang, Wei03Carter, Thomas04Yang, MingEmployees_USA:E_IDE_Name01Adams, John02Bush, George03Carter, Thomas04Gates, Bill3、使
11、用 UNION 命令实例列出所有在中国和美国的不同的雇员名:SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA结果E_NameZhang, HuaWang, WeiCarter, ThomasYang, MingAdams, JohnBush, GeorgeGates, Bill注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。五、 UNION ALLUNION ALL 命令和 UNION 命令几乎是等
12、效的,不过 UNION ALL 命令会列出所有的值。SQL Statement 1UNION ALLSQL Statement 2使用 UNION ALL 命令实例列出在中国和美国的所有的雇员:SELECT E_Name FROM Employees_ChinaUNION ALLSELECT E_Name FROM Employees_USA结果E_NameZhang, HuaWang, WeiCarter, ThomasYang, MingAdams, JohnBush, GeorgeCarter, ThomasGates, Bill六、SELECT INTOSELECT INTO 语句从一
13、个表中选取数据,然后把数据插入另一个表中。SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。1、SQL SELECT INTO 语法您可以把所有的列插入新表:SELECT *INTO new_table_name IN externaldatabase FROM old_tablename或者只把希望的列插入新表:SELECT column_name(s)INTO new_table_name IN externaldatabase FROM old_tablename2、SQL SELECT INTO 实例 - 制作备份复件下面的例子会制作 Persons 表的备份复
14、件:SELECT *INTO Persons_backupFROM PersonsIN 子句可用于向另一个数据库中拷贝表:SELECT *INTO Persons IN Backup.mdbFROM Persons如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:SELECT LastName,FirstNameINTO Persons_backupFROM Persons3、SQL SELECT INTO 实例 - 带有 WHERE 子句我们也可以添加 WHERE 子句。下面的例子通过从 Persons 表中提取居住在 Beijing 的人的信息,创建了一个带有两个列的名为 Persons_backup 的表:SELECT LastNam
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1