`
zhyt710
  • 浏览: 206003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

谈谈sql连接语句查询--join

阅读更多

首先给出两张测试表

a(aid int, adata varchar(20))            b(bid int, bdata varchar(20))

 

1.join 与 inner join

执行如下语句:

select * from a join b on a.aid = b.bid;

我们会得到如下的结果:

       AID ADATA                                           BID BDATA
---------- ---------------------------------------- ---------- ----------------------------------------
         1   a1                                                       1        b1
         2   a2                                                       2        b2

我们在执行:select * from a inner join b on a.aid = b.bid;

这时会发现执行的结果和上面一样,于是我在这里认为,单写一个join的语句,默认使用inner形式连接查询。这时我也会想到用标准的多表查询去实现,如:select * from a, b where a.aid = b.bid。

上面这些都是在oracle和mysql中测试过的,当然下面所提到的也会做同样的测试。

 

2.left join 与 left outer join

执行如下语句:

select * from a left join b on a.aid = b.bid;

得到的结果如下:

       AID ADATA                                           BID BDATA
---------- ---------------------------------------- ---------- ----------------------------------------
         1   a1                                                       1     b1
         2   a2                                                       2     b2
         3   a3
我们在执行:select * from a left outer join b on a.aid = b.bid;

会发现得到了和不加outer关键字同样的结果。于是认为left outer join简写为left join。

可以尝试一下把上面的outer变成inner。可一执行,就会发现,你的语法错误,oracle,和mysql都会提示你。对应这两张表,情况确实会这样。

 

3. right join 与 right outer join

right join的情况类似,如执行:select * from a right join b on a.aid = b.bid; 结果如下

       AID ADATA                                           BID BDATA
---------- ---------------------------------------- ---------- ----------------------------------------
         1    a1                                                      1     b1
         2    a2                                                      2     b2
                                                                         4     b4

而且也默认为right outer join 的简写是 right join

 

总结:1)inner jion 是内联接,会返回同时符合条件的两个表的记录。

         2)outer join 是外连接,会返回left(right后面表)前面表的所有记录,若(前面)后面表没有符合的相应记录,则显示为NULL。

分享到:
评论

相关推荐

    T-SQL语句大全

    在本压缩包"**T-SQL语句大全**"中,你将找到一系列关于T-SQL增删改查、约束以及示例代码,这些都是理解和掌握SQL Server数据库操作的关键。 首先,让我们深入了解一下T-SQL中的“增删改查”(CRUD)操作: 1. **...

    最易入门SQL语句教程

    综上所述,这个"最易入门SQL语句教程"将引导你走过SQL的基础,包括SELECT查询、条件过滤(IN和LIKE)、以及连接操作。通过学习并实践这些基础知识,你将具备处理和分析数据库数据的基本能力。阅读提供的PDF教程,你...

    db2常见错误类型及优化SQL语句

    接下来,我们来谈谈SQL语句的优化。优化SQL是提升数据库性能的关键,以下是一些常见策略: 1. **索引优化**:合理创建和使用索引可以大大提高查询速度。针对频繁查询的列创建唯一或非唯一索引,避免在where子句中...

    sql高级查询之BBS数据库上机

    通过内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)或全连接(FULL OUTER JOIN),我们可以将这些表中的信息整合在一起。例如,想获取所有用户的帖子及其相关的回复,可以使用如下SQL语句: ```...

    used sql

    - **存储过程**:存储过程是一组预先编译的SQL语句,可以作为一个单元执行,提高了效率并降低了网络流量。它们也可以包含流程控制语句,实现更复杂的功能。 - **事务 (Transaction)**:在SQL中,事务是一系列操作的...

    本篇文章所述的所有sql代码,有需要可以直接拿走

    首先,我们来谈谈SQL语句的基础,即SELECT语句。这是SQL中最常用的部分,用于从数据库中检索数据。例如,`SELECT * FROM table_name`会返回表table_name中的所有记录。如果只需要特定列,可以指定列名,如`SELECT ...

    学习小组作业——SQL单表简单练习2

    这里我们将深入探讨SQL在单表查询中的应用,包括选择、排序、分组和连接等基本操作。 首先,SQL的基础操作之一是**选择查询**(SELECT语句)。通过SELECT关键字,我们可以从数据库中选取需要的列。例如,如果你有一...

    OracleSQL优化初步

    8. **SQL语句改写**:有时候,通过修改SQL的结构,如避免子查询、减少JOIN操作,或者使用集函数替代子查询,可以得到更好的执行效果。 9. **监控和调优工具**:Oracle提供了一系列工具,如V$视图、ASH(Active ...

    数据库面试题

    - 谈谈MySQL的慢查询日志和如何优化SQL语句。 4. **SQL Server面试题** - SQL Server中的T-SQL与Oracle的PL/SQL有何异同? - 什么是SQL Server的聚集索引和非聚集索引?它们在查询性能上的影响是什么? - 如何...

    简单谈谈MySQL优化利器-慢查询

    对于复杂查询,应重点关注其执行计划,考虑是否可以优化表的索引,或者重构SQL语句,比如避免全表扫描,减少JOIN操作,或者使用子查询替换嵌套循环。 此外,注意SQL语句的执行模式,例如`SQL_NO_CACHE`会阻止查询...

    Oracle创建新用户

    接下来,我们来谈谈SQL查询。在Oracle中,SQL查询用于检索、插入、更新和删除数据。例如,查询所有用户信息的SQL语句是: ```sql SELECT * FROM dba_users WHERE username = 'newuser'; ``` 这将返回新用户`new...

    14 mybatis转钱和查询余额(优化后)

    它将SQL语句与Java代码解耦,提供了灵活的数据库操作方式。在这个“14 mybatis转钱和查询余额(优化后)”的主题中,我们主要探讨的是如何在MyBatis中进行资金转账操作以及优化查询余额的性能。 首先,转账操作通常...

    SQL sever 实训

    --查询Course表的前10行 SELECT TOP 10 * FROM Course GO --查询Course表的前10%行 USE Xk GO SELECT TOP 10 PERCENT * FROM Course GO ㄚt 扚 ? ? h2=C蚅0! 17240671-13.3实训.sql [?灜? sql ?`?-2018.4.18 USE...

    SQL2008教程

    优化SQL语句是为了提高查询性能,减少资源消耗。这通常涉及查询计划的改进,比如避免全表扫描,利用索引,减少JOIN操作,以及优化子查询等。SQL2008提供了查询分析器和性能监视工具,帮助开发者诊断和改进性能问题。...

    java实现两个表的级联查询

    要进行两个表的级联查询,你需要先建立到数据库的连接,然后创建Statement或PreparedStatement对象来执行SQL语句。例如,如果你有两个表`students`和`classes`,其中`students`表有`class_id`字段关联`classes`表的`...

    case 嵌套查询与连接查询你需要懂得

    在SQL开发中,Case语句、子查询和连接查询是不可或缺的查询技巧。下面将详细介绍这些概念以及如何在实际操作中应用它们。 首先,Case语句是一种条件判断语句,它允许我们在SQL查询中根据不同的条件返回不同的值。在...

    数据库学习经验总结集锦

    同时,别忘了学习JOIN操作,用于连接不同表中的数据,以及子查询和存储过程,这些是提高查询效率和代码复用的关键。 接下来,我们转向Oracle数据库。Oracle是世界上最广泛使用的数据库系统之一,它支持复杂的企业级...

    ABAP面试大全

    - 使用事务安全的SQL语句。 **2.3 与表相关** - **2.3.1 MM模块有哪些常用表格** - EKKO (采购订单) - EKPO (采购订单项目) - MSEG (物料移动) - **2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些表?*...

    海量数据库的查询优化及分页算法方案 - CSDNBlog

    2. **查询语句优化**:编写高效的SQL语句是优化的关键。避免全表扫描,尽量使用WHERE子句限制查询范围,避免在JOIN条件中使用非索引字段,以及合理使用GROUP BY和HAVING子句。 3. **数据库设计**:良好的数据库设计...

Global site tag (gtag.js) - Google Analytics