oracle与mysql语法区别_oracle学习笔记-mysql与oracle语法区别

1、if else分支

mysql:用elseif               Oracle:用elsif

可以用select直接查看获取的值或者一个变量。

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 create procedure pd_testif2(in num int,out str varchar)

2 begin

3 if num=1 then

4 set str='一';

5 elseif num=2 then

6 set str='二';

7 end if;

8 end;

9 --调用

10 call pd_testif2(1,@str);

11 select @str;

48304ba5e6f9fe08f3fa1abda7d326ab.png

执行结果:一

2、循环

mysql:while 条件  do                Oracle:while 条件 loop

语句块                                        语句块

end while;                                  end loop;

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 create procedure pd_testwhile22(in num int,out sum int)

2 begin

3 --定义变量

4 declare i int default 1;

5 declare sum int default 0;

6 --循环条件

7 while i

8 set vsum=vsum+i;

9 set i=i+1;

10 --结束循环

11 end while;

12 set sum=vsum;

13 end;

14 call pd_testwhile22(100,@str);

15 select @str;

48304ba5e6f9fe08f3fa1abda7d326ab.png

执行结果:5050

补充:Oracle和MySQL的一点区别:

oracle与mysql语法区别_oracle学习笔记-mysql与oracle语法区别_第1张图片

不同点:

1. mysql: IFNULL(a,b)

oracle: NULLIF(a,b)

2. mysql: 可以用Date类型的日期进行比较时间比较

oracle:必须用to_date()函数和to_char()函数配合转换成统一格式的日期字符串,然后进行比较

3. mysql: 可以用YEAR(), MONTH(), NOW()等函数获取年/月/当前日期等

oracle:必须用to_char(sysdate, 'yyyy'),to_char(sysdate, 'MM')获取

4. mysql: 字符串识别"",''

oracle:字符串只识别''

5. mysql: 可以用limit关键字截取所需的数据行

oracle:必须用rownum关键字通过子查询来截取所需数据行

2.1 创建表(同)

create table tableName(

columnName1 int,

columnName2 int

)

2.2 删除表(异)

MySQL:

drop table if exists tableName

Oracle:

drop table tableName

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

3 列

3.1 添加列(异)

MySQL:

A. alter table tableName add column columnName1 int;

B. alter table tableName add column columnName1 int, add column columnName2 int;

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

Oracle:

A. alter table tableName add columnName1 int;

B. alter table tableName add (columnName1 int);

C. alter table tableName add (columnName1 int, columnName2 int);

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

3.2 删除列(异)

MySQL:

A. alter table tableName drop column columnName1

B. alter table tableName drop column columnName1, drop column columnName2

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

Oracle:

A. alter table tableName drop column columnName2

B. alter table tableName drop (columnName1)

C. alter table tableName drop (columnName1,columnName2)

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

3.3 修改列名(异)

MySQL:

alter table tableName change column columnNameOld columnNameNew columnType;

Oracle:

alter table tableName rename column columnNameOld to columnNameNew;

3.4 修改列类型(说明)

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

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

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

A. 添加临时列

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

C. 删除原有列

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

4 索引

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

4.1 创建索引(同)

create index indexName on tableName (columnName);

4.2 删除索引(异)

MySQL:

alter table tableName drop index indexName

Oracle:

drop index indexName

4.3 查询表的索引(异)

MySQL:

show index from tableName

Oracle:

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

5 空字符串问题

你可能感兴趣的:(oracle与mysql语法区别_oracle学习笔记-mysql与oracle语法区别)