derby數據庫基礎

經典sql語句大全:點擊打開鏈接


一、Derby數據庫簡介

1、Derby的發展史及特性概述

        Derby是一個開源的,100%由Java開發的關係數據庫,隨着Java平臺的普及Derby也收到了越來越多的關注。Derby的前身是美國IBM公司的ColudScape。2004年4月,IBM公司將CloudScape的數據庫捐獻給了Apache軟件基金會,並將其更名爲Derby,接着SUN也爲Derby捐獻了一個團隊。不同的是,在JavaSE6.0中,SUN將其命名爲JavaDB。因此,CloudScape、Derby和JavaDB只是該項目在不同時期的不同名稱而已。

        一提起關係數據庫,總會讓人覺得安裝煩瑣,空間佔用很大。然而Derby卻不是這樣,不用安裝,可以直接使用。同時,附帶的Derby也只佔用了JavaSE6.0中不到10MB的空間。千萬不要認爲Derby的功能會很弱,其全部支持SQL92標準以及許多SQL99的擴展,並且提供了事務、崩潰恢復、併發連接等大型數據庫的特性,管理幾十GB的數據時依然輕鬆自如,速度很快。

        同時,由於Derby是由純java開發的,因此也與生俱來具有了java的跨平臺性,可以很好地工作在各種操作系統上。另外,derby不但可以像傳統數據庫那樣以C/S的方式工作,也支持嵌入式的工作方式。

2、JavaSE 6.0 中derby的目錄結構

       默認是安裝路徑

"lib"目錄中的幾個jar文件

derby.jar--------包含了一些使用derby數據庫時的所必須類,例如derby數據庫的JDBC驅動類。

derbytools.jar-提供了一些實用derby數據庫的工具,例如用來管理derby數據庫的命令行工具。

derbyclient.jar-提供了一些開發derby數據客戶端所必須的類,通過使用該jar包中的類, 可以開發出對網絡模式下derby數據庫服務器訪問的客戶端程序。

derbynet.jar----爲網絡模式下的derby數據庫服務器提供支持的類。

二、管理工具ij

        一般情況下每種數據庫系統都會提供管理工具,如mysql的命令行客戶端,oracle的sql*plus等。derby也不例外,專門提供了一個功能非常強大的命令行工具----ij。

1、準備工作

        使用該工具之前,首先需要做一些準備工作,主要是將ij工具需要的jar包路勁添加進classpath環境變量,以及設置一個名稱爲DERBY_INSTALL的環境變量,步驟如下:

①修改/增加classpath環境變量(我這裏是用戶環境變量)

       變量名:classpath

       變量值:C:\Program Files\Sun\JavaDB\lib\derbytools.jar;C:\Program Files\Sun\JavaDB\lib\derby.jar

       如果是修改classpath環境變量,不要忘記加分號。

       提示:根據自己機器中java db的安裝情況進行設置。

②增加DERBY_INSTALL環境變量

       變量名:DERBY_INSTALL

       變量值:C:\Program Files\Sun\JavaDB

       提示:根據自己機器中java db的安裝情況進行設置。

      完成了上述步驟後,就完成了使用ij命令行工具的準備工作。爲了驗證準備工作成功,ij能夠正常工作,在命令行提示符窗口(cmd)中輸入如下命令

      java org.apache.derby.tools.sysinfo

      如果準備工作的設置沒有問題,cmd中會顯示java系統的很多信息,如下圖所示


2、簡單使用

        ij是derby自帶的一個功能強大的數據庫管理工具,可以進行很多數據庫管理的操作,包括創建數據庫,啓動/關閉數據庫,執行SQL腳本等。完成準備工作後,就可以啓動並使用ij工具了。在cmd中輸入如下命令啓動ij工具,java org.apache.derby.tools.ij運行情況如下圖所示:

下面分別介紹幾個常用的ij命令,如下所列:

①創建以及連接數據庫

使用ij創建以及連接指定數據庫命令命令的語法格式如下:

connect 'jdbc:derby:<數據庫路徑>[;create=True/False]';

        數據庫路勁指的是指定數據庫在磁盤上存放的位置,例如“E:\roway”。另外,路徑也可以使用相對路徑,例如"roway",此路徑表示當前執行目錄下的roway子目錄,若當前執行目錄爲“E:\”則實景路徑爲“E:\roway”。

       方括號的內容是可選的,也就是說可以不寫,若不寫相當於"create=False"。"create=False"表示僅連接已經存在的數據庫,而"create=True"表示若數據庫不存在則創建數據庫。

       提示:上面介紹的連接和創建數據庫的命令,是用於derby的嵌入式工作模式的,用於網絡情況下的命令將在後面介紹。

例如,下面給出了一個在E盤下roway目錄中創建數據庫的命令

        connect 'jdbc:derby:e:/roway;create=True';

完成了數據庫的創建和連接後,就可以使用其他命令或運行SQL腳本對數據庫進行操作了。

        說明:第一次不存在數據庫的時候使用"create=True"參數來創建並連接數據庫,以後就可以使用"create=False"參數僅連接數據庫了。

②運行SQL語句


③運行SQL腳本

       上面介紹了在ij中直接輸入執行SQL語句,在操作簡單的情況下很好用,如果操作複雜直接進行輸入就很不方便了。因此,ij中還允許用戶使用run命令執行指定的SQL腳本,基本命令格式如下:

        run '<SQL腳本文件的路徑>';

在文本編輯器中輸入如下SQL腳本,並保存爲derby.sql腳本文件,例如“E:/derby.sql”.

  1. create table students(  
  2.   id  numeric(20),  
  3.   name  varchar(30),  
  4.   age   numeric(6)  
  5. );  
  6. insert into students values(10001,'Aa',10);  
  7. insert into students values(10002,'Bb',20);  
  8. insert into students values(10003,'Cc',30);  
  9. select * from students;  
連接前面創建的數據庫,並使用run命令執行"derby.sql"腳本文件,執行情況如下圖所示:

④其他常用命令

除了前面介紹的幾種比較重要的命令外,還有一些其他常用的命令,例如關閉數據庫連接等,

        disconnect;-----------------------斷開數據庫連接

        Exit;---------------------------------退出ij 工具

三、Derby數據庫的嵌入式應用

1、嵌入式derby的工作原理

        在嵌入式工作模式中訪問derby數據庫的java應用程序與derby的數據庫引擎工作在同一個JVM中,不像別的數據庫(如oracle)的數據庫連接時連接到JVM之外的數據庫引擎中。這樣做的優點是,省去了數據庫軟件的安裝、數據源的配置等步驟,隨着java應用程序的啓動數據庫也啓動工作,特別適合進行單機小軟件或測試程序的開發。

        但需要注意的是,嵌入式工作模式中應用程序訪問數據庫的連接是專有的,這就意味着其他應用程序不可能在同一時刻訪問該數據庫。

2、嵌入式derby應用的開發步驟

       進行嵌入式derby應用的開發,與通常的JDBC數據庫開發並沒有很大的區別,基本步驟還是加載數據庫驅動、創建數據庫連接、通過連接操作數據庫,只是在細節稍有不同。

①加載數據庫驅動

    需要連接的是derby數據庫,需要加載derby數據庫的jdbc驅動類,位於"lib"目錄下的derby.jar文件中。在運行程序時需要將derby.jar文件的路徑添加到classpath路徑中。

[java] view plaincopy
  1. //加載嵌入式derby的JDBC驅動類  
  2. Class.forName("org.apache.derby.jdbc.EmbeddedDriver");  
說明:網絡模式derby的jdbc驅動類不是這個,在後面會介紹。

②數據庫連接字符串

        成功地加載了數據庫驅動類之後可以通過連接字符串來獲取數據庫連接了,下面給出了連接字符串的基本格式:

        jdbc:derby:<數據庫路徑>[;create=True/False]

        另外,要注意的是由於介紹的derby工作在嵌入式模式,因此在應用程序退出之前應該關閉數據庫。關閉嵌入式的derby數據庫也是使用連接字符串,下面給出了語法格式。

        jdbc:derby:;shutdown=True

[java] view plaincopy
  1. //連接指定的derby數據庫  
  2. Connection conn = DriverManager.getConnection("jdbc:derby:e:/roway;create=False","","");  
  3. //關閉已經連接的數據庫  
  4. DriverManager.getConnection("jdbc:derby:;shutdown=True");  
提示:在關閉數據庫成功後,getConnection()方法將拋出異常來進行通知。

③操作數據庫

        對derby數據庫進行操作所採用的代碼和訪問其他數據庫的完全相同,也是使用通過數據庫連接獲取的Statement或PreparedStatement來執行指定的SQL語句。

        說明:從上述3個步驟的介紹中額可以看出,以嵌入式方式訪問derby數據庫與訪問其他數據庫基本相同,想把使用其他數據庫的應用移植到derby上市非常容易的。

3、使用嵌入式derby的簡單案例

       提示:使用嵌入式derby數據庫進行開發和使用其他數據庫從編寫代碼的角度沒有太大的不同,但省去了安裝與配置數據庫的麻煩,這在特定的情況下將非常有用。

四、Derby數據庫的網絡模式應用

        derby數據庫不但可以通過嵌入式模式工作,與其他的數據庫相同,也可以工作在網絡模式下同時爲多個應用程序服務,處理來自不同JVM的數據庫操作請求。

1、網絡模式derby的工作原理

        如果使用過其他的一些大型數據庫,例如oracle、db2等,那麼應該對數據庫的網絡工作模式(c/s模式)的原理相當熟悉。

        在這種模式下derby與其他數據庫一樣作爲一個獨立的服務器工作在網絡上,等待來自其他java應用程序的連接請求。這種模式中derby可以同時爲不同的java應用程序服務,處理來自不同JVM的數據庫操作請求,也就是說同一時刻可以有多個應用程序訪問同一個derby數據庫。

        說明:當不適合採用嵌入式進行操作時,例如應用程序與數據庫不在同一臺機器上,或者數據庫需要多用戶併發訪問時,就可以採用網絡模式的的derby。

2、操作網絡模式的derby

        接下來介紹如何對網絡模式下的derby進行操作,主要包括以網絡模式啓動derby以及使用ij工具連接網絡模式的derby。

①以網絡模式啓動derby

        使用網絡模式操作derby數據庫前,首先要以網絡模式啓動derby數據庫服務器,下面給出了啓動命令的基本格式:

        java org.apache.derby.drda.NetworkServerControl start [-h <host> [-p <port>]]

        NetworkServerControl是系統提供的一個用於啓動derby服務器的類,位於derbynet.jar文件中。因此需要將derbynet.jar文件路徑添加到系統的classpath環境變量中。

        方括號中爲可選參數,"-h <host>"用來指定主機,"-p <port>"用來指定端口號,默認的主機爲localhost,默認的端口號爲1527。

        例如,下面給出了一個啓動derby數據庫服務器工作在本機1527端口的命令。

        java org.apache.derby.drda.NetworkServerControl start -h localhost -p 1572

        當成功啓動derby數據庫的網絡服務後,可以從網路中的其他機器或本機來對該機器中的derby數據庫進行操作了。需要特別注意的是,在執行網路操作的過程中,cmd窗口不能關閉,一旦關閉則將斷開網路服務。

②使用ij工具連接網絡模式的derby

        當derby數據庫的網路服務啓動後,可以使用ij工具進行連接和操作,下面給出了ij中連接網絡模式derby的名稱格式。

        connect 'jdbc:derby://<服務器主機地址>:<服務器端口號>/<數據庫路徑>[;create=True|False]';

        提示:使用上述命令連接derby數據庫服務器之前首先需要將derbyclient.jar文件路徑添加到系統的classpath環境變量中,例如,下面的命令連接上了上面啓動的derby數據庫服務。

         connect  'jdbc:derby://localhost:1572/E:/roway';

        如果上述命令在ij中成功執行,則與指定數據庫的連接成功建立,接着就可以使用各種命令對所連接的數據庫進行操作了。對網絡derby數據庫進行操作的命令與嵌入式derby完全相同。

3、開發啓動derby網絡服務的程序

       實際應用中,不但可以通過前面介紹的命令來啓動的derby數據庫的網路服務,也可以通過自己開發的java程序來啓動derby數據庫的網絡服務。

       從前面的介紹中可以發現,通過命令啓動derby數據庫的網絡服務需要使用org.apache.derby.drda.NetworkServerControl類。同樣,自己開發程序啓動derby數據庫的網絡服務也需要使用這個類,有興趣的可以自行查閱API。

4、使用網絡模式derby的簡單案例

      客戶端連接網絡derby服務器需要的JDBC驅動類org.apache.derby.jdbc.ClientDriver


轉自:http://blog.csdn.net/weiluo12/article/details/8504069

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章