Maison > base de données > tutoriel mysql > oracle、mysq、sqlserver的区别

oracle、mysq、sqlserver的区别

WBOY
Libérer: 2016-06-07 15:08:58
original
1450 Les gens l'ont consulté

一、oracle、mysq、sqlserver取结果中几行记录的 区别 http://www.w3school.com.cn/sql/sql_top.asp 原始的表 (用在例子中的): Persons 表: Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3

一、oracle、mysq、sqlserver取结果中几行记录的区别

http://www.w3school.com.cn/sql/sql_top.asp

 

原始的表 (用在例子中的):

Persons 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
4 Obama Barack Pennsylvania Avenue Washington

TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

注释:并非所有的数据库系统都支持 TOP 子句。

SQL Server 的语法:

SELECT TOP number|percent column_name(s)FROM table_name<p></p><h2>SQL TOP 实例</h2><p>现在,我们希望从上面的 "Persons" 表中选取头两条记录。</p><p>我们可以使用下面的 SELECT 语句:</p><pre class="brush:php;toolbar:false">SELECT <code>TOP 2</code> * FROM Persons
Copier après la connexion

结果:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York

SQL TOP PERCENT 实例

现在,我们希望从上面的 "Persons" 表中选取 50% 的记录。

我们可以使用下面的 SELECT 语句:

SELECT <code>TOP 50 PERCENT</code> * FROM Persons
Copier après la connexion

结果:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York

第一种方法:

select top n * from  
(select top m * from tablename order by columnname) a 
order by columnname desc 
Copier après la connexion
这个是用一个 sqlserver中 top比order by 后执行 的原理。
Copier après la connexion

第二种方法:

/*以下示例将返回行号为 50 到 60(含)的行,并以 OrderDate 排序。*/ 
select * 
    from(
        select row_number() over (order by orgid) as rownum from org_info
    ) as wo
where wo.rownumber between 50 and 60
Copier après la connexion



MySQL 语法

SELECT column_name(s)FROM table_nameLIMIT number
Copier après la connexion

例子

SELECT *FROM Persons LIMIT 5
Copier après la connexion

Oracle 语法

SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number
Copier après la connexion

SELECT *
  FROM (SELECT ROWNUM RM, UI.* FROM USER_INFO UI WHERE ROWNUM < 10)
 WHERE RM > 5;
Copier après la connexion

oracle中的rownum 只能用以上符号(<、<=、!=)。

这个中也可以用 继续进行限制,如 最后一个where 条件中变为:RM>5 AND RM<8。那结果就是 取 第6到7条记录了!

例子

SELECT *FROM PersonsWHERE ROWNUM <= 5
Copier après la connexion
 
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
注意 
Copier après la connexion
<span ><strong>1、sqlserver 中SQL的执行顺序。</strong></span>
Copier après la connexion
  1. FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
  2. ON:对VT1应用ON筛选器。只有那些使为真的行才被插入VT2。
  3. OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
  4. WHERE:对VT3应用WHERE筛选器。只有使为true的行才被插入VT4.
  5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
  6. CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
  7. HAVING:对VT6应用HAVING筛选器。只有使为true的组才会被插入VT7.
  8. SELECT:处理SELECT列表,产生VT8.
  9. DISTINCT:将重复的行从VT8中移除,产生VT9.
  10. ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

注意:这里的TOP 在 order by 的后面执行。意思是:sqlserver先进行排序再取top的数据。

2、oracle 中 order by 也是比 rownum先执行。


二、IF ELSE 区别


mysql和oracle的区别

1)、注意elseif区别

在mysql中:

<span>IF <em>search_condition</em> THEN <em>statement_list</em></span>
Copier après la connexion
<span><span>    </span>[ELSEIF <em>search_condition</em> THEN <em>statement_list</em>] ...</span>
Copier après la connexion
<span><span>    </span>[ELSE <em>statement_list</em>]</span>
Copier après la connexion
<span>END IF</span>
Copier après la connexion
2)、在oracle中:

IF 条件1 THEN

...如果条件1为真,则执行这里的语句...

ELSIF 条件2 THEN

...如果条件1为假,但是条件2为真,则执行这里的语句...

ELSE

...如果条件1和条件2都为假,则执行这里的语句...

END IF;











 
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal