IT技術互動交流平台

甘肃体彩网官网

作者︰NOGiveUp  來源︰IT165收集(ji)  發布日期︰2020-02-24 13:20:44
ORACLE、 SQLSERVER、MYSQL與DB2的區別--平台性︰    Oracle、MYSQL與DB2可在所有主流平台上運行;    SQL Server只能在Windows下運行; --安(an)全性︰    Oracle的安(an)全認證獲(huo)得最高認證級別的ISO標準認證,而SQL Server並沒有獲(huo)得什(shi)麼安(an)全認證;    這(zhe)方面證明了Oracle的安(an)全性是高于SQL Server的mo)nbsp;--數據(ju)類(lei)型、函數、sql語句︰    oracle中(zhong)有復合數據(ju)類(lei)型,sql server中(zhong)沒有; 總之︰     ORACLE 大型,完善,安(an)全;     SQLSERVER 簡單,界面友好,WINDOWS平台下的好選擇 ,SqlServer後(hou)與SYBASE也比較接近的mo)nbsp;    MYSQL 免費(fei),功能不錯,適合個人網站及一些小企業dang)耐居τyong);     DB2 超(chao)大型,與ORACLE類(lei)似 ,數據(ju)倉庫和數據(ju)挖掘相當的不錯,特(te)別是集(ji)群技術可以使DB2的可擴性能達(da)到極致。 全稱為(wei)IBM DB2。是美國IBM公(gong)司開發的一套關(guan)系型數據(ju)庫管理(li)系統(tong),它主要(yao)的運行環境為(wei)UNIX(包括(kuo)IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows服務器版本(ben)。 DB2主要(yao)應用(yong)于大型應用(yong)系統(tong),具有較好的可伸縮性,可支持zhi)cong)大型tu)降?yong)戶(hu)環境,應用(yong)于所有常見的服務器操(cao)作系統(tong)平台下。 DB2提(ti)供了高層次的數據(ju)利用(yong)性、完整性、安(an)全性、可恢復性,以及小規模(mo)到大規模(mo)應用(yong)程(cheng)序的執(zhi)行能力,具有與平台無關(guan)的基(ji)本(ben)功能和SQL命令。 DB2采用(yong)了數據(ju)分(fen)級技術,能夠使大型tu)ju)很方便地下載到LAN數據(ju)庫服務器,使得客tu)hu)機/服務器用(yong)戶(hu)和tu)AN的應用(yong)程(cheng)序可以訪(fang)問大型tu)ju),並使數據(ju)庫本(ben)地化及遠(yuan)程(cheng)連接透明化。 DB2以擁有一個非(fei)常完備的查詢(xun)優化器而著稱,其外部連接改善了查詢(xun)性能,並支持多(duo)任務並行查詢(xun)。 DB2具有很好的網絡(luo)支持能力,每個子系統(tong)可以連接十幾萬個分(fen)布式用(yong)戶(hu),可同(tong)時激活上千個活動線(xian)程(cheng),對(dui)大型分(fen)布式應用(yong)系統(tong)尤(you)為(wei)適shi)yong)。
SQL Server 與 Oracle 數據(ju)庫兩者一個最大的區別,就是其應用(yong)平台的差異。 現在SQL Server數據(ju)庫只能夠部署在微軟的操(cao)作系統(tong)上。而Oracle數據(ju)庫其不但(dan)可以支持微軟的操(cao)作系統(tong),而且還(huai)可以支持開源的操(cao)作系統(tong),如(ru)Linux等等。 感(gan)覺(jue)最大區別是在鎖機制(zhi)上,一個是頁(ye)級duan) 桓鍪切屑端(duan)  芟嗖詈艽體系機構好像不同(tong),ORACLE是一個數據(ju)庫多(duo)用(yong)戶(hu)多(duo)個表空間,SQL是多(duo)個數據(ju)庫。不知(zhi)對(dui)不對(dui)。 oracle for windows和 oracle for linux區別還(huai)是很大的mo) 芟勻唬 桓鍪且韻xian)程(cheng)為(wei)主的mo) 桓鍪且越cheng)為(wei)主的。  至于Oracle for windows和SQL server,媽(ma)的mo) 鄹裼星鳶a)!SQL server便宜(yi),oracle貴(gui),您要(yao)回扣(kou)我們就買oracle. oracle   國內銷售(shou)作的火,大多(duo)數企業,事luan)凳褂yong) 
sqlserver   中(zhong)小型數據(ju)庫的首選 
mysql   免費(fei),配合php,perl   一般(ban)作網站的數據(ju)庫 
db2   對(dui)大型分(fen)布式應用(yong)系統(tong)尤(you)為(wei)適shi)yong)。   開放pan) 
SQL Server         
只能在windows上運行,沒有絲毫的開放pan)裕 cao)作系統(tong)的系統(tong)的穩定對(dui)數據(ju)庫是十分(fen)重要(yao)的。Windows9X系列產品(pin)是偏重于桌面應用(yong),NT  server只適合中(zhong)小型tui)笠怠而且windows平台的可靠性,安(an)全性和伸縮性是非(fei)常有限的。它不象unix那樣(yang)久經考jia)椋 you)其是在處理(li)大數據(ju)量的關(guan)鍵業務時.        Oracle          能在所有主流平台上運行(包括(kuo)windows)。完全支持所有的工業標準。采用(yong)完全開放策略。可以使客tu)hu)選擇最適合的解決方案。對(dui)開發商(shang)全力支持。 
DB2 
能在所有主流平台上運行(包括(kuo)windows)。最適shi)諍A渴ju)。DB2在企業級的應用(yong)最為(wei)廣泛,在全球的500家yi)畬蟺鈉笠抵zhong),幾乎85%以上用(yong)DB2數據(ju)庫服務器,而國內到97年約佔5%.    可伸縮性,並行性  SQL server︰並行實(shi)施(shi)和共存模(mo)型並不成熟。很難處理(li)日益增多(duo)的用(yong)戶(hu)數和數據(ju)卷。伸縮性有限。 Oracle平行服務器通過使一組結點共享同(tong)一簇中(zhong)的工作來擴展windownt的能力,提(ti)供高可用(yong)性和高伸縮性的簇的解決方案。如(ru)果windowsNT不能滿足(zu)需要(yao),用(yong)戶(hu)可以把數據(ju)庫移到UNIX中(zhong)。 DB︰2DB2具有很好的並行性。DB2把數據(ju)庫管理(li)擴充到了並行的、多(duo)節點的環境,數據(ju)庫分(fen)區是數據(ju)庫的一部分(fen),包含自己(ji)的數據(ju)、索(suo)引、配置文(wen)件、和事務日志。數據(ju)庫分(fen)區有時被稱為(wei)節點或數據(ju)庫節點   安(an)全性 SQL server︰沒有獲(huo)得任何安(an)全證書。         Oracl獲(huo)得最高認證級別的ISO標準認證。 DB2︰獲(huo)得最高認證級別的ISO標準認證。  性能  SQL Server :多(duo)用(yong)戶(hu)時性能不佳(jia)     Oracle:性能最高,保持windowsNT下的TPC-D和TPC-C的世界記錄。  DB2:適shi)yong)于數據(ju)倉庫和在線(xian)事物處理(li)性能較高。 客tu)hu)端(duan)支持及應用(yong)模(mo)式  SQL Server :C/S結構,只支持windows客tu)hu),可以用(yong)ADO,DAO,OLEDB,ODBC連接.          Oracle 
多(duo)層次網絡(luo)計算,支持多(duo)種工業標準,可以用(yong)ODBC,JDBC,OCI等網絡(luo)客tu)hu)連接     
DB2 
跨(kua)平台,多(duo)層結構,支持ODBC,JDBC等客tu)hu) 
操(cao)作簡便 
SQL Server                       
操(cao)作簡單,但(dan)只有圖形界面.   
Oracle 
較復雜, 同(tong)時提(ti)供GUI和命令行,在windowsNT和unix下操(cao)作相同(tong)               
DB2 
操(cao)作簡單,同(tong)時提(ti)供GUI和命令行,在windowsNT和unix下操(cao)作相同(tong)       
使用(yong)風險 
SQL server                 
完全重寫的代碼,經歷了shun)?詰牟ce)試(shi),不斷(duan)延遲,許多(duo)功能需要(yao)時間來證明。並不十分(fen)兼容早期產品(pin)。使用(yong)需要(yao)冒一定風險。 
  
Oracle 
長(chang)時間的開發經驗,完全向下兼容。得到廣泛的應用(yong)。完全沒有風險。 
DB2 
在巨型tui)笠檔(dang)玫焦惴旱撓τyong),向下兼容性好。風險小。   1. ORACLE 
oracle能在所有主流平台上運行(包括(kuo) windows)。完全支持所有的工業標準采用(yong)完全開放策略。 可以使客tu)hu)選擇最適合的解決方案。對(dui)開發商(shang)全力支持.oracle並行服務器通過使一組結點共享同(tong)一簇中(zhong)的工作來擴展windownt的能力,提(ti)供高可用(yong)性和高伸縮性的簇的解決方案。 如(ru)果windowsNT不能滿足(zu)需要(yao),用(yong)戶(hu)可以把數據(ju)庫移到UNIX中(zhong)。Oracle的並行服務器對(dui)各種UNIX平台的集(ji)群機制(zhi)都有著(zhou)相當高的集(ji)成度。 oracle獲(huo)得最高認證級別的ISO標準認證.oracle性能最高, 保持開放平台下的TPC-D和TPC-C的世界記錄oracle多(duo)層次網絡(luo)計算,支持多(duo)種工業標準,可以用(yong)ODBC、JDBC、OCI等網絡(luo)客tu)hu)連接。 長(chang)時間的開發經驗,完全向下兼容。得到廣泛的應用(yong)。完全沒有風險。 
     Oracle在兼容性、可移植性、可聯結性、高生產率上、開放pan)砸泊嬖謨諾/strong>。Oracle產品(pin)采用(yong)標準SQL,並經過美國國家標準技術所(NIST)測(ce)試(shi)。 與IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。  Oracle的產品(pin)可運行于很寬(kuan)範(fan)圍(wei)的硬件與操(cao)作系統(tong)平台上。可以安(an)裝在70種以上不同(tong)的大、中(zhong)、小型tu)希豢稍MS、DOS、UNIX、WINDOWS等多(duo)種操(cao)作系統(tong)下工作。能與多(duo)種通訊網絡(luo)相連,支持各種zhong) 椋CP/IP、DECnet、LU6.2等)。提(ti)供了多(duo)種開發工具,能極大的方便用(yong)戶(hu)進行進一步的開發。Oracle良(liang)好的兼容性、可移植性、可連接性和高生產率是Oracle RDBMS具有良(liang)好的開放pan)浴nbsp;

2. SQLSERVER 
SQL Server 是Microsoft推(tui)出一套產品(pin),它具有使用(yong)方便、可伸縮性好、與相關(guan)軟件集(ji)成程(cheng)度高等優點,逐(zhu)漸成為(wei)Windows平台下進行數據(ju)庫應用(yong)開發較為(wei)理(li)想的選擇之一。 SQLServer是目前流行的數據(ju)庫之一,它已廣泛應用(yong)于金(jin)融,保險,電力,行政管理(li)等與數據(ju)庫有關(guan)的行業.而且,由于其易(yi)操(cao)作性及友好的界面,贏得了廣大用(yong)戶(hu)的青(qing)睞,尤(you)其是SQLServer與其它數據(ju)庫,如(ru)Access,FoxPro,Excel等有良(liang)好的ODBC接口,可以把上述數據(ju)庫轉(zhuan)成SQLServer的數據(ju)庫,因此目前越來越多(duo)的讀(du)者正在使用(yong)SQLServer. 
3. MYSQL 

MySQL是qiang) 吹模(mo) ?質攣翊 li),有視(shi)圖,有存儲過程(cheng)和觸(chu)發器,有數據(ju)庫端(duan)的用(yong)戶(hu)自yuan)ㄒ搴  荒芡耆 褂yong)標準的SQL語法。  
從(cong)數據(ju)庫行家听說dang)牡諞患戮褪ySQL缺乏transactions,rollbacks, 和subselects的功能。如(ru)果你計劃使用(yong)MySQL寫一個關(guan)于銀行、會(hui)計的應用(yong)程(cheng)序,或者計劃維護(hu)一些隨時需要(yao)線(xian)性遞增的不同(tong)類(lei)的計數器,你將缺乏transactions功能。在現有的發布版本(ben)的MySQL下,請不要(yao)有任何的這(zhe)些想法。

    在非(fei)常必要(yao)的情況下,MySQL的局限性可以通過一部分(fen)開發者的努力得到克服。 在MySQL中(zhong)你失去的主要(yao)功能是subselect語句,而這(zhe)正是其它的所有數據(ju)庫都具有的。 換而言(yan)之,這(zhe)個失去的功能是一個痛苦。 
MySQL沒法處理(li)復雜的關(guan)聯性數據(ju)庫功能,例如(ru),子查詢(xun)(subqueries),雖然大多(duo)數的子查詢(xun)都可以改寫成join 
另一個MySQL沒有提(ti)供支持的功能是事務處理(li)(transaction)以及事務的提(ti)交(commit)/撤(che)銷(rollback)。 一個事務指的是被當作一個單位(wei)來共同(tong)執(zhi)行的一群或一套命令。 如(ru)果一個事務沒法完成,那麼整個事務里面沒有一個指令是真(zhen)正執(zhi)行下去的。 對(dui)于必須處理(li)線(xian)上訂單的商(shang)業網站來說,MySQL沒有支持這(zhe)項功能,的確讓人覺(jue)得很失望。 但(dan)是qiang)梢雜yong)MaxSQL,一個分(fen)開的服務器,它能通過外掛的表格來支持事務功能。  
外鍵(foreignkey)以及an)慰紀暾韻拗zhi)(referentialintegrity)可以讓你制(zhi)定表格中(zhong)資料間的約束,然後(hou)將約束(constraint)加到你所規定的資料里面。 這(zhe)些MYSQL沒有的功能表示(shi)一個有賴復雜的資料關(guan)系dang)撓τyong)程(cheng)序並不適合使用(yong)MySQL。 當我們說MySQL不支持外鍵時,我們指的就是數據(ju)庫的參(can)考完整性限制(zhi)--MySQL並沒有支持外鍵的規則,不huai)nnodb只要(yao)在創建表類(lei)型時,TYPE=INNODB就可以進行外鍵的約束。
當然更沒有支持連鎖刪(shan)除(cascadingdelete)的功能。 簡短的說,如(ru)果你的工作需要(yao)使用(yong)復雜的資料關(guan)聯,那你還(huai)是用(yong)原來的Access吧。  
SQL Server和oracle的區別
首先一點,這(zhe)三個數據(ju)庫不是同(tong)一個公(gong)司的產品(pin);二、其所對(dui)應的使用(yong)對(dui)象也不一樣(yang),oracle是主流的大型數據(ju)庫,大多(duo)數電信項目都是使用(yong)的oracle,而sqlserver與mysql主要(yao)是個人以及小型公(gong)司使用(yong)的的數據(ju)庫,但(dan)是sqlserver需要(yao)收費(fei),mysql不用(yong);三、如(ru)果按功能上來說,oracle最為(wei)強(qiang)大,oracle支持遞歸(gui)查詢(xun),二後(hou)兩者不支持;四、三個數據(ju)庫中(zhong),只有sqlserver有完整的圖形wei) cao)作界面,而oracle與mysql都要(yao)借助于其他的第三方數據(ju)庫圖形操(cao)作界面,比如(ru)oracle用(yong)的大多(duo)都是plsql;一、開放pan)1. SQL Server 只能在windows上運行,沒有絲毫的開放pan)裕 cao)作系統(tong)的系統(tong)的穩定對(dui)數據(ju)庫是十分(fen)重要(yao)的。Windows9X系列產品(pin)是偏重于桌面應用(yong),NT server只適合中(zhong)小型tui)笠怠6indows平台的可靠性,安(an)全性和伸縮性是非(fei)常有限的。它不象unix那樣(yang)久經考jia)椋 you)其是在處理(li)大數據(ju)庫。 2. Oracle 能在所有主流平台上運行(包括(kuo) windows)。完全支持所有的工業標準。采用(yong)完全開放策略。可以使客tu)hu)選擇最適合的解決方案。對(dui)開發商(shang)全力支持。 二、可伸縮性,並行性 1. SQL server 並行實(shi)施(shi)和共存模(mo)型並不成熟,很難處理(li)日益增多(duo)的用(yong)戶(hu)數和數據(ju)卷,伸縮性有限。 2. Oracle 並行服務器通過使一組結點共享同(tong)一簇中(zhong)的工作來擴展windownt的能力,提(ti)供高可用(yong)性和高伸縮性的簇的解決方案。如(ru)果windowsNT不能滿足(zu)需要(yao),用(yong)戶(hu)可以把數據(ju)庫移到UNIX中(zhong)。Oracle的並行服務器對(dui)各種UNIX平台的集(ji)群機制(zhi)都有著(zhou)相當高的集(ji)成度。三、性能 1. SQL Server 多(duo)用(yong)戶(hu)時性能不佳(jia) 2. Oracle 性能最高, 保持開放平台下的TPC-D和TPC-C的世界記錄。 四、客tu)hu)端(duan)支持及應用(yong)模(mo)式 1. SQL Server C/S結構,只支持windows客tu)hu),可以用(yong)ADO、DAO、OLEDB、ODBC連接。 2. Oracle 多(duo)層次網絡(luo)計算,支持多(duo)種工業標準,可以用(yong)ODBC、JDBC、OCI等網絡(luo)客tu)hu)連接。 五、操(cao)作簡便 1. SQL Server 操(cao)作簡單,但(dan)只有圖形界面。 2. Oracle 較復雜,同(tong)時提(ti)供GUI和命令行,在windowsNT和unix下操(cao)作相同(tong)。 六、使用(yong)風險 1. SQL server 完全重寫的代碼,經歷了shun)?詰牟ce)試(shi),不斷(duan)延遲,許多(duo)功能需要(yao)時間來證明。並不十分(fen)兼容。 2. Oracle 長(chang)時間的開發經驗,完全向下兼容。得到廣泛的應用(yong)。完全沒有風險。 最後(hou)價格上 ORACLE貴(gui)過SQLSRVER ORACLE, MYSQL 和 SQL SERVER之區別

MySql數據(ju)庫 ︰
優點︰ 1.支持5000萬條記錄的數據(ju)倉庫
2.適shi)τ謁械鈉教br />3.是qiang) 慈砑 奼ben)更新較快
4.性能很出色。純粹(cui)就性能而言(yan),MySQL是相當出色的mo) 蛭wei)它包含一個缺省桌面格式MyISAM。MyISAM數據(ju)庫 與磁盤非(fei)常地兼容而不佔用(yong)過多(duo)的CPU和內存。MySQL可以運行于Windows 系統(tong)而不會(hui)發生沖突(tu),在UNIX或類(lei)似UNIX系統(tong)上運行則更好。你還(huai)可以通過使用(yong)64位(wei)處理(li)器來獲(huo)取額外的一些性能。因為(wei)MySQL在內部里很多(duo)時候都使用(yong)64位(wei)的整數處理(li)。
5.價格便宜(yi)
缺點︰ 缺乏一些存儲程(cheng)序的功能,比如(ru)MyISAM引擎聯支持交換huai)δ/p>


MsSqlserver數據(ju)庫︰
優點︰ 1.真(zhen)正的客tu)hu)機/服務器體系結構
2.圖形wei) 撓yong)戶(hu)界面,使系統(tong)管理(li)和數據(ju)庫管理(li)更加直觀、簡單
3.豐(feng)富的編程(cheng)接口工具,為(wei)用(yong)戶(hu)進行程(cheng)序設(she)計提(ti)供了更大的選擇余地
4.與WinNT完全集(ji)成,利用(yong)了NT的許多(duo)功能,如(ru)發送和接受消息,管理(li)登錄安(an)全性等,SQL Server也可以很好地與Microsoft BackOffice產品(pin)集(ji)成。
5.有很好的伸縮性,可以跨(kua)平台使用(yong)。
6.提(ti)供數據(ju)倉庫功能,這(zhe)個功能只在Oracle和tui)淥昂貴(gui)的DBMS中(zhong)才有。


Oracle數據(ju)庫︰
優點︰ 1.Oracle的穩定性要(yao)比Sql server好。
2.Oracle在導數據(ju)工具sqlload.exe功能比Sqlserver的Bcp功能強(qiang)大,Oracle可以按照條件把文(wen)本(ben)文(wen)件數據(ju)導入(ru).
3.Oracle的安(an)全機制(zhi)比Sql server好。
4.Sql server的易(yi)用(yong)性和友好性方面要(yao)比Oracle好。
5.在處理(li)大數據(ju)方面Oracle會(hui)更穩定一些。
6.Sql Server在數據(ju)導出方面功能更強(qiang)一些。
7.處理(li)速度方面比Oracle快一些,和兩者的協議有關(guan).
缺點︰ 價格昂貴(gui)

MySQL與Oracle的語法區別詳(xiang)細對(dui)比

Oracle和mysql的一些簡單命令對(dui)比 
1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; 
  SQL> select to_char(sysdate,'hh44-mi-ss') from dual; 
  mysql> select date_format(now(),'%Y-%m-%d'); 
  mysql> select time_format(now(),'%H-%i-%S'); 
  日期函數 
  增加一個月︰ 
  SQL> select to_char(add_months(to_date ('20000101','yyyymmdd'),1),'yyyy-mm-dd') from dual; 
  結果︰2020-02-24 
  SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual; 
  結果︰2020-02-24 
  mysql> select date_add('2020-02-24',interval 1 month); 
  結果︰2020-02-24 
  mysql> select date_add('2020-02-24',interval 5 month); 
  結果︰2020-02-24 
  截(jie)取字符串︰ 
  SQL> select substr('abcdefg',1,5) from dual; 
  SQL> select substrb('abcdefg',1,5) from dual; 
  結果︰abcdemysql> select substring('abcdefg',2,3); 
  結果︰bcd 
  mysql> select mid('abcdefg',2,3); 
  結果︰bcd 
  mysql> select substring('abcdefg',2); 
  結果︰bcdefg 
  mysql> select substring('abcdefg' from 2); 
  結果︰bcdefg 
2) 在MySQL中(zhong)from 後(hou)的表如(ru)果是(select.......)這(zhe)種,那麼後(hou)面必須有別名(ming) 
3) 連接字符串在Oracle中(zhong)用(yong) ,SqlServer中(zhong)用(yong)+,MySQL中(zhong)用(yong)concat('a','b','c') 

4) 
在SqlServer中(zhong)的寫法︰ 

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

在MySQL中(zhong)的寫法︰ 

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

Orcale中(zhong)的寫法︰ 

5)MySQL存儲過程(cheng)︰ 

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 ; 


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

6)mysql 游標 
mysql沒有像orcale的動態(tai)游標,只有顯示(shi)游標,例子you)縵攏nbsp;

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; //這(zhe)里和oracle有區別,Oracle的PL/SQL的指針有個隱性變 量%notfound,Mysql是通過一個Error handler的聲明來進行判(pan)斷(duan)的 OPEN cur1; cur1: LOOP FETCH cur1 INTO v_haoma,v_yingyeting; IF done=1 THEN //如(ru)果沒有數據(ju)了,則離開 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 ; 

執(zhi)行︰ 

call liyukun(@a); select @a; 

7) mysql的group by 語句可以select 沒有被分(fen)組的字段,如(ru) 
select id,name,age from A group by age 這(zhe)樣(yang) 
但(dan)是在orcale和sqlserver中(zhong)是會(hui)報(bao)錯的。這(zhe)個取出的id,name所在的行是每個分(fen)組中(zhong)的第一行數據(ju)。 
8)orcale用(yong)decode()來轉(zhuan)換數據(ju),mysql,sqlserver用(yong)case when: 
case t.DETECT_RESULT when '2402' then t.SAMPLEID end (必須有end) 
9)mysql: 兩個select 出的數據(ju)相減︰ 
(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用(yong)法 
mysql將varchar轉(zhuan)為(wei)int 
convert(字段名(ming), SIGNED) 
字符集(ji)轉(zhuan)換 : CONVERT(xxx USING gb2312) 
類(lei)型轉(zhuan)換和SQL Server一樣(yang),就是類(lei)型參(can)數有點不同(tong) : CAST(xxx AS 類(lei)型) , CONVERT(xxx,類(lei)型) 
可用(yong)的類(lei)型  
二進制(zhi),同(tong)帶binary前綴的效果 : BINARY 
字符型,可帶參(can)數 : CHAR() 
日期 : DATE 
時間: TIME 
日期時間型 : DATETIME 
浮點數 : DECIMAL 
整數 : SIGNED 
無符號(hao)整數 : UNSIGNED 
11)如(ru)果從(cong)mysql數據(ju)庫中(zhong)取的時候沒有亂(luan)碼,而在Java的List中(zhong)得到的是亂(luan)碼的話,那麼可能是SQL語句中(zhong)的有字段不是 varchar的數據(ju)類(lei)型,這(zhe)時需要(yao)轉(zhuan)換convert(字段名(ming), 類(lei)型)轉(zhuan)換一下,Orcale則用(yong)ToChar函數 
12)Orcale的大字段用(yong)clob,圖像用(yong)blob,clob字段在Hibernate的映射文(wen)件中(zhong)用(yong)String就可以 
13) mysql,orcale,sqlserver 語句執(zhi)行順(shun)序 
開始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結果 
每個子句執(zhi)行後(hou)都會(hui)產生一個中(zhong)間結果 ,供接下來的子句使用(yong),如(ru)果不存在某個子句,就跳過。 
14) LPAD函數 
1在oracle的數據(ju)庫里有個函數 LPAD(String a,int length,String addString). 
2作用(yong)︰把addString添加到a的左(zuo)邊,length 是返回值dang)某chang)度。 
3例子 

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 注︰不寫最後(hou)一個參(can)數,函數會(hui)默認在返回值左(zuo)邊加一個空格。 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中(zhong)沒有TOP,是通過 
select * from (select * from A order by id desc) where rownum=1 
注︰不能直接寫 select * from A where rownum=1 order by id desc 因為(wei)語句執(zhi)行的順(shun)序是先where再order by ,如(ru)果這(zhe)樣(yang)寫就無法按id的排pan)蚶慈〉諞桓雋恕nbsp;
不能寫rownum=2或rownum>1這(zhe)樣(yang),因為(wei)Orcale 默認必須包含第一條。 
如(ru)果非(fei)要(yao)取第二條的話,可以寫成︰ 

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循環比較 
Orcale: 

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

也可以︰ 

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

mysql: 

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由于是在數據(ju)庫中(zhong)實(shi)現ID自增,所以如(ru)果想返回插入(ru)一條序列的該條ID,只能用(yong)如(ru)下lu)椒 nbsp;

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('失敗', e); } } 
  • 甘肃体彩网官网

About IT165 - 廣告(gao)服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿(gao) - 聯系方式
本(ben)站內容來自于互聯網,僅供用(yong)于網絡(luo)技術學習(xi),學習(xi)中(zhong)請遵循相關(guan)法律法規
甘肃体彩网官网 | 下一页