oracle常見基礎知識

  1. oracle使用的腳本語言稱爲何?sql

    PL-SQL數據庫

  2. oracle中游標的分類?數據結構

    oracle中游標分爲兩類:顯示遊標和隱式遊標oracle

  3. oracle中function與procedure的區別?函數

    (1) function必定要有返回值,但procedure不須要返回值工具

    (2) procedure能夠返回多個返回值性能

    (3) 在SQL數據操縱語句(DML:select、update、delete、insert)中只能調用function而不能調用procedure優化

  4. oracle導如\出數據有哪幾種方式?spa

    (1) 經過oracle工具 exp\imp:導入\出的數據是二進制數據日誌

    (2) 經過plsql相關工具:導入\出的數據是文本文件

  5. oracle中存在哪幾種格式的文件?

    數據文件(.dbf、ora)、日誌文件(.log)、控制文件(.ctl)

  6. oracle中常見的優化的方法?

    (1) 建合適的索引:減小IO次數

    (2) 將索引數據和表數據分開在不一樣的表空間上:減低IO衝突

    (3) 創建表分區,將數據分別存儲在不一樣表分區上:空間換時間思想

    (4) 將數據庫表按必定的規則進行邏輯分割

    (5) 按規則編寫SQL語句

        (5.1) SQL所有大寫或小寫

        (5.2) 儘可能使用佔位符?而不直接使用字符

        (5.3) 多表查詢時,選擇數據最少的表放在右邊做爲基礎表,好比存在中間表時

        (5.4) 將表之間的鏈接寫在其餘條件以前 

    (6) 儘可能不要使用*號:解析時須要去查詢數據字典

    (7) 避免使用!=進行比較

    (8) 用(NOT)EXITS代替(NOT)IN

    (9) 合理的使用事務(如可使用批處理下降事務的使用次數),合理的設置事務的隔離級

  7. oracle中使用什麼鏈接字符串?

    使用操做符 || 鏈接字符串

  8. oracle的分區策略從哪些方面優化數據庫?

    oracle存在四種分區:列表分區、範圍分區、散列分區、複合分區

    (1) 增長可用性:一個分區故障不會影響其餘分區的使用

    (2) 減小關閉時間:一個表的分區故障只須要修復此分區而不用所有修復

    (3) 利於維護

    (4) 均衡IO

    (5) 改善性能

  9. oracle中如何實現分頁?

    oracle中實現分頁主要藉助於ROWNUM,例如:

    SELECT * FROM (SELECT A.*, ROWNUM num FROM tableName WHERE ROWNUM<=30) WHERE num >= 20;

  10. oracle中ORDER BY使用索引的條件?

    (1) ORDER BY中的列必須包含相同的索引而且索引順序和排序順序同樣

    (2) 不能有null值的列

  11. 解釋data block、extend、segment、tablespace?

    data block:oracle中最小的邏輯單元,從磁盤中讀寫的就是塊

    extend:若干相鄰的data block組成的就是extend

    segment:由一組區組成

    tablespace:數據庫中數據邏輯存儲的地方,一個表空間中能夠包含多個數據文件

  12. truncate和delete的區別?

    (1) truncate的操做並不記錄的rollback中,因此進行的操做不能夠進行回滾

    (2) truncate是DDL語句,而delete是DML

    (3) turncate不能對視圖進行操做

    (4) delete操做後並不釋放佔有的表空間

  13. oracle中的DML、DDL、DCL?

    DML:數據操縱語句,包括select、update、insert、delete

    DDL:數據定義語句,create table、drop table

    DCL:數據控制語句,commit、rollback、grand、invoke

  14. oracle中的經常使用函數?

    Length、upper、lower、to_date、to_char、Rtrim、Ltrim、substr、add_month、to_number等

  15. oracle中怎樣建立索引?

    經常使用的有三種索引:

    (1) 標準索引:CREATE INDEX 索引名稱 ON 表名(列名) TABLESPACE 表空間名;

    (2) 惟一索引:CREATE UNIQUE INDEX 索引名稱 ON 表名(列名) TABLESPACE 表空間名;

    (3) 組合索引:CREATE INDEX 索引名稱 ON 表名(列名1,列名2) TABLESPACE 表空間名;

  16. 索引的使用應該遵循哪些原則?

    (1) 建議對索引字段創建NOT NULL約束:索引實際上是一種數據結構(一般採用B樹數據結構),是有序的,當存在NULL時,就沒法肯定其在索引中的位置;另外,因爲空值不等於空值,因此指望檢索一個空值是沒法達到預期的

    (2) 在表的鏈接字段創建索引

    (3) 對選擇性較高的字段創建索引

    (4) 儘可能減小創建複合索引

    (5) 不要對DML頻繁的表創建太多的索引

    (6) 不要選擇頻繁修改的列做爲索引列

  17. 索引的優缺點?

    優勢:加快數據的檢索效率

    缺點:索引須要佔用物理空間,建立和維護也比較耗時

  18. oracle中怎樣創建視圖?

    語法:CREATE VIEW 視圖名稱 AS SELECT 列名 別名 FROM 表名;

    優勢:視圖不佔用系統空間;使用視圖能夠隱藏表的結構;簡化查詢

  19. oracle中如何定義一個觸發器?

    CREATE [OR REPLACE] TIGGER 觸發器名稱  觸發時間  觸發事件

    ON 表名

    BEGIN

             PL/SQL 

    COURSE  遊標名稱 IS SELECT * FROM 表名 (定義遊標)

    END;

  20. Java中如何調用oracle的存儲過程?

    在Java中,經過類CallableStatement調用存儲過程;根據存儲過程返回值個數的不一樣,能夠分爲三類:

    (1) 沒有返回值

    conn.prepareCall("call proc{?,?}");

    state.setString(1, "Marry");

    state.setString(2, "China");

    state.execute();

    (2) 有多個但非列表

    conn.prepareCall("call proc{?,?}");

    state.setString(1, "Marry");

    state.registerOutParameter(2, Types.VARCHAR);

    state.execute();

    取出返回值:state.getString(2);

    (3) 列表

    conn.prepareCall("{? = call tpackage.proc(?) }");

    state.registerOutParameter(1, Types.CURSOR);

    state.execute();

相關文章
相關標籤/搜索