zoukankan      html  css  js  c++  java
  • oracle 和 mysql 和区别

    1、mysql 有枚举类型,oracle 没有; mysql不支持number、varchar2类型,报错。
    2、oracle 支持全外连接,mysql 不支持
      select e.ename, e.sal, d.dname from emp e full join dept d on e.deptno=d.deptno;
    3、mysql 不支持交集和差集用法
      select * from emp where sal>2500 intersect select * from emp where job='MANAGER';
      select * from emp where job='MANAGER' minus select * from emp where sal>2500;
    4、oracle 两个日期可以直接相减,结果为相差的天数;mysql 也可以相减,但结果无意义。
      select now()-'2018-7-1'; // 20180714011927
      select sysdate-to_date('2018-7-1', 'yyyy-mm-dd') from dual; // 13.0697453703704
      mysql 要使用datediff()函数,oracle 没有这个函数
      select datediff(now(), '2018-7-1'); // 13
    5、oracle 的 nvl 函数对应mysql 是ifnull 函数;oracle 可以使用中文别名排序,mysql必须是英文别名才可以排序
      select ename, (nvl(sal, 0)+ nvl(comm, 0))*12 "年薪" from emp order by "年薪" desc;
      select ename, (ifnull(sal, 0)+ ifnull(comm, 0))*12 as yearly_salary from emp order by yearly_salary desc;
    6、oracle 连接字段使用 ||, mysql 使用函数 concat()
      select concat(ename,',', empno) from emp; -- oracle 也有这个函数,但只能传两个参数
    7、插入查询删除时日期时间格式不同
      oracle:
      insert into emp(empno,hiredate) values(11, to_date('1997-7-1', 'yyyy-mm-dd'));
      select * from emp where hiredate = to_date('1997-7-1', 'yyyy-mm-dd');
      delete from emp where hiredate = to_date('1997-7-1', 'yyyy-mm-dd');

      mysql:
      insert into emp(empno,hiredate) values(11, '1997-7-1'); -- 插入日期时间方式不同
      select * from emp where hiredate = '1997-7-1'; -- 查询日期时间方式不同
      delete from emp where hiredate = '1997-7-1';
    8、oracle 插入多行的语法:

      create table test (name VARCHAR2(10));
      insert all
      into test values('天')
      into test values('道')
      into test values('酬')
      into test values('勤')
      select * from dual;
      或者
      insert into test
      select '孟' from dual
      union
      select '子' from dual;

      mysql 插入多行的语法:
      create table test (name VARCHAR(10));
      INSERT into test VALUES('天'),('道'),('酬'),('勤');

    9、mysql 不支持从回收站删除表
      drop table test;
      create table test(id varchar(10));
      drop table test purge;
    10、修改表名语法不同
      oracle:
        rename emp to emp1;
        rename emp1 to emp;
      mysql:
        alter table student rename stu;
        alter table stu rename student;
    11、mysql
      修改字段类型语法:alter table student modify column name varchar(10) null default '小明' commt '姓名' after id;
            或者:alter table student modify name varchar(10);
      oracle
      修改字段类型语法:alter table student modify(name varchar2(10)); -- mysql不能加括号
    12、mysql 可以省略 from dual ,oracle 不可以省略。
    13、oracle 支持 delete tablename,mysql 必须写delete from tablename。
    14、select e.ename, e.sal, d.dname from emp e join dept d; // oracle语法错误,没有笛卡尔积;mysql可以执行,有笛卡尔积

    15、mysql 不支持
    update emp set (job, sal, comm) = (select job, sal, comm from emp where ename='SCOTT') where ename='SMITH';

  • 相关阅读:
    关于学习Knockoutjs--入门(一)
    h5移动端前端性能优化
    VS2015常用快捷键总结
    51nod1196 字符串的数量
    51nod1189 阶乘分数
    51nod1161 Partial Sums
    51nod1040 矩阵相乘结果的判断
    51nod 1125 交换机器的最小代价
    51nod 1120 机器人走方格 V3
    51nod 1040 最大公约数之和
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/9306762.html
Copyright © 2011-2022 走看看