無論是windows系統,還是linux或AIX
你可以在實例用戶下,先鍵入 db2 這個命令,進入到db2命令行,然再執行creat database mydb
或者
你可以在系統命令行下直接執行
db2 create database mydb
或
db2 "create database mydb"
『貳』 DB2資料庫崩潰之後,用事務日誌恢復的原因是什麼
在系統崩潰之後,使用DB2的事務日誌恢復資料庫。 您曾多少次碰到過錯誤消息「SQL0946C The transaction log for the database is full?」
若沒有事務,多個用戶和應用程序同時與一個資料庫進行交互時就必然會破壞數據。而如果沒有事務日誌記錄,DB2 UDB中的一些據庫恢復方法就不會存在。
事務(也稱作工作單元)是指一個或多個SQL操作的序列,這些操作組合成一個單元且通常位於一個應用程序進程內。該單元通常稱作是「原子的」,因為它是不可分的——它的所有工作要麼全都執行,要麼全都不執行。一個給定的事務可以執行任何數目的SQL操作(從一個到幾千個,取決於業務邏輯里對於「一步」的定義)。
一個事務的開始和終止定義了資料庫里數據一致性的點;要麼將事務里所執行的所有操作的結果應用到資料庫上,並使之成為永久的(已提交),要麼將之都撤銷(回滾),使資料庫返回到啟動該事務之前的狀態。
事務是在建立到資料庫的連接之後第一次執行SQL語句時或在現有事務終止時立即啟動。一旦啟動,就可以使用名為原子提交的功能隱式地終止該事務。通過原子提交,會將每條可執行的SQL語句當作一個事務。如果該語句執行成功,那它所做的任何修改都將應用到資料庫上,但如果語句失敗,那修改將被丟棄。
還可以通過執行COMMIT或ROLLBACK SQL語句顯式地終止事務。
這些語句的基本語法是:COMMITROLLBACK在COMMIT終止事務時,會將該事務從開始時對資料庫所做的所有修改變成永久性的。使用ROLLBACK,所有修改都將撤銷。
事務所做的未提交的修改對其他用戶和應用程序來說是無法訪問的,除非那些用戶和應用程序使用的是未提交讀(UR)隔離。然而,一旦提交了事務所做的修改,它們對於所有其他用戶和應用程序來說就都是可以訪問的了,並且只能通過執行新事務中的新SQL語句來刪除。
事務日誌記錄
在向一個基表進行INSERT時,首先在緩沖池中創建一條記錄,該緩沖池與指定該表的數據存儲於何處的表空間相關聯。每次更新或刪除一條記錄時,就從存儲器中檢索包含該記錄的頁面,並復制到適當的緩沖池中,然後由UPDATE/DELETE進行修改。
一旦進行了這一修改,就會向日誌緩沖器寫入一條反映該動作的記錄,日誌緩沖器是內存中的另一指定存儲區(為日誌緩沖器預留的真正存儲大小是由logbufsiz資料庫配置參數控制的)。如果執行INSERT,就會寫入一條包含了新行數據值的記錄。當出現刪除時,就寫入一條包含了該行原始值的記錄。
如果執行UPDATE,就寫入一條包含了該行原始值和新值的記錄(在大多數情況下,通過用該行的更新值在原始值上執行EXCLUSIVE OR,為更新操作生成日誌記錄)。最終,當執行INSERT、UPDATE或DELETE的事務終止時,就將相應的COMMIT或ROLLBACK記錄寫入日誌緩沖器。
『叄』 sqlserver和DB2的區別
主要區別在於資料庫性能
SQL Server 屬於中型資料庫,主要應用於一般商用環境,處理百萬到千萬級數據量是沒有問題的,而DB2屬於大型資料庫,主要用於電信級或者數據中心級應用,可處理億級以上數據量。
另外SQL Server 只能運行在Windows 環境下,而DB2主要運行在UNIX或Linux環境下,因此 DB2性能總體優於SQL Server。
『肆』 DB2與SQL Server的區別
SQL Server是基於伺服器端的中型的資料庫,可以適合大容量數據的應用,在功能上管理上也要比Access要強得多。在處理海量數據的效率,後台開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標准SQL語言,兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程,資料庫大小無極限限制
DB2是IBM出口的一系列關系型資料庫管理系統,分別在不同的操作系統平台上服務。雖然DB2產品是基於UNIX的系統和個人計算機操作系統,在基於UNIX系統和微軟在windows系統下的Access方面,DB2追尋了ORACLE的資料庫產品。
這款新型數據伺服器率先實現了可擴展標記語言(XML)和關系數據間無縫交互,而無需考慮數據的格式、平台或位置。來自8個國家的750多名軟體開發人員為「Viper」的問世做出了努力,他們進行了精心設計和調試,力求將其打造成SOA環境下的首選信息引擎.? DB2 9取得了十項重大進步,包括已獲得專利的「pureXML」技術、突破性的「Venom」存儲壓縮以及增強的自動化數據管理能力等。
1、新的XML特性:
在無需重新定義XML數據的格式,或將其置於資料庫大型對象中的前提下,IBM DB2 9允許用戶無縫管理普通關系數據和純XML數據。此項能力是Viper所獨有的,它將有助於客戶增加其信息的實用性、速度和多功能性,同時大大降低與現有數據管理技術相關的管理成本。它還將顯著降低復雜性,並減少普通開發商創建「同時訪問關系數據和XML數據的應用」所花費的時間。
新的XML數據類型,允許客戶在分層的表格欄中存儲規范的XML文檔。
支持SQL語句及SQL/XML函數中的XML數據類型。
支持由萬維網聯盟(W3C)開發的新XQuery語言。IBM DB2 9允許客戶直接調用XQuery語言,調用功能可以從DB2表格與視圖中提取XML數據。
支持XML數據的檢索功能,提高了針對XML文檔的查詢效率。
為支持DB2的編程程序語言中的XML提供支持,允許應用整合對XML及關系型數據的訪問和存儲。
2、新的應用與開發特性:
對應用開發工具和原生XML數據存儲新特性的支持,允許應用訪問和存儲XML及相關數據。
DB2 Developer Workbench是一種綜合開發環境,可用於創建、編輯、調試、測試和部署DB2存儲流程和用戶自定義的功能。客戶還可以使用Developer Workbench開發SQL應用,創建、編輯和運行SQL語句與XML查詢。
面向JDBC和SQLJ的增強型DB2驅動程序符合JDBC 3.0規范,它還同時支持SQLJ語句。
SQLJ語句的功能特性與大多數JDBC方法相似。
此外,還包括其它重要特性:支持眾多新數據類型、DB2獨有的支持到面向z/OS? 數據伺服器IBM DB2 9版可靠連接的方式、異構組合、連接重用等。除支持Visual Studio 2005以外,還包括對Web服務的支持,對本地XML數據存儲的全面支持,以及無需編寫代碼就可以構建應用及Web站點的能力。增強型DB2 Runtime Client支持64位計算,還可在同一台計算機上與其它DB2產品共存。
3、新增自動資料庫管理功能:
適應性、自調式內存分配,通過不斷更新配置參數、調整緩沖池大小和動態分配可用的內存資源,幫助用戶簡化或排除DB2伺服器的配置工作。面向z/OS對象的DB2 UDB自動狀態檢測功能,允許客戶通過控制中心的創建和變更對象策略向導,使面向z/OS對象的DB2 UDB實現對象維護策略評估自動化。
自動存儲支持,可以自動擴充磁碟和文件系統中資料庫的大小,現在可用於多分區資料庫。
自動統計數據收集,創建新資料庫時會自動啟動。
根據DB2資料庫系統的環境特點,自動配置prefetchers進程與頁清潔器。
面向自動表格與索引重組的新策略選項,為資料庫管理員提供更多管理表格與索引重組的功能。
4、性能與可擴展性增強(存儲壓縮等):
利用數據行壓縮技術壓縮數據對象的功能,可以幫助客戶節省磁碟存儲空間,並加快數據訪問速度。
統計數據視圖,為改進查詢功能提供更出色的訪問計劃。
使用定製的腳本或程序加快數據載入速度。
增強型物化查詢表(MQT)可為設計MQT提供更強大地支持,更出色的查詢性能和更完善的MQT維護。
更大的記錄標識符(RID)允許每個對象擁有更多數據頁,系統中每頁擁有更多記錄,一方面為資料庫管理員使用系統和用戶的臨時表格提供了便利,另一方面也便於執行分類和登錄操作。
索引的關鍵字最多可達64組,大小可以擴充至8 KB。
5、新的安全特性與增強:
使用基於標簽的訪問控制(LBAC),改進行、列級別的數據訪問控制功能。
新安全管理器(SECADM)的授權級別,將若干個與安全性相關的優先權集中到一項優先權名下,提高了對於訪問信息資產的控制。
「創建資料庫」語句中新增的「限制」選項,增強了對進入資料庫的控制。
SETSESSIONUSER優先權加強了對擁有轉換會話用戶身份權力的人的控制。它允許掌握該項權力的人轉換為任何被賦予權利的授權ID。
TRANSFER OWNERSHIP SQL語句,提供了改變資料庫對象的歸屬權的能力。
6、使用表格分區改進大型資料庫管理:
表格分區是一種數據組織計劃,在該計劃中,表格數據根據多個表格列,被劃分到多個被稱為表格分區或范圍的存儲對象中。這些存儲對象可能存放在不同的表空間或相同的表空間中,或兩種情況兼而有之。此項新特性的優勢包括:
能夠創建非常大的表格。分區表格包含的數據遠遠超過了普通表格。將表格數據劃分到眾多存儲對象中,有助於顯著增加表格尺寸。
更靈活的管理能力。現在,客戶可以在個別數據分區中完成管理工作,將消耗時間的維護操作分成一系列小型操作。
更加精確地控制索引位置。客戶可以將索引放置在不同的表空間,分別對其進行管理。
快速、輕松地訪問數據或轉出數據。這一功能在數據倉庫環境中尤為有用,客戶經常在此環境中移入或移出數據,運行支持決策的查詢。
改進的查詢功能。通過表格分區分離數據,避免對不相關數據進行掃描,從而改進查詢處理的功能。
7、數據恢復增強:
重新啟動中斷的恢復操作,可以在資料庫恢復時節省寶貴的時間,同時簡化恢復工作。
支持重定向恢復操作,在現有備份鏡像中自動生成腳本。
能夠從表空間備份鏡像中重新構建資料庫。此項功能讓DB2的恢復更加靈活和多樣化,同時為客戶提供更全面的恢復解決方案。
8、自主管理性能增強:
使用適應性、自調內存分配簡化了內存管理。自調內存提供動態配置,能對工作負載特性的重大變化做出積極響應。
客戶創建資料庫時,自動統計數據收集功能會自動啟動。憑借自動統計數據收集,IBM DB2 9版自動在後台運行RUNSTATS實用程序,確保收集到正確的統計數據,並進行維護。
面向多分區資料庫的自動存儲支持。這一功能可以按照需求,自動擴大磁碟和文件系統中資料庫的容量。
ALTER TABLE語句增強允許客戶無需停止或重新創建表格,就可以改變部分表格的屬性。
新的策略選項為資料庫管理員提供了新的表格和索引自動重組功能。
可以拷貝資料庫計劃,創建模塊方案。一旦資料庫管理員創建了模塊方案,他們就可將其作為創建新視圖的模板。
新的管理SQL常式和視圖提供了基本、易用的可編程界面,便於藉助SQL來管理DB2。
動態快速通信管理器(FCM)緩沖和新的配置參數,可通過DB2資料庫管理器進行自動調節。
9、安裝性能增強:
新的CLI驅動程序(面向ODBC和CLI的IBM? DB2驅動程序),客戶可以在不安裝DB2客戶端軟體的情況下安裝此驅動程序。
更加靈活、有效的產品授權管理
可以在同一台計算機上安裝多個DB2版本和修補包。
新的響應文件關鍵字允許IT員工無需與最終用戶交互安裝DB2產品。
自動演進 — 從Stinger到Viper
基於第8.2版推出的增強功能,IBM DB2 9版中新的自動數據管理特性將繼續幫助提高資料庫管理員的生產效率和效用。
其中一些關鍵特性包括:
適應性、自調內存分配功能此項新功能通過不斷更新配置參數和重新調整緩沖池的大小,簡化或排除了DB2伺服器的配置工作。一旦啟動,該功能可在不同內存消耗點之間,動態分配可用的內存資源。在Windows和AIX? 操作系統中,自調內存功能也可以確定資料庫內存總體需求,並會自動調節資料庫共享內存。
面向 z/OS對象的DB2 UDB自動狀態監測功能 通過控制中心的創建和變更對象策略向導,客戶可以實現面向z/OS對象的DB2 UDB對象維護策略評估的自動化,從而可使其按照預定次數和時間間隔運行。對創建了策略警報的對象而言,警報通知會發送至對象維護策略指定的狀況警報聯系處。
自動存儲支持 自動存儲可以自動擴大磁碟與文件系統中資料庫的容量。它消除了對管理存儲器的需求,同時利用了資料庫管理存儲的性能和靈活性。在IBM DB2 9版中,已經添加了面向多分區資料庫的自動存儲功能。此外,在創建新資料庫時,自動存儲會自動啟動。
自動統計數據收集 在IBM DB2 9版中,當創建新資料庫時,使用RUNSTATS命令的自動統計數據收集功能會自動啟動。必要時,DB2伺服器會在後台處理中收集數據的統計信息。
DB2優化器(DB2 optimizer)利用這些信息對資料庫中的信息最有效地恢復。
prefetchers進程和頁清潔器的自動配置 在IBM DB2 9版中,prefetchers進程與頁清潔器的數量可由DB2資料庫系統根據某些環境特性,如CPU的數量、資料庫分區的數量和資料庫表空間的並行設置,自動確定。
表格與索引自動重組功能增強 表格與索引重組的新策略選項,為資料庫管理員提供了更豐富的表格與索引重組管理功能。
『伍』 oracle和SQL SERVER以及DB2之間的區別
開放性:
SQL Server
只能在windows 上運行,沒有絲毫的開放性,操作系統的系統的穩定對資料庫是十分重要的。Windows9X系列產品是偏重於桌面應用,NT server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大數據量的關鍵業務時.
Oracle
能在所有主流平台上運行(包括 windows)。完全支持所有的工業標准。採用完全開放策略。可以使客戶選擇最適合的解決方案。對開發商全力支持。
DB2
能在所有主流平台上運行(包括windows)。最適於海量數據。DB2在企業級的應用最為廣泛,在全球的500家最大的企業中,幾乎85%以上用DB2資料庫伺服器,而國內到97年約佔5%.
可伸縮性,並行性
SQL server
並行實施和共存模型並不成熟。很難處理日益增多的用戶數和數據卷。伸縮性有限。
Oracle
平行伺服器通過使一組結點共享同一簇中的工作來擴展windownt的能力,提供高可用性和高伸縮性的簇的解決方案。
如果windowsNT不能滿足需要, 用戶可以把資料庫移到UNIX中。
DB2
DB2具有很好的並行性。DB2把資料庫管理擴充到了並行的、多節點的環境.
資料庫分區是資料庫的一部分,包含自己的數據、索引、配置文件、和事務日
志。資料庫分區有時被稱為節點或資料庫節點
安全性
SQL server
沒有獲得任何安全證書。
Oracle Server
獲得最高認證級別的ISO標准認證。
DB2
獲得最高認證級別的ISO標准認證。
性能
SQL Server
多用戶時性能不佳
Oracle
性能最高, 保持windowsNT下的TPC-D和TPC-C的世界記錄。
DB2
適用於數據倉庫和在線事物處理性能較高。
客戶端支持及應用模式
SQL Server
C/S結構,只支持windows客戶,可以用ADO,DAO,OLEDB,ODBC連接.
Oracle
多層次網路計算,支持多種工業標准,可以用ODBC,JDBC,OCI等網路客戶連接
DB2
跨平台,多層結構,支持ODBC,JDBC等客戶
操作簡便性
SQL Server
操作簡單,但只有圖形界面.
Oracle
較復雜, 同時提供GUI和命令行,在windowsNT和unix下操作相同
DB2
操作簡單,同時提供GUI和命令行,在windowsNT和unix下操作相同
使用風險性
SQL server
完全重寫的代碼,經歷了長期的測試,不斷延遲,許多功能需要時間來證明。並不十分兼容早期產品。使用需要冒一定風險。
Oracle
長時間的開發經驗,完全向下兼容。得到廣泛的應用。完全沒有風險。
DB2
在巨型企業得到廣泛的應用,向下兼容性好。風險小。
『陸』 DB2和其他資料庫在一些SQL語法上的區別
Access是一種桌面資料庫,只適合數據量少的應用,在處理少量數據和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問客戶端不能多於4個。access資料庫有一定的極限,如果數據達到100M左右,很容易造成伺服器iis假死,或者消耗掉伺服器的內存導致伺服器崩潰。
SQL Server是基於伺服器端的中型的資料庫,可以適合大容量數據的應用,在功能上管理上也要比Access要強得多。在處理海量數據的效率,後台開發的靈活性,可擴展性等方面強大。因為現在資料庫都使用標準的SQL語言對資料庫進行管理,所以如果是標准SQL語言,兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程,資料庫大小無極限限制。
mysql2000和sql2000資料庫的區別
1.根本的區別是它們遵循的基本原則
二者所遵循的基本原則是它們的主要區別:開放vs保守。SQL伺服器的狹隘的,保守的存儲引擎與MySQL伺服器的可擴展,開放的存儲引擎絕然不同。雖然你可以使用SQL伺服器的Sybase引擎,但MySQL能夠提供更多種的選擇,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的關鍵詞,所以它比SQL伺服器要少一些相關的資料庫。同時,MySQL也缺乏一些存儲程序的功能,比如MyISAM引擎聯支持交換功能。
2.性能:先進的MySQL
純粹就性能而言,MySQL是相當出色的,因為它包含一個預設桌面格式MyISAM。MyISAM 資料庫與磁碟非常地兼容而不佔用過多的CPU和內存。MySQL可以運行於Windows系統而不會發生沖突,在UNIX或類似UNIX系統上運行則更好。你還可以通過使用64位處理器來獲取額外的一些性能。因為MySQL在內部里很多時候都使用64位的整數處理。Yahoo!商業網站就使用MySQL作為後台資料庫。
當提及軟體的性能,SQL伺服器的穩定性要比它的競爭對手強很多。但是,這些特性也要付出代價的。比如,必須增加額外復雜操作,磁碟存儲,內存損耗等等。如果你的硬體和軟體不能充分支持SQL伺服器,我建議你最好選擇其他如DBMS資料庫,因為這樣你會得到更好的結果。
3.發行費用:MySQL不全是免費,但很便宜
當提及發行的費用,這兩個產品採用兩種絕然不同的決策。對於SQL伺服器,獲取一個免費的開發費用最常的方式是購買微軟的Office或者Visual Studio的費用。但是,如果你想用於商業產品的開發,你必須還要購買SQL Server Standard Edition。學校或非贏利的企業可以不考慮這一附加的費用。
4.安全功能
MySQL有一個用於改變數據的二進制日誌。因為它是二進制,這一日誌能夠快速地從主機上復制數據到客戶機上。即使伺服器崩潰,這一二進制日誌也會保持完整,而且復制的部分也不會受到損壞。
在SQL伺服器中,你也可以記錄SQL的有關查詢,但這需要付出很高的代價。
安全性
這兩個產品都有自己完整的安全機制。只要你遵循這些安全機制,一般程序都不會出現什麼問題。這兩者都使用預設的IP埠,但是有時候很不幸,這些IP也會被一些黑客闖入。當然,你也可以自己設置這些IP埠。
恢復性:先進的SQL伺服器
恢復性也是MySQL的一個特點,這主要表現在MyISAM配置中。這種方式有它固有的缺欠,如果你不慎損壞資料庫,結果可能會導致所有的數據丟失。然而,對於SQL伺服器而言就表現得很穩鍵。SQL伺服器能夠時刻監測數據交換點並能夠把資料庫損壞的過程保存下來。
Oracle和SQL Server之間的區別,已經有很多篇文章從企業的角度和資料庫管理員的角度出發描寫了兩者之間的一般差別。在這篇文章裡面,我將會從應用程序的角度向你描述SQL erver 和oracle平台之間的區別,並且將會討論開發不依賴於資料庫環境的應用程序的幾種可能的方法。與此同時,我不會再論討對於應用程序來說,兩個平台之間顯而易見的區別,例如表的分割和索引。
定義通用介面和語言有很少的幾種通用語言和介面可以讓應用程序不依賴於資料庫,想來也可以以同樣的方式應用在關系型資料庫上面: ANSI是美國國家標准局定義的,這是一家志願者成員的組織(用私人基金運轉),他們在有關設備和程序等廣泛領域內開發了國家承認的標准。在資料庫領域,ANSI定義了編寫SQL命令的標准,假設命令可以運行在任何的資料庫上,而不需要更改命令的語法。ODBC是開放資料庫連接(ODBC)介面,微軟定義的,它可以讓應用程序訪問資料庫管理系統(DBMS)中的數據,使用SQL作為訪問數據的標准。ODBC允許最大的互聯性,這意味著一個單個的應用程序可以訪問不同的資料庫管理系統。然後,應用程序終端用戶可以添加開放資料庫連接(ODBC)資料庫驅動來將應用程序與他們所選擇的資料庫管理系統鏈接上。 OLE DB是ODBC的繼承者,是一組允許例如基於VB、C++、Access等任何可以連接到類似SQL Server、Oracle、DB2、MySQL等後台的「前台」的軟體組件。在許多種情況下,OLE DB組件都比原有的ODBC提供了好得多的性能。 JDBC(Java資料庫連接)應用程序介面是Java編程語言和廣泛范圍的資料庫,SQL資料庫和其他表列數據源(例如電子表格或者普通文本文件)之間,進行不依賴於資料庫的連接的行業標准。JDBD應用程序介面為基於SQL的資料庫訪問提供了調用級別的應用程序介面。真實世界中的通用介面不幸的是,並不是所有資料庫級別的命令都是ANSI,每個資料庫平台都有自己的擴展功能。對於ANSI或者通用介面,一般來說都代表著幾本功能,因此也可能意味著喪失了性能方面的競爭力。對於小型資料庫和小型應用程序來說,要維護對資料庫的通用訪問是簡單的,但是當資料庫和/或應用程序變得越來越大,越來越復雜,你就不得不向代碼中添加功能。
SQL Server和Oracle的常用函數對比
---------數學函數
1.絕對值
S:select abs(-1) value
O:select abs(-1) value from al
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from al
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from al
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from al
5.四捨五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from al 1.2346
6.e為底的冪
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from al 2.71828182
7.取e為底的對數
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from al; 1
8.取10為底對數
S:select log10(10) value 1
O:select log(10,10) value from al; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from al 16
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from al 2
11.求任意數為底的冪
S:select power(3,4) value 81
O:select power(3,4) value from al 81
12.取隨機數
S:select rand() value
O:select sys.dbms_random.value(0,1) value from al;
13.取符號
S:select sign(-8) value -1
O:select sign(-8) value from al -1
----------三角函數相關
14.圓周率
S:SELECT PI() value 3.1415926535897931
O:不知道
15.sin,cos,tan 參數都以弧度為單位
例如:select sin(PI()/2) value 得到1(SQLServer)
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互換(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------數值間比較
18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select greatest(1,-2,4,3) value from al
19. 求集合最小值
S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select least(1,-2,4,3) value from al
20.如何處理null值(F2中的null以10代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
--------字元串函數
21.求字元序號
S:select ascii('a') value
O:select ascii('a') value from al
22.從序號求字元
S:select char(97) value
O:select chr(97) value from al
23.連接
S:select '11'+'22'+'33' value
O:select CONCAT('11','22')||33 value from al
23.子串位置 --返回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from al
23.模糊子串的位置 --返回2,參數去掉中間%則返回7
// 本文轉自 C++Builder 研究 - [url][/url]
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle沒發現,但是instr可以通過第四個參數控制出現次數
select INSTR('sdsfasdqe','sd',1,2) value from al 返回6
24.求子串
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from al
25.子串代替 返回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from al
26.子串全部替換
S:Replace
O:select Translate('fasdbfasegas','fa','我' ) value from al
27.長度
S:len,datalength
O:length
28.大小寫轉換 lower,upper
29.單詞首字母大寫
S:沒發現
O:select INITCAP('abcd dsaf df') value from al
30.左補空格(LPAD的第一個參數為空格則同space函數)
S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from al
31.右補空格(RPAD的第一個參數為空格則同space函數)
S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from al
32.刪除空格
S:ltrim,rtrim
O:ltrim,rtrim,trim
33. 重復字元串
S:select REPLICATE('abcd',2) value
O:沒發現
34.發音相似性比較(這兩個單詞返回值一樣,發音相同)
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from al
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差
返回0-4,4為同音,1最高
--------------日期函數
35.系統時間
S:select getdate() value
O:select sysdate value from al
36.前後幾日
直接與整數相加減
37.求日期
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from al
select to_char(sysdate,'yyyy-mm-dd') value from al
38.求時間
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from al
39.取日期時間的其他部分
S:DATEPART 和 DATENAME 函數 (第一個參數決定)
O:to_char函數 第二個參數決定
參數---------------------------------下表需要補充
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O無效)
dayofyear dy, y (O表星期)
day dd, d (d O無效)
week wk, ww (wk O無效)
weekday dw (O不清楚)
Hour hh,hh12,hh24 (hh12,hh24 S無效)
minute mi, n (n O無效)
second ss, s (s O無效)
millisecond ms (O無效)
----------------------------------------------
40.當月最後一天
S:不知道
O:select LAST_DAY(sysdate) value from al
41.本星期的某一天(比如星期日)
S:不知道
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
42.字元串轉時間
S:可以直接轉或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
43.求兩日期某一部分的差(比如秒)
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用兩個日期相減(比如d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
44.根據差值求新的日期(比如分鍾)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
45.求不同時區時間
S:不知道
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
-----時區參數,北京在東8區應該是Ydt-------
AST ADT 大西洋標准時間
BST BDT 白令海標准時間
CST CDT 中部標准時間
EST EDT 東部標准時間
GMT 格林尼治標准時間
HST HDT 阿拉斯加—夏威夷標准時間
MST MDT 山區標准時間
NST 紐芬蘭標准時間
PST PDT 太平洋標准時間
YST YDT YUKON標准時間
Oracle支持的字元函數和它們的Microsoft SQL Server等價函數:
函數 Oracle Microsoft SQL Server
把字元轉換為ASCII ASCII ASCII
字串連接 CONCAT (expression + expression)
把ASCII轉換為字元 CHR CHAR
返回字元串中的開始字元(左起) INSTR CHARINDEX
把字元轉換為小寫 LOWER LOWER
把字元轉換為大寫 UPPER UPPER
填充字元串的左邊 LPAD N/A
清除開始的空白 LTRIM LTRIM
清除尾部的空白 RTRIM RTRIM
字元串中的起始模式(pattern) INSTR PATINDEX
多次重復字元串 RPAD REPLICATE
字元串的語音表示 SOUNDEX SOUNDEX
重復空格的字串 RPAD SPACE
從數字數據轉換為字元數據 TO_CHAR STR
子串 SUBSTR SUBSTRING
替換字元 REPLACE STUFF
將字串中的每個詞首字母大寫 INITCAP N/A
翻譯字元串 TRANSLATE N/A
字元串長度 LENGTH DATELENGTH or LEN
列表中最大的字元串 GREATEST N/A
列表中最小的字元串 LEAST N/A
如果為NULL則轉換字串 NVL ISNULL
日期函數
函數 Oracle Microsoft SQL Server
日期相加 (date column +/- value) or
ADD_MONTHS DATEADD
兩個日期的差 (date column +/- value) or
MONTHS_BETWEEN DATEDIFF
當前日期和時間 SYSDATE GETDATE()
一個月的最後一天 LAST_DAY N/A
時區轉換 NEW_TIME N/A
日期後的第一個周日 NEXT_DAY N/A
代表日期的字元串 TO_CHAR DATENAME
代表日期的整數 TO_NUMBER
(TO_CHAR)) DATEPART
日期舍入 ROUND CONVERT
日期截斷 TRUNC CONVERT
字元串轉換為日期 TO_DATE CONVERT
如果為NULL則轉換日期 NVL ISNULL
轉換函數
函數 Oracle Microsoft SQL Server
數字轉換為字元 TO_CHAR CONVERT
字元轉換為數字 TO_NUMBER CONVERT
日期轉換為字元 TO_CHAR CONVERT
字元轉換為日期 TO_DATE CONVERT
16進制轉換為2進制 HEX_TO_RAW CONVERT
2進制轉換為16進制 RAW_TO_HEX CONVERT
其它行級別的函數
函數 Oracle Microsoft SQL Server
返回第一個非空表達式 DECODE COALESCE
當前序列值 CURRVAL N/A
下一個序列值 NEXTVAL N/A
如果exp1 = exp2, 返回null DECODE NULLIF
用戶登錄賬號ID數字 UID SUSER_ID
用戶登錄名 USER SUSER_NAME
用戶資料庫ID數字 UID USER_ID
用戶資料庫名 USER USER_NAME
當前用戶 CURRENT_USER CURRENT_USER
用戶環境(audit trail) USERENV N/A
在CONNECT BY子句中的級別 LEVEL N/A
合計函數
函數 Oracle Microsoft SQL Server
Average AVG AVG
Count COUNT COUNT
Maximum MAX MAX
Minimum MIN MIN
Standard deviation STDDEV STDEV or STDEVP
Summation SUM SUM
Variance VARIANCE VAR or VARP
Oracle還有一個有用的函數EXTRACT,提取並且返回日期時間或時間間隔表達式中特定的時間域:
EXTRACT(YEAR FROM 日期)
『柒』 db2怎麼刪除資料庫的事務日誌
如要清除日誌,o,刪掉不就行了,找到log文件後直接刪除
log 的存放路徑用下邊的命令查看:
db2 get db cfg for dbname
其中有Path to log files 一行顯示了log 的存放路徑
『捌』 DB2問題,程序運行時不定時出現以下sql報錯問題!
-911錯誤有兩種可能:
一、死鎖
二、超時
從你使用事務上來看,請檢查你的事務是否提交;如果有提交,那麼如果採用多重並發事務操作的時候,且在程序要返回結果集的時候,建議你將事務做簡單的操作,而不是大量數據操作,等待反饋結果。這樣的話,用戶可能會失去耐心,從而加快更多的進程進行並發操作,增加並發事務量。
根據你的情況,給你如下建議:
一、根據你的需求,將反饋結果,進行小時更新或日更新;
二、根據你的實際況情,優化事務SQL語句;盡量採用中間表(沒辦法,DB2的數據特性)
三、延長超時設置
四、跟蹤你的事務,保證事物完整性提交,盡可能減少死鎖。
死鎖分析方法:
用實例用戶連接到db2實例,切換到死鎖監視器路徑下,運行db2evmon -path xxx >lock_rpt.txt來生成報告