溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql與oracle數(shù)據(jù)的語(yǔ)法有什么不同之處

發(fā)布時(shí)間:2020-06-30 16:56:18 來(lái)源:億速云 閱讀:314 作者:清晨 欄目:編程語(yǔ)言

小編給大家分享一下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è)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI