首先给出两张测试表
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增删改查、约束以及示例代码,这些都是理解和掌握SQL Server数据库操作的关键。 首先,让我们深入了解一下T-SQL中的“增删改查”(CRUD)操作: 1. **...
综上所述,这个"最易入门SQL语句教程"将引导你走过SQL的基础,包括SELECT查询、条件过滤(IN和LIKE)、以及连接操作。通过学习并实践这些基础知识,你将具备处理和分析数据库数据的基本能力。阅读提供的PDF教程,你...
接下来,我们来谈谈SQL语句的优化。优化SQL是提升数据库性能的关键,以下是一些常见策略: 1. **索引优化**:合理创建和使用索引可以大大提高查询速度。针对频繁查询的列创建唯一或非唯一索引,避免在where子句中...
通过内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)或全连接(FULL OUTER JOIN),我们可以将这些表中的信息整合在一起。例如,想获取所有用户的帖子及其相关的回复,可以使用如下SQL语句: ```...
- **存储过程**:存储过程是一组预先编译的SQL语句,可以作为一个单元执行,提高了效率并降低了网络流量。它们也可以包含流程控制语句,实现更复杂的功能。 - **事务 (Transaction)**:在SQL中,事务是一系列操作的...
首先,我们来谈谈SQL语句的基础,即SELECT语句。这是SQL中最常用的部分,用于从数据库中检索数据。例如,`SELECT * FROM table_name`会返回表table_name中的所有记录。如果只需要特定列,可以指定列名,如`SELECT ...
这里我们将深入探讨SQL在单表查询中的应用,包括选择、排序、分组和连接等基本操作。 首先,SQL的基础操作之一是**选择查询**(SELECT语句)。通过SELECT关键字,我们可以从数据库中选取需要的列。例如,如果你有一...
8. **SQL语句改写**:有时候,通过修改SQL的结构,如避免子查询、减少JOIN操作,或者使用集函数替代子查询,可以得到更好的执行效果。 9. **监控和调优工具**:Oracle提供了一系列工具,如V$视图、ASH(Active ...
- 谈谈MySQL的慢查询日志和如何优化SQL语句。 4. **SQL Server面试题** - SQL Server中的T-SQL与Oracle的PL/SQL有何异同? - 什么是SQL Server的聚集索引和非聚集索引?它们在查询性能上的影响是什么? - 如何...
对于复杂查询,应重点关注其执行计划,考虑是否可以优化表的索引,或者重构SQL语句,比如避免全表扫描,减少JOIN操作,或者使用子查询替换嵌套循环。 此外,注意SQL语句的执行模式,例如`SQL_NO_CACHE`会阻止查询...
接下来,我们来谈谈SQL查询。在Oracle中,SQL查询用于检索、插入、更新和删除数据。例如,查询所有用户信息的SQL语句是: ```sql SELECT * FROM dba_users WHERE username = 'newuser'; ``` 这将返回新用户`new...
它将SQL语句与Java代码解耦,提供了灵活的数据库操作方式。在这个“14 mybatis转钱和查询余额(优化后)”的主题中,我们主要探讨的是如何在MyBatis中进行资金转账操作以及优化查询余额的性能。 首先,转账操作通常...
--查询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...
优化SQL语句是为了提高查询性能,减少资源消耗。这通常涉及查询计划的改进,比如避免全表扫描,利用索引,减少JOIN操作,以及优化子查询等。SQL2008提供了查询分析器和性能监视工具,帮助开发者诊断和改进性能问题。...
要进行两个表的级联查询,你需要先建立到数据库的连接,然后创建Statement或PreparedStatement对象来执行SQL语句。例如,如果你有两个表`students`和`classes`,其中`students`表有`class_id`字段关联`classes`表的`...
在SQL开发中,Case语句、子查询和连接查询是不可或缺的查询技巧。下面将详细介绍这些概念以及如何在实际操作中应用它们。 首先,Case语句是一种条件判断语句,它允许我们在SQL查询中根据不同的条件返回不同的值。在...
同时,别忘了学习JOIN操作,用于连接不同表中的数据,以及子查询和存储过程,这些是提高查询效率和代码复用的关键。 接下来,我们转向Oracle数据库。Oracle是世界上最广泛使用的数据库系统之一,它支持复杂的企业级...
- 使用事务安全的SQL语句。 **2.3 与表相关** - **2.3.1 MM模块有哪些常用表格** - EKKO (采购订单) - EKPO (采购订单项目) - MSEG (物料移动) - **2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些表?*...
2. **查询语句优化**:编写高效的SQL语句是优化的关键。避免全表扫描,尽量使用WHERE子句限制查询范围,避免在JOIN条件中使用非索引字段,以及合理使用GROUP BY和HAVING子句。 3. **数据库设计**:良好的数据库设计...