mysql与oracle语法区别有哪些?
mysql与oracle语法区别:
1、在MySQL中from 后的表如果是(select.......)这种,那么后面必须有别名
2、连接字符串在Oracle中用|| ,MySQL中用concat('a','b','c')
3、mysql没有像orcale的动态游标,只有显示游标
DELIMITER$$ DROPPROCEDUREIFEXISTS`test`.`liyukun`$$ CREATEDEFINER=`ids`@`localhost`PROCEDURE`liyukun`(outzint) BEGIN declarecount1int; DECLAREdoneINTDEFAULT0; declarev_haomavarchar(50); declarev_yingyetingvarchar(100); DECLAREcur1CURSORFORselecthaoma,yingyetingfromeryuewhereid<2; DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=1; //这里和oracle有区别,Oracle的PL/SQL的指针有个隐性变 量%notfound,Mysql是通过一个Errorhandler的声明来进行判断的 OPENcur1; cur1:LOOP FETCHcur1INTOv_haoma,v_yingyeting; IFdone=1THEN//如果没有数据了,则离开 LEAVEcur1; ELSE selectcount(*)intocount1fromyear2012wherehaoma=v_haoma; if(count1=0)then insertintoyear2012(haoma,yingyeting) values(v_haoma,v_yingyeting); else setz=z+1; updateyear2012seteryue=‘100’wherehaoma=v_haoma; endif; ENDIF; ENDLOOPcur1; CLOSEcur1; END$$ DELIMITER;
4、orcale用decode()来转换数据,mysql用case when:
SELECT sql中casewhenTitle, sql中casewhen'PriceRange'= sql中casewhenCASE sql中casewhenWHENpriceISNULLTHEN'Unpriced' sql中casewhenWHENprice<10THEN'Bargain' sql中casewhenWHENpriceBETWEEN10and20THEN'Average' sql中casewhenELSE'Gifttoimpressrelatives' sql中casewhenEND(必须有end)
5、Orcale中没有TOP,是通过
select*from(select*fromAorderbyiddesc)whererownum=1
注:不能直接写 select * from A where rownum=1 order by id desc 因为语句执行的顺序是先where再order by ,如果这样写就无法按id的排序来取第一个了。
不能写rownum=2或rownum>1这样,因为Orcale 默认必须包含第一条。
如果非要取第二条的话,可以写成:
select*from(selectid,rownumasrow_numfromlws_q_bl_resultrwherer.sample_id='B10226072')whererow_num=2
mysql:
limit是mysql的语法
select*fromtablelimitm,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select*fromtablenamelimit2,4
即取出第3条至第6条,4条记录
6、Orcale,MySql while循环比较
Orcale:
whilenum<10 loop str:=to_char(num); num:=num+1; endloop;
mysql:
whilenum<10 do str:=to_char(num); num:=num+1; endwhile;
7、orcale 生成唯一序列是 select sys.guid() from dual ,mysql是 select uuid() from dual
推荐:MySQL教程
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.