Oracle与MySQL的SQL语句区别


2表

2.1创建表(同)

createtabletableName(

columnName1int,

columnName2int

)

2.2删除表(异)

MySQL:

droptableifexiststableName

Oracle:

droptabletableName

注:Oracle没有ifexists关键字,也没用类似ifexists的SQL语法。

3列

3.1添加列(异)

MySQL:

A.altertabletableNameaddcolumncolumnName1int;

B.altertabletableNameaddcolumncolumnName1int,addcolumncolumnName2int;

注:其中关键字column可有可无。

Oracle:

A.altertabletableNameaddcolumnName1int;

B.altertabletableNameadd(columnName1int);

C.altertabletableNameadd(columnName1int,columnName2int);

注:对于A,只有添加单列的时候才可使用,对于添加多列时需要使用C,不能像MySQL那样重复使用addcolumn关键字。

3.2删除列(异)

MySQL:

A.altertabletableNamedropcolumncolumnName1

B.altertabletableNamedropcolumncolumnName1,dropcolumncolumnName2

注:其中关键字column可有可无。

Oracle:

A.altertabletableNamedropcolumncolumnName2

B.altertabletableNamedrop(columnName1)

C.altertabletableNamedrop(columnName1,columnName2)

注:对于A,只有删除单列的时候才可使用,对于删除多列时需要使用C,不能像MySQL那样重复使用dropcolumn关键字。

3.3修改列名(异)

MySQL:

altertabletableNamechangecolumncolumnNameOldcolumnNameNewcolumnType;

Oracle:

altertabletableNamerenamecolumncolumnNameOldtocolumnNameNew;

3.4修改列类型(说明)

Oracle中,在列有数据的时候,无法修改列类型;没有数据时可以。

MySQL中,无论列是否有数据都可以修改列类型。

但是当有数据是,直接修改列类型都可能对数据造成丢失等,所以一般需要结合具体的业务来对列数据做处理后,再修改列类型类型。所以修改列的类型并非使用SQL语句进行一步到位的修改,而是通过以下流程:

A.添加临时列

B.将需要更改的列的值经过类型转换的验证后,赋值给临时列

C.删除原有列

D.将临时列的列名修改为原有列列名

4索引

在整个数据库内,MySQL的索引可以同名,也就是说MySQL的索引是表级别的;但是Oracle索引不可以同名,也就是说Oracle的索引是数据库级别的。

4.1创建索引(同)

createindexindexNameontableName(columnName);

4.2删除索引(异)

MySQL:

altertabletableNamedropindexindexName

Oracle:

dropindexindexName

4.3查询表的索引(异)

MySQL:

showindexfromtableName

Oracle:

selectindex_name,table_name,column_namefromuser_ind_columnswheretable_name='tableName'

5空字符串问题

Oracle中空字符串''就是null(也就是说,只有null,没有空字符),而MySQL是区分null和''的。

对于使用语句:select * from table1 where user_name <> ''来查询列user_name不为空(不为null且不为空字符)时,Oracle会查不出任何结果,而MySQL可以正常运行。这里MySQL之所以可以得到正确结果,还因为比较符号<>会先将列为null的内容进行过滤,然后再比较内容是否为空字符串。

这就要求一方面,以后在编写代码的时候,尽量保证不会往数据库插入空字符串''这样的值,要么保持有数据,要么保持为null。另外,对于MySQL中已经同时存在Null和''时,所有判断是否为null或者''的地方改为判断列的长度是否为0。

优质内容筛选与推荐>>
1、ORA-14517: Subpartition of index "string.string" is in unusable state
2、jquery 选择器,模糊匹配
3、spring整合struts2
4、文件处理
5、H5横向三栏布局


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号