oracle使用的腳本語言稱爲何?sql
PL-SQL數據庫
oracle中游標的分類?數據結構
oracle中游標分爲兩類:顯示遊標和隱式遊標oracle
oracle中function與procedure的區別?函數
(1) function必定要有返回值,但procedure不須要返回值工具
(2) procedure能夠返回多個返回值性能
(3) 在SQL數據操縱語句(DML:select、update、delete、insert)中只能調用function而不能調用procedure優化
oracle導如\出數據有哪幾種方式?spa
(1) 經過oracle工具 exp\imp:導入\出的數據是二進制數據日誌
(2) 經過plsql相關工具:導入\出的數據是文本文件
oracle中存在哪幾種格式的文件?
數據文件(.dbf、ora)、日誌文件(.log)、控制文件(.ctl)
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) 合理的使用事務(如可使用批處理下降事務的使用次數),合理的設置事務的隔離級
oracle中使用什麼鏈接字符串?
使用操做符 || 鏈接字符串
oracle的分區策略從哪些方面優化數據庫?
oracle存在四種分區:列表分區、範圍分區、散列分區、複合分區
(1) 增長可用性:一個分區故障不會影響其餘分區的使用
(2) 減小關閉時間:一個表的分區故障只須要修復此分區而不用所有修復
(3) 利於維護
(4) 均衡IO
(5) 改善性能
oracle中如何實現分頁?
oracle中實現分頁主要藉助於ROWNUM,例如:
SELECT * FROM (SELECT A.*, ROWNUM num FROM tableName WHERE ROWNUM<=30) WHERE num >= 20;
oracle中ORDER BY使用索引的條件?
(1) ORDER BY中的列必須包含相同的索引而且索引順序和排序順序同樣
(2) 不能有null值的列
解釋data block、extend、segment、tablespace?
data block:oracle中最小的邏輯單元,從磁盤中讀寫的就是塊
extend:若干相鄰的data block組成的就是extend
segment:由一組區組成
tablespace:數據庫中數據邏輯存儲的地方,一個表空間中能夠包含多個數據文件
truncate和delete的區別?
(1) truncate的操做並不記錄的rollback中,因此進行的操做不能夠進行回滾
(2) truncate是DDL語句,而delete是DML
(3) turncate不能對視圖進行操做
(4) delete操做後並不釋放佔有的表空間
oracle中的DML、DDL、DCL?
DML:數據操縱語句,包括select、update、insert、delete
DDL:數據定義語句,create table、drop table
DCL:數據控制語句,commit、rollback、grand、invoke
oracle中的經常使用函數?
Length、upper、lower、to_date、to_char、Rtrim、Ltrim、substr、add_month、to_number等
oracle中怎樣建立索引?
經常使用的有三種索引:
(1) 標準索引:CREATE INDEX 索引名稱 ON 表名(列名) TABLESPACE 表空間名;
(2) 惟一索引:CREATE UNIQUE INDEX 索引名稱 ON 表名(列名) TABLESPACE 表空間名;
(3) 組合索引:CREATE INDEX 索引名稱 ON 表名(列名1,列名2) TABLESPACE 表空間名;
索引的使用應該遵循哪些原則?
(1) 建議對索引字段創建NOT NULL約束:索引實際上是一種數據結構(一般採用B樹數據結構),是有序的,當存在NULL時,就沒法肯定其在索引中的位置;另外,因爲空值不等於空值,因此指望檢索一個空值是沒法達到預期的
(2) 在表的鏈接字段創建索引
(3) 對選擇性較高的字段創建索引
(4) 儘可能減小創建複合索引
(5) 不要對DML頻繁的表創建太多的索引
(6) 不要選擇頻繁修改的列做爲索引列
索引的優缺點?
優勢:加快數據的檢索效率
缺點:索引須要佔用物理空間,建立和維護也比較耗時
oracle中怎樣創建視圖?
語法:CREATE VIEW 視圖名稱 AS SELECT 列名 別名 FROM 表名;
優勢:視圖不佔用系統空間;使用視圖能夠隱藏表的結構;簡化查詢
oracle中如何定義一個觸發器?
CREATE [OR REPLACE] TIGGER 觸發器名稱 觸發時間 觸發事件
ON 表名
BEGIN
PL/SQL
COURSE 遊標名稱 IS SELECT * FROM 表名 (定義遊標)
END;
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();