--1.数据类型不同。
      --sql server 的数据类型:int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatetime,money,decima,
      --float,bit……
      
      
      --oracle 的数据类型:number(p,s),char,varchar2,Date,LOB
               --注意:insert into table_name values('1','张三','男',date'2012-3-5');---插入字符串日期前加date转换类型
      
--2.获得当前系统时间的函数不同。
      --sql server :getdate()
      
      --oracle:sysdate
            --例如:设定日期格式的函数:to_char(sysdate,'yyy-mm-dd');
--3.在oracle中没有默认约束的说法
      --sql server 中添加默认约束:alter table talbe_name add DF_table_name default('男') for sex;
      
      --oracle 中添加默认值:alter table table_name modify(sex default('男'));

--4.连接变量和字符串的方式不一样
      --sql server 中连接:使用“+”连接,例如:print 'aaaa'+@name;
      
      --oracle  中连接:使用“||”连接,例如:dbms_output.put_line('aaa'||name);---name为变量
 
--5.oracle没有identity自动增长列,而是使用序列实现增长
      --sql server 自动增长:在表的主键列中可直接使用identity(1,1)实现增长
      
      --oracle 使用序列自动增长:
                                 create sequence se_id 
                                 start with 1
                                 increment by 1
      --使用序列实现自动增长:se_id.nextval
--6.条件语句if……else……的语法不同
      --sql server中:
            if 条件
            begin
              …………
            end
            else
            begin
              …………
            end 
      --oracle中:
            if 条件1 then
               …………;
            elsif 条件2 then
               …………;
            else
              …………;
            end if;
            
--7.case语句的语法不同
      --sql server中:
            --select ....case.....(else)....end....语句
            select stuno '学号',case
            when grade>=90 and grade<=100 then '★★★★'
            when grade>=80 and grade<90 then '★★★'
         when grade>=70 and grade<80 then '★★'
         when grade>=60 and grade<70  then '★'
            else '差'
            end as '等级' from score
            go
      --oracle中:
            declare
               nums number:=&nos;--&nos表示提示传入值
            begin
              case nums
                when 100 then
                  dbms_output.put_line('满分也,不错');
                when 90 then
                  dbms_output.put_line('90分页很不错了');
                end case;
            end;
--8.触发器创建语法不同
     --sql server中:
     
         --首先判断触发器是否已经存在
         if exists (select * from sys.sysobjects where name='tr_delete')
    --如果存在先删除
    drop trigger tr_delete
         go
         
        --创建触发器
        create trigger tr_delete
        on bookInfo
        instead of delete
        as
            --定义变量
            declare @bookid int 
            select @bookid=Bookid from deleted---deleted执行删除语句( delete from BookInfo where BookId=1),自动生成的deleted表
            --删除与该图书的相关记录(先删除从表再删除主表)
            delete from borrowinfo where  bookid=@bookid
            delete from backinfo where  bookid=@bookid
            delete from BookInfo where BookId=@bookid
            --判断
            if @@error<>0
            begin
                print '删除失败'
                rollback transaction
            end
            else
            begin
                print '删除成功'
            end
        go
        delete from BookInfo where BookId=1        
         
     --oracle中:
        --创建触发器
        create or replace trigger tri_test
        before insert or update or delete 
        on table_name
        [for each row]---如果要使用 :new /:old 就必须使用行触发器
        declare
             nums varchar2(20);
        begin
          select 'F'||lpad('aa',5,0) into nums from dual;
        end;
     
--9.oracle中的存储过程
            --sql server中存储过程:
            
            --判断存储过程是否已经存在
            if exists(select * from sys.sysobjects where name='proc_name')
     --如果存在先删除
     drop proc proc_name
            go
            
            --创建存储过程语句
            create proc/procedure proc_name
            @参数名1 数据类型 [out/output],
            @参数名2 数据类型 [out/output]
            as
                  …………
            go
            
            --调用存储过程
            --如果有输出参数,则需定义变量(假设@参数2为输出参数)
            declare @变量名 数据类型
            exec proc_name @参数名1='aaa',@参数名2=@变量名 out
            
            
            ---oracle中带游标及循环的存储过程
            
             create or replace procedure proc_selCurrent
             (
                    names varchar2
             )
             as
                    cursor cursor_sel
                    is
                    select DepositSum,cardType,name,state from CurrentAccount where name like '%'||names||'%';
                    dd number;
                    cc number;
                    nn varchar2(20);
                    sta number;
                    begin
                      open cursor_sel;
                           loop
                             fetch cursor_sel into dd,cc,nn,sta;
                             dbms_output.put_line('存款金额:'||dd||'姓名:'||nn);
                           exit when cursor_sel%notfound;
                           end loop;
                      close cursor_sel;
                    end;
                    
              --调用存储过程
              begin
                proc_selCurrent('a');
              end;
                      
--10.创建用户的方式不同
       --sql server中
           --1、创建登陆账号:sa-----123456
                 create Login 登陆名称 with password='登陆密码'
                 
           --修改登陆账户:
                 alter Login 登陆名称 with name='新登录名称' and password='新登录密码'
           --禁用/启用登陆账号
                 alter Login 登录名称 disable(禁用)/enable(启用)
           --删除登陆账号
                 drop Login 登录名称
                 
           --2、创建用户:
            create user 用户名 for/from Login 登陆名称
            
            --修改用户名
            alter user 用户名 with name='新用户名'
            
            --删除用户名
            drop user 用户名
            
            ---授权限
            grant select/update/delete/insert on 表名 to 用户名
              
            
        ---oracle中:
        
            ---创建用户语法:
                  create user 用户名
                  identified by 密码
                  default tablespace users
                  temporary tablespace temp
                  quota 10M on users
                  
                  --修改密码:
                  alter user 用户名 identified by 新密码
                  
                  --授予权限:
                  grant create session to 用户名
                  
                  --删除用户
                  drop user 用户名 cascade;

sql server 与 oracle的区别(转)的更多相关文章

  1. 【转】SQL Server与Oracle的区别

    转自:http://soft.chinabyte.com/database/255/12258255.shtml SQL Server与Oracle的区别 2012-02-10 00:00 中国IT实 ...

  2. 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别

    SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...

  3. SQL Server,MySQL,Oracle三者的区别

    SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...

  4. Oracle与SQL Server等数据库的区别

    Oracle与SQL Server等数据库的区别 在Oracle中提倡使用一个连接 Oracle处理多个并发语句使用一个连接,大大提升系统能支持的并发量 Oracle运行在32为单进程平台上SGA和P ...

  5. SQL SERVER与ORACLE的几点区别

    1.数据类型不同.      sql server 的数据类型 int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatet ...

  6. ASP.NET 连接 SQL Server 和 Oracle 教程

    临近期末,有很多同学都问我怎么关于ASP.NET 连接 SQL Server 和 Oracle 的问题.由于人太多了,我也不能一一去帮忙,就写了这篇博客.希望对大家有用处. 首先,前期准备是要安装数据 ...

  7. 关于sql server远程访问Oracle数据库 OpenQuery查询返回多条数据的问题

    在Sql Server远程访问Oracle 中的数据库表时: 远程语法通常为: select * from OpenQuery(Oracle链接服务器名称,‘查询语句’) eg: select * f ...

  8. Win7 64位下sql server链接oracle的方法

    继上一次mysql同步sql server后,这一次需要将Oracle同步到sql server上来,方案相似,只是在sql server链接oracle的时候费了很多时间. 一.测试环境 本方案实现 ...

  9. sql server 向oracle导入表

    选择相应的数据库,右键,任务,选择导出数据 点击下一步 选择Microsoft OLE DB Provider for Sql Server 选择下一步 目标选择.net Framework data ...

随机推荐

  1. 《单词的减法》state1~state17(第三遍学习记录)

    2016.05.24 state 8 curse/curve dedication 多用于奉献和献身 disastrous disruptive distract state 9 domestic/d ...

  2. 【Unity3D NGUI】----UI尺寸和位置的调整

    1 尺寸与位置 通过UIWidget类获取,该类是所有UI元素的基类 在unity中创建一个sprite,如下图所示 这里面这个sprite的大小受几个属性的影响,首先是属性面板里的Size,对应的U ...

  3. spring boot 尚桂谷学习笔记11 数据访问03 JPA

    整合JPA SpringData 程序数据交互结构图 (springdata jpa 默认使用 hibernate 进行封装) 使用之后就关注于 SpringData 不用再花多经历关注具体各个交互框 ...

  4. BZOJ 4657 (网络流)

    题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们. 攻击方法是:对于 ...

  5. asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。

    原文:asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密. GitHub demo https://github.com/zhanglilong23/Asp.NetCore. ...

  6. kubernetes里面有时候centos源用不了

    kubernetes里面有时候centos源用不了,快速配一个阿里云的源. mkdir /etc/yum.repos.d/yangback;mv /etc/yum.repos.d/* /etc/yum ...

  7. vue证明题三,vue项目的包结构和配置

    用vue-cli创建的项目带有自动配置好的包结构,包结构都是固定的. 关于详细的解释,网上多得是,只说下最重要的内容 1.vue项目包结构和端口号配置 这里笔者下了个HBuilderX来写代码. 2. ...

  8. React-Native基础-安卓篇(二)

    前言:这一篇随笔将记录我在React-Native官网文档上学习的基础知识

  9. Linux面试基础(二)

    Linux常用目录——存放 /bin  所有用户可以使用的可执行文件 /sbin  新管理员使用的执行文件 /boot  Linux内核映像文件和与引导加载有关的文件 /dev   设备文件 /etc ...

  10. 错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?(转)

    错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx. ...