oracle和sqlserver的差异
来源:互联网 发布:淘宝店名 编辑:程序博客网 时间:2024/04/28 18:32
oracle和sqlserver的差异
一:子查询
1:别名
A:oracle
Oracle不要求强制在结果集后添加别名,
但添加别名不支持 as mm形式
代码如:
select count(*) from (select * from a)
或者select count(*) from (select * from a) mm
对结果集进行总数计算
B:
sqlserver要求强制在结果集后添加别名,别名形势可以为as a
或者 a
代码如下
select count(*)
from (select * from a) mm
或者
select count(*)
from (select * from a) as mm
2:order by
A:oracle
oracle中支持在子查询中使用order by
B:Mssql
Mssql中不支持在子查询中使用order by
如果使用会报如下错误:
服务器: 消息 1033,级别 15,状态 1,行 5
除非同时指定了 TOP,否则 ORDER BY 子句在视图、
内嵌函数、派生表和子查询中无效。
3:group by
A:oracle
oracle支持在子查询中使用group by
而且即使在子句中错误使用group by,并不影响子查询的使用
和正确性。
如下代码
select count(*) from
(
select * from a group by name
) mm
这个sql语句,如果单独执行里面的子句
select * from a by name
分析器会报错。
错误信息:
ORA-00979:不是GROUP BY表达式
如果执行整个sql语句,则正确执行。
我认为此处oracle内部对上述语句做了调整,调整结果:
select count(*) from
(
select name
from a group by name
) mm
B:Mssql
Mssq也支持在子查询中使用group by
如果在子句中错误使用group by,整个子查询也会报错
如下代码
select count(*) from
(
select *
from a group by name
) mm
执行整个语句和执行select * from a group by name
报的错误一致,错误如下:
服务器: 消息 8120,级别 16,状态 1,行 1
列 'name' 在选择列表中无效,因为该列既不包含在聚合函数中,
也不包含在 GROUP BY 子句中。
此处,Mssql和oracle相比,智能性不足的特点暴露无疑,不过
倒也可以纠正程序员的粗心,Mssql这帮开发者估计开发的时候都
没有想到这个无心插柳的疗效。
- oracle和sqlserver的差异
- CTE在Oracle和Sqlserver中使用的差异
- MySQL、SqlServer、Oracle数据库之间的差异
- SQLserver和Oracle在执行语句方面的几点差异
- sqlserver和oracle中对datetime进行条件查询的一点差异
- PG和Oracle的差异
- Oracle与SqlServer语法差异
- sqlserver oracle DB2 sql差异
- sqlserver oracle DB2 sql差异
- SqlServer与Oracle语法差异
- Oracle SQLServer MySQL数据库之间的语法差异
- oracle latch 和 lock的差异
- SqlServer compact 与sqlserver的差异
- Oracle与SQLServer选型三个小差异
- SQLServer和Oracle的区别
- MySQL和Oracle差异
- Oracle与SQLServer在数据备份与恢复上的差异
- 调用sql语句实现SqlServer的备份和还原,包括完整备份和差异备份
- 10大原理
- (整理)常用面向对象术语中英文对照
- 如何评价项目代理的业务水平?开发者挖掘量——CSDN外包实践(54)
- 第九章 OCP:The Open-Closed Principle(开闭原则)
- 远程线程插入
- oracle和sqlserver的差异
- 拳打脚踢方显英雄本色
- Windows Vista操作系统安全体系概览
- Python Is Not Java
- 创新谈-邹建
- Linux 常用命令
- 测试用例设计方法
- 远程线程插入
- 魔方