下载APP 编程狮,随时随地学编程
返回 首页

SQL 教程

SQL Join连接

SQL 连接(Joins)


 SQL join 用于把来自两个或多个表的行结合起来。


SQL JOIN


 SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

 简单地说,就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上。

 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。

 让我们看看选自 "Orders" 表的数据:

OrderID CustomerID OrderDate
10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

 然后,看看选自 "Customers" 表的数据:

CustomerID CustomerName ContactName Country
1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

 请注意,"Orders" 表中的 "CustomerID" 列指向 "Customers" 表中的客户。上面这两个表是通过 "CustomerID" 列联系起来的。

 然后,如果我们运行下面的 SQL 语句(包含 INNER JOIN):

实例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

 运行结果如下所示:

OrderID CustomerName OrderDate
10308 Ana Trujillo Emparedados y helados 1996-09-18


 值得注意的是,连接是在WHERE子句中执行的。

 可以使用几个操作符连接表,例如=、<、>、<=、>=、!=、BETWEEN、LIKE、 和NOT。


不同的 SQL JOIN


 在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:

  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行
  • SELF JOIN:用于将表连接到自己,就好像该表是两个表一样,临时重命名了SQL语句中的至少一个表
  • CARTESIAN JOIN:从两个或多个连接表返回记录集的笛卡儿积 


目录

SQL 教程

开始学习SQL
SQL 简介
SQL RDBMS 概念
SQL 语法
SQL Select(选择) 语法
SQL SELECT DISTINCT(选择不同) 语法
SQL WHERE Clause(查询子句)
SQL AND, OR and NOT(与,或不是运算符)
SQL ORDER BY Keyword(按关键字排序)
SQL INSERT INTO 语句(在表中插入)
SQL NULL Values(空值)
SQL UPDATE 语句(更新表中的记录)
SQL Delete 语句(删除表中的记录)
SQL 运算符
SQL 表达式
SQL 选择数据库 USE语句

SQL 高级教程

SQL SELECT TOP, LIMIT, ROWNUM
SQL LIKE 运算符
SQL Wildcards 通配符
SQL IN 运算符
SQL BETWEEN运算符
SQL 通用数据类型
SQL 语句快速参考
SQL Join连接
SQL INNER JOIN 关键字(内部连接)
SQL 左连接 LEFT JOIN 关键字
SQL右连接 RIGHT JOIN 关键字
SQL FULL OUTER JOIN 关键字(完整外部连接)
SQL自连接 Self JOIN
SQL UNION 运算符
SQL SELECT INTO 语句
SQL INSERT INTO SELECT 语句
SQL 撤销索引、表以及数据库
SQL CREATE DATABASE 语句
SQL CREATE TABLE 语句
SQL ALTER TABLE 语句
SQL AUTO INCREMENT 字段
SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW 语句
SQL Server 和 MySQL 中的 Date 函数
SQL NULL 值 – IS NULL 和 IS NOT NULL

SQL 进阶

SQL Aliases 别名
SQL 约束
SQL NOT NULL 约束
SQL UNIQUE 约束
SQL PRIMARY KEY 约束
SQL FOREIGN KEY 约束
SQL DEFAULT 约束
SQL CHECK 约束
SQL JOIN 连接
SQL UNION 子句
SQL 克隆数据表
SQL 索引
SQL 子查询
SQL ALTER TABLE 命令
SQL TRUNCATE TABLE 命令
SQL 处理重复数据
SQL 使用视图
SQL 注入
SQL HAVING 子句
SQL 事务
SQL 使用序列
SQL 通配符
SQL 临时表
SQL MS Access、MySQL 和 SQL Server 数据类型

SQL 函数

SQL 函数
SQL MAX() 函数
SQL MIN() 函数
SQL COUNT() 函数
SQL AVG() 函数
SQL SUM() 函数
SQL 日期函数
SQL FIELD()函数
SQL FIRST() 函数
SQL LAST() 函数
SQL GROUP BY 语句
SQL HAVING 子句
SQL 字母大小写转换函数UPPER()、UCASE()、LOWER()和LCASE()
SQL UPPER()函数
SQL LOWER()函数
SQL UCASE() 函数
SQL LCASE() 函数
SQL MID() 函数
SQL LEN() 函数
SQL ROUND() 函数
SQL NOW() 函数
SQL FORMAT() 函数
SQL SQRT() 函数
SQL RAND() 函数
SQL CONCAT() 函数
SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
SQL REPLACE()字符串替换函数
SQL TRIM()函数去除字符串头尾空格
SQL 主机
SQL 总结

实例/测验

SQL 测验

拓展阅读

详尽的SQL语句大全分类整理(打包下载)
详细实例全面解析SQL存储过程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }