irpas技术客

mysql与oracle语法区别_清风丨墨竹_mysql oracle语句区别

未知 5455

一.建表(同) create table tableName( ? ?lid int, ? ?lName VARCHAR(255), ? ?lSex VARCHAR(255), ? ?lAge int )

二.删除表(异)

MySql:注:对于不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。 drop table if EXISTS tableName; drop table tableName;

Oracle: drop table tableName;

三.列操作

1.删除列(异)

MySql:注:column关键词可有可无。

alter table tableName?add column lBanji varchar(255);? alter table tableName add column lAddress varchar(255),add column lEmail varchar(255);

Oracle:?注:删除多列使用()号,单列不使用。 alter table tableName drop column lBanji; alter table tableName drop (lAddress,lEmil);

2.添加列(异)

MySql:注:column关键词可有可无。 alter table tableName add column lBanji varchar(255);? alter table tableName add column lAddress varchar(255),add column lEmail varchar(255);

Oracle:注:添加多列使用()号,单列不使用。 alter table tableName add lBanji varchar(255); alter table tableName add(lAddress varchar(255),lEmil varchar(255));

3.修改列(异)

MySql:

alter table tableName change column lBanji lEmail varchar(255);

Oracle:

alter table tableName?rename column lBanji to lEmail;

注:

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

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

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

A.?添加临时列

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

C.?删除原有列

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

四.索引

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

1.创建索引(同)

create?index?indexName?on?tableName?(columnName);

2.删除索引(异)

MySql:

alter?table?tableName?drop?index?indexName

Oracle:

drop?index?indexName

3.查询表索引(异)

MySql:

show?index?from?tableName

Oracle:

select?index_name,?table_name,?column_name?from?user_ind_columns?where?table_name='?tableName?'?

五.数据库空字符串问题

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

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

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


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #MySQL #oracle语句区别 #一建表同create #TABLE #tableName #lid #int