SQL 高级(2)
来源:互联网 发布:mac安装win10不用u盘 编辑:程序博客网 时间:2024/05/17 03:08
SQL 高级(2)
SQL INNER JOIN 关键字
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法
SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:INNER JOIN 与 JOIN 是相同的。
原始的表 (用在例子中的):
"Persons" 表:
"Persons" 表:
内连接(INNER JOIN)实例
现在,我们希望列出所有人的定购。您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:
INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。
SQL LEFT JOIN 关键字
SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。LEFT JOIN 关键字语法
SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P LastName FirstName Address City 1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing "Orders" 表:
Id_O OrderNo Id_P 177895324467833224561424562153476465
您可以使用下面的 SELECT 语句:
LastName FirstName OrderNo AdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678BushGeorge LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
"Persons" 表:
左连接(LEFT JOIN)实例
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:
SQL RIGHT JOIN 关键字
SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。RIGHT JOIN 关键字语法
SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P LastName FirstName Address City 1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing "Orders" 表:
Id_O OrderNo Id_P 177895324467833224561424562153476465
您可以使用下面的 SELECT 语句:
LastName FirstName OrderNo AdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678 34764 RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
"Persons" 表:
右连接(RIGHT JOIN)实例
现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:
SQL FULL JOIN 关键字
SQL FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。FULL JOIN 关键字语法
SELECT column_name(s)FROM table_name1FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P LastName FirstName Address City 1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing "Orders" 表:
Id_O OrderNo Id_P 177895324467833224561424562153476465
您可以使用下面的 SELECT 语句:
LastName FirstName OrderNo AdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678BushGeorge 34764 FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
"Persons" 表:
全连接(FULL JOIN)实例
现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName结果集:
SQL UNION 和 UNION ALL 操作符
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
下面的例子中使用的原始表:
Employees_China:
Employees_China:
使用 UNION 命令
实例
列出所有在中国和美国的不同的雇员名:SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA结果
UNION ALL
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。SQL Statement 1UNION ALLSQL Statement 2
使用 UNION ALL 命令
实例:
列出在中国和美国的所有的雇员:SELECT E_Name FROM Employees_ChinaUNION ALLSELECT E_Name FROM Employees_USA结果
4 0
- SQL高级(2)
- SQL 高级(2)
- sql高级优化(2)
- 高级SQL 2
- SQL 高级知识点 2
- SQL高级(1)
- SQL高级(三)
- SQL高级(1)
- SQL 高级(3)
- SQL 高级(4)
- SQL 高级(5)
- SQL 高级(6)
- SQL高级查询技巧2
- SQL 高级查询 (转载)
- sql高级优化(1)
- SQL 高级(8) 数据类型
- SQL 高级(9) 函数
- SQL 高级(10) 函数
- 最容易理解的划分数算法
- 编程之美学习心得 二 (未完待续)
- C语言中char int转换问题
- HBase的设计优化
- 解决空链接的方法
- SQL 高级(2)
- 【docker】fig开源项目
- NC 简易仿真
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path解决办法
- C#设置Excel单元格格式
- 模态对话框和非模态对话框的那点事
- POJ 3468——A Simple Problem with Integers(线段树 成端增减,区间求和)
- Ubuntu wireless network connection in command line
- Add Two Numbers