国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL與Oracle的語法區(qū)別詳細(xì)對(duì)比

MySQL與Oracle的語法區(qū)別詳細(xì)對(duì)比

2019-12-19 14:24MYSQL教程網(wǎng) Mysql

Oracle和mysql的一些簡單命令對(duì)比在本文中將會(huì)涉及到很多的實(shí)例,感興趣的你不妨學(xué)習(xí)一下,就當(dāng)鞏固自己的知識(shí)了

Oracle和mysql的一些簡單命令對(duì)比 
1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; 
  SQL> select to_char(sysdate,'hh24-mi-ss') from dual; 
  mysql> select date_format(now(),'%Y-%m-%d'); 
  mysql> select time_format(now(),'%H-%i-%S'); 
  日期函數(shù) 
  增加一個(gè)月: 
  SQL> select to_char(add_months(to_date ('20000101','yyyymmdd'),1),'yyyy-mm-dd') from dual; 
  結(jié)果:2000-02-01 
  SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual; 
  結(jié)果:2000-06-01 
  mysql> select date_add('2000-01-01',interval 1 month); 
  結(jié)果:2000-02-01 
  mysql> select date_add('2000-01-01',interval 5 month); 
  結(jié)果:2000-06-01 
  截取字符串: 
  SQL> select substr('abcdefg',1,5) from dual; 
  SQL> select substrb('abcdefg',1,5) from dual; 
  結(jié)果:abcdemysql> select substring('abcdefg',2,3); 
  結(jié)果:bcd 
  mysql> select mid('abcdefg',2,3); 
  結(jié)果:bcd 
  mysql> select substring('abcdefg',2); 
  結(jié)果:bcdefg 
  mysql> select substring('abcdefg' from 2); 
  結(jié)果:bcdefg 
2) 在MySQL中from 后的表如果是(select.......)這種,那么后面必須有別名 
3) 連接字符串在Oracle中用|| ,SqlServer中用+,MySQL中用concat('a','b','c') 

4) 
在SqlServer中的寫法: 

復(fù)制代碼代碼如下:


declare @id varchar(50); 
set @id='4028e4962c3df257012c3df3b4850001'; 
select * from sims_sample_detect where ID= @id; 


在MySQL中的寫法: 

復(fù)制代碼代碼如下:


set @a = 189; 
select * from bc_article where id = @a //不用declare 


在Orcale中的寫法: 

5)MySQL存儲(chǔ)過程: 

復(fù)制代碼代碼如下:


DELIMITER $$ 
DROP PROCEDURE IF EXISTS `SIMS`.`transaction_delSampleInfo`$$ 
CREATE DEFINER=`root`@`%` PROCEDURE `transaction_delSampleInfo`(in sampleInfoId varchar(50)) 
BEGIN 
start transaction; 
update sims_sample_info set del='1' where ID = sampleInfoId; 
update sims_sample_detect set del='1' where SAMPLE_ID_PARENT = sampleInfoId; 
update sims_sample_detect_info set del='1' where DETECT_ID in( 
select ID from sims_sample_detect where SAMPLE_ID_PARENT = sampleInfoId 
); 
commit; 
END$$ 
DELIMITER ; 


變量名不能跟列名相同,否則效果為1=1,且MySQL不區(qū)分大小寫。 

6)mysql 游標(biāo) 
mysql沒有像orcale的動(dòng)態(tài)游標(biāo),只有顯示游標(biāo),例子如下: 

復(fù)制代碼代碼如下:


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是通過一個(gè)Error handler的聲明來進(jìn)行判斷的 
OPEN cur1; 
cur1: LOOP 
FETCH cur1 INTO v_haoma,v_yingyeting; 
IF done=1 THEN //如果沒有數(shù)據(jù)了,則離開 
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 ; 


執(zhí)行: 

復(fù)制代碼代碼如下:


call liyukun(@a); 
select @a; 


7) mysql的group by 語句可以select 沒有被分組的字段,如 
select id,name,age from A group by age 這樣 
但是在orcale和sqlserver中是會(huì)報(bào)錯(cuò)的。這個(gè)取出的id,name所在的行是每個(gè)分組中的第一行數(shù)據(jù)。 
8)orcale用decode()來轉(zhuǎn)換數(shù)據(jù),mysql,sqlserver用case when: 
case t.DETECT_RESULT when '2402' then t.SAMPLEID end (必須有end) 
9)mysql: 兩個(gè)select 出的數(shù)據(jù)相減: 
(COUNT(distinct(t.SAMPLEID))- 
CONVERT((COUNT(distinct(case t.DETECT_RESULT when '2402' then t.SAMPLEID end))), SIGNED)) AS NEGATIVE 
FROM `view_sims_for_report` t 
10)convert,cast用法 
mysql將varchar轉(zhuǎn)為int 
convert(字段名, SIGNED) 
字符集轉(zhuǎn)換 : CONVERT(xxx USING gb2312) 
類型轉(zhuǎn)換和SQL Server一樣,就是類型參數(shù)有點(diǎn)不同 : CAST(xxx AS 類型) , CONVERT(xxx,類型) 
可用的類型  
二進(jìn)制,同帶binary前綴的效果 : BINARY 
字符型,可帶參數(shù) : CHAR() 
日期 : DATE 
時(shí)間: TIME 
日期時(shí)間型 : DATETIME 
浮點(diǎn)數(shù) : DECIMAL 
整數(shù) : SIGNED 
無符號(hào)整數(shù) : UNSIGNED 
11)如果從mysql數(shù)據(jù)庫中取的時(shí)候沒有亂碼,而在Java的List中得到的是亂碼的話,那么可能是SQL語句中的有字段不是 varchar的數(shù)據(jù)類型,這時(shí)需要轉(zhuǎn)換convert(字段名, 類型)轉(zhuǎn)換一下,Orcale則用ToChar函數(shù) 
12)Orcale的大字段用clob,圖像用blob,clob字段在Hibernate的映射文件中用String就可以 
13) mysql,orcale,sqlserver 語句執(zhí)行順序 
開始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結(jié)果 
每個(gè)子句執(zhí)行后都會(huì)產(chǎn)生一個(gè)中間結(jié)果 ,供接下來的子句使用,如果不存在某個(gè)子句,就跳過。 
14) LPAD函數(shù) 
1在oracle的數(shù)據(jù)庫里有個(gè)函數(shù) LPAD(String a,int length,String addString). 
2作用:把a(bǔ)ddString添加到a的左邊,length 是返回值的長度。 
3例子 

復(fù)制代碼代碼如下:


A : SQL> select lpad('test',8,0) from dual; 
LPAD('TEST',8,0) 
---------------- 
0000test 
B: select lpad('test',8) from dual; 
LPAD('TEST',8) 
-------------- 
test 注:不寫最后一個(gè)參數(shù),函數(shù)會(huì)默認(rèn)在返回值左邊加一個(gè)空格。 
C: SQL> select lpad('test',2,0) from dual; 
LPAD('TEST',2,0) 
---------------- 
te 
D:SQL> select lpad('test',3) from dual; 
LPAD('TEST',3) 
-------------- 
tes 


15)Orcale中沒有TOP,是通過 
select * from (select * from A order by id desc) where rownum=1 
注:不能直接寫 select * from A where rownum=1 order by id desc 因?yàn)檎Z句執(zhí)行的順序是先where再order by ,如果這樣寫就無法按id的排序來取第一個(gè)了。 
不能寫rownum=2或rownum>1這樣,因?yàn)镺rcale 默認(rèn)必須包含第一條。 
如果非要取第二條的話,可以寫成: 

復(fù)制代碼代碼如下:


select * from (select id,rownum as row_num from lws_q_bl_result r where r.sample_id = 'B10226072') where row_num=2 


16)Orcale,MySql while循環(huán)比較 
Orcale: 

復(fù)制代碼代碼如下:


while num<10 
loop 
str := to_char(num); 
num := num+1; 
end loop; 


也可以: 

復(fù)制代碼代碼如下:


for num in 1..10 --這樣的缺陷是無法間隔取值 
loop 
str := to_char(num); 
end loop; 


mysql: 

復(fù)制代碼代碼如下:


while num<10 
do 
str := to_char(num); 
num := num+1; 
end while; 


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

18)MySql和Orcale的ID自增 
MySql由于是在數(shù)據(jù)庫中實(shí)現(xiàn)ID自增,所以如果想返回插入一條序列的該條ID,只能用如下方法: 

復(fù)制代碼代碼如下:


public int insertSign(final SpaceSign sign) throws Exception { 
try{ 
KeyHolder keyHolder = new GeneratedKeyHolder(); 
final String sql = "insert into space_sign(userId,userName,nickName,contentText,contentHtml,isPublic,commentCount,userIp,status,insertTime)" + 
" values(?,?,?,?,?,?,?,?,?,?)"; 
template.update(new PreparedStatementCreator() { 
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { 
PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); 
ps.setInt(1, sign.getUserId()); 
ps.setString(2, sign.getUserName()); 
ps.setString(3, sign.getNickName()); 
ps.setString(4, sign.getContentText()); 
ps.setString(5, sign.getContentHtml()); 
ps.setInt(6, sign.getIsPublic()); 
ps.setInt(7,sign.getCommnetCount()); 
ps.setString(8, sign.getUserIp()); 
ps.setInt(9, sign.getStatus()); 
ps.setTimestamp(10, new java.sql.Timestamp(sign.getInsertTime().getTime())); 
return ps; 

}, keyHolder); 
Long generatedId = keyHolder.getKey().longValue(); 
return generatedId.intValue(); 
} catch (Exception e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
throw new SQLException("發(fā)表簽名失敗", e); 


由于Orcale的ID是在插入該條數(shù)據(jù)之前就通過select SEQ_BLOG_ID.nextval from dual 獲得的,所以直接返回既可。ps:SEQ_BLOG_ID為在數(shù)據(jù)庫中設(shè)置的sequence。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产高清一区二区三区 | 日韩在线免费视频 | 蜜桃一区 | 久草免费在线视频 | 久久久国产一区二区 | 色爱av| 99在线免费观看 | 日韩欧美精品一区 | 亚洲电影在线观看 | 亚洲成人一区二区三区 | 国产成人综合一区 | 91精品入口蜜桃 | 免费的成人毛片 | 亚洲国产精品久久久久婷婷老年 | 久久国产精品久久精品 | 免费一级毛片在线播放放视频 | 亚洲一区二区三区高清 | 中文字幕亚洲综合久久久软件 | 欧美日韩国产精品一区二区 | 亚洲综合视频在线观看 | 国内久久精品 | 亚洲综合色网 | 欧美黑人性暴力猛交喷水黑人巨大 | 亚洲一区在线免费观看 | 久久久久国产精品免费免费搜索 | 成人一区二区三区 | 欧洲成人在线 | 四虎影视 | 国产一级黄片毛片 | 色成人亚洲www78ixcom | 一区二区三区国产视频 | 91精品国产91久久久久久 | 另类国产ts人妖高潮系列视频 | 久久久久久久久久久久久大色天下 | 国产 日韩 欧美 在线 | 99看片| 欧美精品一区二区三区手机在线 | 美女视频黄的免费 | 毛片入口| 欧美一区二区三区 | 免费av一区二区三区 |