1. 程式人生 > >java總結(ORACLE資料庫&jdbc&Mysql)

java總結(ORACLE資料庫&jdbc&Mysql)

不間斷更新。。。。

Oracle資料庫概述

Oracle是著名的Oracle(甲骨文)公司的資料庫產品

·Oracle是世界上第一個商品化的關係型資料庫管理系統

·Oracle採用標準SQL(結構化查詢語言),支援多種數

據型別,提供面向物件的資料支援,具有第四代語言開

發工具,支援UNIX、WINDOWS、OS/2等多種平臺

Oracle公司的產品豐富,包括Oracle伺服器、Oracle開

發工具和Oracle應用軟體。其中最著名的就是Oracle數

據庫.



1、簡述結構化查詢語言的分類?
答:結構化查詢語言可分為:
資料定義語言DDL:Data Definition Language
資料操縱語言DML:Data Manipulation Language
事務控制語言TCL:Data Transaction Language
資料查詢語言DQL:Data Query Language
資料控制語言DCL:Data Control Language

2、Oracle是怎樣實現分頁的?MySQL是如何實現分頁的 
Oracle中使用rownum來進行分頁, 這個是效率最好的分頁方法,hibernate也是使用rownum來進行oralce分頁的 
select * from 
  ( select rownum r,a from tabName where rownum <= 20 ) 
where r > 10 
MySQL是通過limit實現分頁的
select * from tabName limit 10,20


3、怎樣建立一個檢視,檢視的好處? 
create view 檢視名 as select 列名 [別名]  …  from 表 [unio [all] select … ] ] 
好處: 
1. 可以簡單的將檢視理解為sql查詢語句,檢視最大的好處是不佔系統空間 
2. 一些安全性很高的系統,不會公佈系統的表結構,可能會使用檢視將一些敏感資訊過慮或者重新命名後公佈結構 
3. 簡化查詢 


4、什麼是JDBC?
JDBC是允許使用者在不同資料庫之間做選擇的一個抽象層。JDBC允許開發者用JAVA寫資料庫應用程式,而不需要關心底層特定資料庫的細節。


5、解釋下驅動(Driver)在JDBC中的角色。
JDBC驅動提供了特定廠商對JDBC API介面類的實現,驅動必須要提供java.sql包下面這些類的實現:Connection, Statement, PreparedStatement,CallableStatement, ResultSet和Driver。


6、闡述JDBC操作資料庫的步驟。
答:下面的程式碼以連線本機的Oracle資料庫為例,演示JDBC操作資料庫的步驟。
載入驅動。
Class.forName("oracle.jdbc.driver.OracleDriver");
建立連線。
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
建立語句。
PreparedStatement ps = con.prepareStatement("select * from emp where sal between ? and ?");
ps.setInt(1, 1000);
ps.setInt(2, 3000);
執行語句。
ResultSet rs = ps.executeQuery();
處理結果。
while(rs.next()) {
    System.out.println(rs.getInt("empno") + " - " + rs.getString("ename"));
}
關閉資源。
finally {
    if(con != null) {
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


7、Statement和PreparedStatement有什麼區別?哪個效能更好?
答:與Statement相比,
①PreparedStatement介面代表預編譯的語句,它主要的優勢在於可以減少SQL的編譯錯誤並增加SQL的安全性(減少SQL注射攻擊的可能性);
②PreparedStatement中的SQL語句是可以帶引數的,避免了用字串連線拼接SQL語句的麻煩和不安全;
③當批量處理SQL或頻繁執行相同的查詢時,PreparedStatement有明顯的效能上的優勢,由於資料庫可以將編譯優化後的SQL語句快取起來,下次執行相同結構的語句時就會很快(不用再次編譯和生成執行計劃)。


8、使用JDBC操作資料庫時,如何提升讀取資料的效能?如何提升更新資料的效能?
答:要提升讀取資料的效能,可以指定通過結果集(ResultSet)物件的setFetchSize()方法指定每次抓取的記錄數(典型的空間換時間策略);要提升更新資料的效能可以使用PreparedStatement語句構建批處理,將若干SQL語句置於一個批處理中執行。


9、資料庫連線池是什麼意思?
像開啟關閉資料庫連線這種和資料庫的互動可能是很費時的,尤其是當客戶端數量增加的時候,會消耗大量的資源,成本是非常高的。可以在應用伺服器啟動的時候建立很多個數據庫連線並維護在一個池中。連線請求由池中的連線提供。在連線使用完畢以後,把連線歸還到池中,以用於滿足將來更多的請求。


10、什麼是DAO模式?
答:DAO(Data Access Object)顧名思義是一個為資料庫或其他持久化機制提供了抽象介面的物件,在不暴露底層持久化方案實現細節的前提下提供了各種資料訪問操作。
在實際的開發中,應該將所有對資料來源的訪問操作進行抽象化後封裝在一個公共API中。用程式設計語言來說,就是建立一個介面,介面中定義了此應用程式中將會用到的所有事務方法。在這個應用程式中,當需要和資料來源進行互動的時候則使用這個介面,並且編寫一個單獨的類來實現這個介面,在邏輯上該類對應一個特定的資料儲存。DAO模式實際上包含了兩個模式,一是Data Accessor(資料訪問器),二是Data Object(資料物件),前者要解決如何訪問資料的問題,而後者要解決的是如何用物件封裝資料。


11、事務的ACID是指什麼?
答:- 原子性(Atomic):事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗;
- 一致性(Consistent):事務結束後系統狀態是一致的;
- 隔離性(Isolated):併發執行的事務彼此無法看到對方的中間狀態;
- 永續性(Durable):事務完成後所做的改動都會被持久化,即使發生災難性的失敗。通過日誌和同步備份可以在故障發生後重建資料。


12、JDBC中如何進行事務處理?
答:Connection提供了事務處理的方法,通過呼叫setAutoCommit(false)可以設定手動提交事務;當事務完成後用commit()顯式提交事務;如果在事務處理過程中發生異常則通過rollback()進行事務回滾。除此之外,從JDBC 3.0中還引入了Savepoint(儲存點)的概念,允許通過程式碼設定儲存點並讓事務回滾到指定的儲存點。