您好,登錄后才能下訂單哦!
小編給大家分享一下mysql與oracle數(shù)據(jù)的語(yǔ)法有什么不同之處,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
mysql與oracle語(yǔ)法區(qū)別:
1、在MySQL中from 后的表如果是(select.......)這種,那么后面必須有別名
2、連接字符串在Oracle中用|| ,MySQL中用concat('a','b','c')
3、mysql沒(méi)有像orcale的動(dòng)態(tài)游標(biāo),只有顯示游標(biāo)
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有區(qū)別,Oracle的PL/SQL的指針有個(gè)隱性變 量%notfound,Mysql是通過(guò)一個(gè)Error handler的聲明來(lái)進(jìn)行判斷的 OPEN cur1; cur1: LOOP FETCH cur1 INTO v_haoma,v_yingyeting; IF done=1 THEN //如果沒(méi)有數(shù)據(jù)了,則離開(kāi) 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()來(lái)轉(zhuǎn)換數(shù)據(jù),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中沒(méi)有TOP,是通過(guò)
select * from (select * from A order by id desc) where rownum=1
注:不能直接寫(xiě) select * from A where rownum=1 order by id desc 因?yàn)檎Z(yǔ)句執(zhí)行的順序是先where再order by ,如果這樣寫(xiě)就無(wú)法按id的排序來(lái)取第一個(gè)了。
不能寫(xiě)rownum=2或rownum>1這樣,因?yàn)镺rcale 默認(rèn)必須包含第一條。
如果非要取第二條的話,可以寫(xiě)成:
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的語(yǔ)法
select * from table limit m,n
其中m是指記錄開(kāi)始的index,從0開(kāi)始,表示第一條記錄
n是指從第m+1條開(kāi)始,取n條。
select * from tablename limit 2,4
即取出第3條至第6條,4條記錄
6、Orcale,MySql while循環(huán)比較
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
看完了這篇文章,相信你對(duì)mysql與oracle數(shù)據(jù)的語(yǔ)法有什么不同之處有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。