赞
踩
Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准,采用完全开放策略,提供高可用性和高伸缩性的簇的解决方案。 Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。Oracle产品采用标准SQL,与 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。
SQL Server 具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的 选择之一。
Oracle:主流的大型数据库,用于中大型网站开发,商业收费
SQL Server:一般做中小型数据库,用于中小型网站,以及个人使用 ,商业收费
Mysql:一般做中小型数据库,用于中小型网站,以及个人使用,开源免费
Oracle:安装难度中等,安装包比较大,占内存较多,图形界面得借助第三方工具。
Sql Server:安装难度较大,出错要删除注册码,还不行就得重装系统,安装包也比较大,占内存中等,有完整的图形界面。
Mysql:安装难度易,安装包小,占内存较小,图形界面得借助第三方工具
Oracle
-- 读取前10条 select * from table1 where rownum<=10; -- 读取后10条 select * from table1 where rownum<=10 order by id desc; --取出第三条到第六条数据(效率不高) select * from (select * from table1 where rownum<=6) minus (select * from table1 where rownum<3); --或者下面这个 select * from (select * from (select rownum rn ,a.* from table1 a) where rn>=3) where rn<=6;
SQL Server
-- 读取前10条 select top (10) * from table1 where 1=1; -- 读取后10条 select top (10) * from table1 order by id desc; -- 在SQL Server里面,如何读取按照某个排序,第3到6这四个记录 select top 4 * from table1 where id not in(select top 2 id from table1);
MySql
-- 读取前10条 select * from table1 where 1=1 limit 10; -- 读取第5到第10条 select * from tb_email where toname='caixiangyu' limit 5,10;
6、字符串拼接
Sqlserver | + |
Mysql | concat() |
Oracle | || |
7、空值处理数
Sqlserver | isnull() |
Mysql | ifnull() 注意:mysql也有isnull()函数,但意义不一样 select a.mobile,isnull(a.mobile) ,ifnull(a. mobile,'空') from ud_connect_new a; |
Oracle | Nvl() |
8、获取系统时间
Sqlserver | getdate() |
Mysql | now() |
Oracle | sysdate |
9、日期格式化(以常用的yyyymmdd格式为例)
Sqlserver | convert(varchar(8),getdate(),112) |
Mysql | date_format(xcs_received_date,'%Y%m%d') |
Oracle | to_char(sysdate,'yyyymmdd') |
10、检查是否有表再删除
Sqlserver | IF OBJECT_ID('xxx') IS NOT NULL 需要用到系统表(dbo.sysobjects )来判断 |
Mysql | drop table if exists tablename |
Oracle | select count(1) from user_tables where table_name = 'xxx' |
11、日期增加一个时间间隔
Sqlserver | SELECT DATEADD(month, -1, getdate()) |
Mysql | select date_sub(now(),interval 1 month) |
Oracle | select add_months(sysdate,1) from dual;
|
12、查询部分记录
Sqlserver | top关键字 |
Mysql | limit |
Oracle | 不支持mysql中limit功能,但可以通过rownum来限制返回的结果集的行数 |
13、Rollup()
Sqlserver | group by with rollup(xx)
|
Mysql | group by with rollup(xx) --mysql这边不能带order by 语句 |
Oracle | group by rollup(xx) --区别于sqlserver及mysql没有with |
14、定义变量
Sqlserver | Begin
DECLARE @count int SET @count=123 Select @count
end
|
Mysql | set @num1=(select max(rank) From tmp_ud_test where is_member=1)/3; set @num2=(select max(rank) From tmp_ud_test where is_member=1)/3*2; set @num3=(select max(rank) From tmp_ud_test where is_member=1)/3*3;
update tmp_ud_test a set type= case when a.rank<=@num1 then 1 when @num1<a.rank and a.rank<=@num2 then 2 when @num2<a.rank and a.rank<=@num3 then 3 end where a.is_member=1; |
Oracle | declare count number := 20; currtime date := sysdate;
begin update xxx set aa= count ,bb= currtime; end;
|
Sqlserver | create table tb(id int identity(1,1) primary key ) |
Mysql | create table tb(id int auto increment primary key ) |
Oracle | ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 例:使用序列自动增长: |
16、大体上讲,Oracle的数字类型更加简单,大部分情况直接设置number类型就行。而不需要像mysql及sqlserver设置个种数值类型
17、Oracle对子查询的支持非常好。而Mysql中的子查询效率就非常低
18、提交方式
Sqlserver | 默认是自动提交 |
Mysql | mysql默认是自动提交 |
Oracle | 默认不自动提交,需要用户手动提交。Sql脚本中经常用到commit; |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。