• MySQL和Oracle开发差异


    1)  数据类型差异

    Oracle

    MySQL

    注释

    单独创建序列来实现

    自动增长的数据类型

    varchar2

    varchar

    number

    tinyint,smallint,mediumint,int,bigint

    float,double

    clob

    text,mediumtext,longtext

    date

    datetime

    enum

    raw

    binary(n),varbinary(n)

    bit(n)

    blob

    blob,mediumblob,longblob

    2)  内建函数差异

    Oracle

    MySQL

    注释

    length

    char_length

    substr

    substring

    nvl

    ifnull

    decode

    case

    to_char

    date_format,time_format

    to_date

    str_to_date

    trunc

    cast

    to_number

    cast

    date+/-n

    date_add

    date1-date2

    datediff

    3)  SQL语句差异

    操作

    Oracle

    MySQL

    创表指定表空间

    create table…tablespace x

    没有表空间,使用默认存储引擎

    CTAS建表

    create table…as select…不能新增字段和改变字段属性

    create table t1(a int,b int) as select a,b,a,b from t2可以选择新的字段和字段属性

    表结构复制

    create table t1 as select * from t2 where 1=0,只复制字段定义,不包括约束

    create table t1 like t2,复制包括约束

    全局分区索引

    create index…global partition by

    重命名列

    alter table t1 rename c1 to c2

    alter table t1 change c1 c2

    修改列类型

    alter table t1 modify c1 integer

    alter table t1 change c1 c1 int

    修改列缺省值

    alter table t1 modify c1 default 0

    alter table t1 change c1 c1 int default 0

    修改列非空

    alter table t1 modify c1 not null

    alter table t1 change c1 c1 int not null

    重命名表

    rename t1 to t2

    alter table t1 rename t2

    rename table t1 to t2

    删除索引

    drop index idx1

    alter table t1 drop index idx1

    drop index idx1 on t1

    重命名索引

    alter index idx1 rename to idx2

    删除重建

    重建索引

    alter index idx1 rebuild

    禁用索引

    alter index idx1 unusable

    删除表

    drop table t1,如果表不存在报错

    drop table if exists t1,判断表是否存在,存在删除,不存在不报错

    重命名视图

    rename v1 to v2

    rename view v1 to v2

    左右连接

    select * from t1,t2

    where t1.c1=t2.c2(+);

    select * from t1,t2

    where t1.c1(+)=t2.c2;

    select * from t1 left join t2

    on t1.c1=t2.c2;

    select * from t1 right join t2

    on t1.c1=t2.c2;

    交集

    select intersect select

    select inner join select;使用inner join代替

    差集

    Select minus select

    select left join where,使用left join where代替

    获取固定值

    select 1 from dual

    select 1

    字段连接

    select c1||c2 from t1

    select concant(c1,c2) from t1

    结果子查询

    select * from (select * from t)

    select * from (select * from t) t1 结果集需要有别名

    Merge

    merge into

    replace into

    行号

    rownum

    无,需要使用用户变量来实现

    分析函数

    max() over()

    min() over()

    ……

    无,需要自行实现

    位图索引

    create bitmap index

    Top查询

    select * from (select rownum from t1 order by c1)

    where rownum>=1 and

    rownum<=5

    select * from t1 order by c1 limit 5

    语句内部临时表

    with as

    创建存储过程/

    create or replace procedure

    create procecure

    创建函数

    create or replace function

    create function

    创建视图

    create or replace view

    create view

    创建触发器

    create or replace trigger

    create trigger

    创建包

    create or replace package

    创建用户

    create user u1 identified by p1 default tablespace x temporary tablespace y

    create user u1 identified by p1

    修改密码

    alter user u1 identified by p2

    mysqladmin -u u1 -p p1 password p2

    大小写

    不区分

    缺省数据库、表名区分大小写,列名不区分;

    可以设置lower_case_table_names=1都不分区

    3) 子程序差异

    Oracle中创建的匿名PL/SQL块、PL/SQL函数和存储过程,MySQL需要全部重新实现

  • 相关阅读:
    Linux autojump命令
    Linux rpmbuild命令
    RPM包制作教程
    LSP(分层服务提供程序)
    WPAD 的原理及实现
    在OpenSSL中添加自定义加密算法
    Openssl sess_id命令
    hdu1878欧拉回路(DFS+欧拉回路)
    好代码的伪科学定义
    MySQL安装过程中出现“APPLY security settings错误”的解决方式
  • 原文地址:https://www.cnblogs.com/softidea/p/5308115.html
Copyright © 2020-2023  润新知