mysql与oracle语法区别_mysql与oracle语法区别有哪些?

4225a2fa2a84c68f2929f1a7e9e33cc6.png

mysql与oracle语法区别:

1、在MySQL中from 后的表如果是(select.......)这种,那么后面必须有别名

2、连接字符串在Oracle中用|| ,MySQL中用concat('a','b','c')

3、mysql没有像orcale的动态游标,只有显示游标DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`liyukun`$$

CREATE DEFINER=`ids`@`localhost` PROCEDURE `liyukun`(out z int)

BEGIN

declare count1 int;

DECLARE done INT DEFAULT 0;

declare v_haoma varchar(50);

declare v_yingyeting varchar(100);

DECLARE cur1 CURSOR FOR select haoma,yingyeting  from eryue where id<2;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

//这里和oracle有区别,Oracle的PL/SQL的指针有个隐性变

量%notfound,Mysql是通过一个Error handler的声明来进行判断的

OPEN cur1;

cur1: LOOP

FETCH cur1 INTO v_haoma,v_yingyeting;

IF done=1 THEN   //如果没有数据了,则离开

LEAVE cur1;

ELSE

select count(*) into count1 from year2012 where haoma=v_haoma ;

if(count1=0) then

insert into year2012(haoma, yingyeting)

values(v_haoma,v_yingyeting);

else

set z = z+1;

update year2012 set eryue = ‘100’ where haoma=v_haoma;

end if;

END IF;

END LOOP cur1;

CLOSE cur1;

END$$

DELIMITER ;

4、orcale用decode()来转换数据,mysql用case when:SELECT

sql 中 case when  Title,

sql 中 case when 'Price Range'=

sql 中 case when CASE

sql 中 case when WHEN price ISNULLTHEN'Unpriced'

sql 中 case when WHEN price <10THEN'Bargain'

sql 中 case when WHEN price BETWEEN10and20THEN'Average'

sql 中 case when ELSE'Gift to impress relatives'

sql 中 case when END(必须有end)

5、Orcale中没有TOP,是通过select * from (select * from A order by id desc) where rownum=1

注:不能直接写 select * from A where rownum=1 order by id desc 因为语句执行的顺序是先where再order by ,如果这样写就无法按id的排序来取第一个了。

不能写rownum=2或rownum>1这样,因为Orcale 默认必须包含第一条。

如果非要取第二条的话,可以写成:select * from (select id,rownum as row_num from lws_q_bl_result r where r.sample_id = 'B10226072') where row_num=2

mysql:

limit是mysql的语法select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录

n是指从第m+1条开始,取n条。select * from tablename limit 2,4

即取出第3条至第6条,4条记录

6、Orcale,MySql while循环比较

Orcale:while num<10

loop

str := to_char(num);

num := num+1;

end loop;

mysql:while num<10

do

str := to_char(num);

num := num+1;

end while;

7、orcale 生成唯一序列是 select sys.guid() from dual ,mysql是 select uuid() from dual

推荐:MySQL教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值