`
frank1998819
  • 浏览: 734854 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

SQL join 学习(一) (转)

    博客分类:
  • SQL
SQL 
阅读更多

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

Join 和 Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

请看 "Persons" 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。

接下来请看 "Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。

请留意,"Id_P" 列把上面的两个表联系了起来。

引用两个表

我们可以通过引用两个表的方式,从两个表中获取数据:

谁订购了产品,并且他们订购了什么产品?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - 使用 Join

除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。

如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

结果集:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
分享到:
评论

相关推荐

    SQL join 完全用法

    SQL join 完全用法 SQL join 完全用法 学习sql join

    sqljoin示例

    sqljoin示例,包含左联右联内联以及外联等连接方式是学习SQL必不可少的知识

    SQL学习七-JOIN中的SQL

    SQL学习七-JOIN中的SQL

    Sql语言学习全套-给力推荐

    Sql语言学习全套-给力推荐 Sql语言学习全套-给力推荐 alterfunction.sql alterproc_alterfunc.sql createtable.sql CURSOR.sql cursor_declare_open.sql functions.sql insert work.sql insertdualdata.sql...

    SQL学习八-LEFT JOIN && RIGHT JOIN

    SQL学习八-LEFT JOIN && RIGHT JOIN

    sql学习笔记

    sql练习中易错笔记,order by ,group by,distinct,内连接,外连接等,一些mysql和oracle使用的区别:sql4种连接 两个表中有相同的列,根据共有的列值匹配行 left join左外连接,不管左表是否在右表中有匹配行,都...

    图解SQL的Join

    对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很 多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子 有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为...

    sql学习 Merge Sort Join优化第4式(保证PGA尺寸).sql

    sql学习 Merge Sort Join优化第4式(保证PGA尺寸).sql

    sql学习 Merge Sort Join优化第2式(连接条件索引消除排序).sql

    sql学习 Merge Sort Join优化第2式(连接条件索引消除排序).sql

    sql学习 Merge Sort Join优化第1式(两表限制条件有索引).sql

    sql学习 Merge Sort Join优化第1式(两表限制条件有索引).sql

    简单学习SQL的各种连接Join

    最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接。 假设我们有两张表,Table A是左边的表,Table B是右边的表。 id ...

    sql学习 Merge Sort Join优化第3式(避免取多余列致排序尺寸过大).sql

    sql学习 Merge Sort Join优化第3式(避免取多余列致排序尺寸过大).sql

    SQL的Join使用图解教程

    对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚

    SQL语言学习循序渐进.rar

    SQL语言学习循序渐进SQL循序渐进(1)-------介绍SQL SQL循序渐进(2)-------表的基础知识 SQL循序渐进(3)-------数据检索 SQL循序渐进(4)-------创建表 SQL循序渐进(5)-------插入数据到表 SQL循序渐进(6)...

    sql语句学习 多表连接查询

    自己学习的笔记--查询计算机系CS男学生学号、姓名和考试成绩 SELECT A.Sno,A.Sname,B.degree FROM student A,sc B WHERE A.Sdept = 'CS' AND A.Ssex = '男' AND A.Sno = B.sno SELECT A.Sno,A.Sname,B.degree FROM ...

    MySQL中的JOIN详解及sql实战

    本文适合对MySQL数据库和JOIN操作感兴趣的读者进行学习和参考。 使用人群:MySQL开发人员、数据库管理员、对JOIN操作和表关联有需求的读者 用途:帮助读者了解MySQL中的JOIN操作,掌握LEFT JOIN、ON条件过滤和笛卡尔...

    收获不止SQL优化

    11.3.1 一次Nested Loops Join的优化全过程 318 11.3.2 一次Hash Join 的 优化全过程 320 11.3.3 一次 Merge Sort Join 的优化全过程 324 11.3.4 一次统计信息收集不准确引发的NL性能瓶颈 329 11.4 本章习题、...

    SQL语言学习循序渐进

    SQL循序渐进(17)------JOIN子句 SQL循序渐进(18)------索引 SQL循序渐进(19)------DISTINCT和排除复制 SQL循序渐进(20)------Aliases 、In以及子查询 SQL循序渐进(21)------更多的子查询 SQL循序渐进(22...

    2009达内SQL学习笔记

    SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号...

    LINQ to SQL在行动:Join和Group-学习在.NET程序中编写数据访问功能的方法.pdf

    LINQ to SQL在行动:Join和Group-学习在.NET程序中编写数据访问功能的方法.pdf

Global site tag (gtag.js) - Google Analytics