本文是卢飞大哥的学习心得.
不同数据库中如何使用SQL来控制返回记录的条数以及常见错误分析
在项目实现中可能需要返回满足条件的几条记录而不是全部记录,如返回一个班的第一名,第二名,第三名学生的记录信息,返回该月所卖出的图书中销量排行前三的图书名等等,当然实现这种功能有很多的方法,这里我近描述用简单的SQL和数据库的属性或函数来实现该功能。(以下示例仅选取五条记录)
1. MySql
SELECT field1, field2, field3 [,……] FROM Table_Name limit 5
2. Oracle
SELECT field1, field2, field3 [,……] FROM Table_Name WHERE ROWNUM<= 5
3. SQL Server
SELECT TOP(5) FROM Table_Name
这里的语句都比较简单,一看就明白, 但是在数据库中是如何进行筛选记录的呢? 这里我就是用Oracle的语句来讲述,仅仅是个人理解,如果有什么不对请留言告知,一切以学习为主.
言归正传,在Oracle中执行SELECT field1, field2, field3 [,……] FROM Table_Name WHERE ROWNUM<= 5主要分以下几步来实现:
1. Oracle 执行SQL从数据库中找出所有的满足条件的记录。
2. 获取第一条记录,并且设置ROWNUM的值为1.
3. 判断ROWNUM是否<=5, 如果小于或等于5Oracle返回该记录,如果大于5Oracle就不返回该条记录。
4. Oracle继续获取下一条记录,如果3成功获取了一条记录,则ROUNNUM的值就会加1,并用来标识第二条的记录,否则ROUNNUM保持不变。
5. 继续第3步,一直到找到五条记录或便利完所有的记录是结束。
以上仅仅个人理解,下面我就用一个常见的错误来结束本文。
现在有很多人使用Oracle写的选择记录条数的SQL语句如下, 先不要看后文,不知道你认为下面的两个语句的输出结果是怎么样的,如果在有足够的相应的记录的情况下。
1. SELECT field1, field2, field3 [,……] FROM Table_Name WHERE ROWNUM = 5
2. SELECT field1, field2, field3 [,……] FROM Table_Name WHERE ROWNUM = 1
第一条语句是不会返回任何记录的,因为在Oracle中只会执行上面步骤的1,2,3,5,这样ROWNUM的值将始终为1,始终不可能等于5. 而第2条语句只返回第一条记录,原因也就不需要我来详述了。
4. 当然还有MySql, SQL Server中该类语句的执行我就不细述了,如果有兴趣,你可以在论坛中讨论,当然如果你认为我写的有偏差请留言告知,不胜感谢!
分享到:
相关推荐
SQL语句是数据库操作的核心,它用于查询、插入、更新和删除数据,是任何数据库管理系统中的基础工具。在IT行业中,编写SQL语句是一项必备技能,但手动编写和调试SQL语句可能会耗费大量时间和精力,尤其在处理复杂...
sql语句sql语句sql语句sql语句sql语句
本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...
一篇关于SQL语句比较全面的教程。 SQL语句教程(01) SELECT......................................2 SQL语句教程(02) DISTINCT...................................2 SQL语句教程(03) WHERE...........................
sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明...
在Java编程中,调试SQL语句是开发过程中的常见任务,尤其当面对复杂且冗长的查询时。为了提高效率并使SQL语句更易于理解和分析,格式化SQL语句显得尤为重要。标题提及的"Java打印漂亮的SQL语句(被格式化的SQL语句)...
以下是一些关于SQL语句生成工具及其核心功能的详细解释: 1. **数据库对象浏览**:工具通常提供一个直观的界面,允许用户浏览数据库架构,包括表、视图、存储过程、函数和其他数据库对象。用户可以轻松选择需要操作...
SQL Server 动态 SQL 语句的用法 SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL ...
"hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
PB脚本中SQL语句写法与SQL中语句写法对照 PB脚本中SQL语句写法与SQL中语句写法对照是非常重要的知识点,因为PB脚本和SQL语言在写法和应用中有所不同。本文将对PB脚本中SQL语句写法和SQL中语句写法进行对比和分析。 ...
本文将深入探讨如何在C#中自动生成SQL语句,以提高开发效率并减少手动编写SQL可能导致的错误。 一、Entity Framework与自动SQL生成 1. Entity Framework(EF)是微软提供的一个开源ORM(对象关系映射)框架,它...
V$SQLAREA视图提供了关于SQL语句执行计划的信息,包括磁盘读取次数、执行次数等重要指标。下面两个查询语句展示了如何利用该视图来找出消耗资源较多的SQL语句: - **查询磁盘读取次数较高的SQL语句:** ```sql ...
全面掌握SQL语句 详细的SQL语句介绍 详细的SQL语句介绍 详细的SQL语句介绍 详细的SQL语句介绍
### Oracle监听执行SQL语句详解 #### 一、Oracle监听执行概述 在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听...
这个我是下了别人的 里面有很多的问题 不知道那位高手愿意帮忙
在实际开发中,有时我们需要了解LINQ查询是如何转换为SQL语句的,以便于调试和优化性能。以下将详细介绍几种查看LINQ生成SQL语句的方法。 1. **Debug.WriteLine()** 在使用LINQ查询时,可以利用`Debug.WriteLine()...
SQLTracker是一款专为数据库操作监控设计的工具,它在IT领域中主要用于跟踪和记录SQL语句的执行情况。SQL(Structured Query Language)是用于管理关系数据库的编程语言,包括查询、更新、插入和删除数据等操作。SQL...
### 完成超长SQL语句执行前拆分 #### 概述 在使用Visual Basic (简称VB)进行数据库操作时,可能会遇到因为SQL语句过长而导致无法正常执行的问题。这种情况下,即使该SQL语句可以在SQL Server的查询分析器中成功运行...
在数据库管理系统(如MySQL、Oracle、SQL Server等)中,SQL语句是不可或缺的一部分。 1. SQL基础语法 SQL的基础语法包括SELECT、INSERT、UPDATE、DELETE四大语句,它们分别用于查询、插入、更新和删除数据。 - ...