代码编织梦想

一.建表(同)
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。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/login121/article/details/122172862

mysql与oracle语法上一些常见的差异_cen_s的博客-爱代码爱编程

最近在帮公司的项目做去O,借此机会记录一些MySQL与Oracle语法上常见的差异,以便加深印象以及日后查阅。 例子:性别为男则为1,否则为0。 MySQL:IF(expr ,value1,value2) 如果 expr 为TRUE,则 IF()的返回值为value1; 否则返回值则为 value2。就相当于三目运算符。  Oracle:decode(v

oracle和mysql语法区别_初尘19的博客-爱代码爱编程_oracle和mysql语法区别大吗

最近需要迁移项目,将数据库由Oracle改为MySQL。由于两者的语法有部分不一样,所以需要把Oracle中能用但MySQL中不能用的函数/类型等改为MySQL中能用的,以下是总结出的部分语法区别:一、数据类型     1. Number类型         MySQL中是没有Number类型的,但有int/decimal 类型,Oracle中的Numbe

mysql多表更新删除以及和oracle的对比-爱代码爱编程

MYSQL多表更新操作, 一般来说这类操作可以用IN和NOT IN,至少在ORACLE中可以这样做,ORACLE对IN和NOT IN的优化程度很高 一般使用SEMI JOIN和ANTI JOIN进行半连接,抛弃不需要的行,但是MYSQL在这方面性能还是有一些问题, 所以建议使用连接的方式如下,对于联合UPDATE ORACLE可以使用ME

oracle与mysql语法区别_oracle学习笔记-mysql与oracle语法区别-爱代码爱编程

1、if else分支 mysql:用elseif               Oracle:用elsif 可以用select直接查看获取的值或者一个变量。 1 create procedure pd_testif2(in num int,out str varchar) 2 begin 3 if num=1 then 4 set st

oracle与mysql语法区别_mysql和oracle语法异同-爱代码爱编程

一、mysql里的ifnull(a,b)对应oracle的nvl(a,b); 二、日期比较:mysql: 可以用Date类型的日期进行比较时间比较。oracle:必须用to_date()函数和to_char()函数配合转换成统一格式的日期字符串,然后进行比较。 三、mysql: 可以用YEAR(),MONTH(),NOW()等函数获取年/月/当前日

mysql与oracle存储过程_oracle与mysql存储过程语法区别-爱代码爱编程

oracle与mysql存储过程语法区别 mysql 、oracle存储过程语法区别 1、 条件语句:mysql使用elseif关键字,oracle是elsif关键字; oracle: if表达式 then 表达式; elsif 表达式; endif; mysql: if表达式then 表达式; elseif 表达式; endif; 2、 字符串连

mysql语法和oracle一样吗_mysql与oracle语法区别有哪些?-爱代码爱编程

mysql与oracle语法区别: 1、在MySQL中from 后的表如果是(select.......)这种,那么后面必须有别名 2、连接字符串在Oracle中用|| ,MySQL中用concat('a','b','c') 3、mysql没有像orcale的动态游标,只有显示游标DELIMITER $$ DROP PROCEDURE IF

oracle和mysql的sql语句不同_相同update语句在MySQL,Oracle的不同表现(r12笔记第30天)...-爱代码爱编程

今天有个朋友问我一个SQL问题,大体是一个update语句,看起来逻辑没有问题,但是执行的时候却总是报错。 语句和报错信息为: UPDATE payment_data rr SET rr.penalty_date = '2017-4-12' where rr.id = (SELECT min(r.id) FROM payment_data

数据库---mysql与oracle语法转换-爱代码爱编程

mysql与oracle语法转换 日期转字符 mysql:date_format(date,’%Y-%m-%d’) date_format(date,%Y%m%d%H%i%s) oracle:to_char(date,‘yyyy-MM–dd’); to_char(date,‘yyyyMMddHHmmss’);字符转日期 mysql:str_to_date

mybatis操作Oracle和mysql批量增删改数据时的区别-爱代码爱编程

首先批量插入,操作mysql和Oracle完全不同, mysql: <insert id = "insertList" parameterType="java.util.ArrayList"> INSERT INTO test_table ( `name`,`age`) VALUES