- 相關推薦
數據庫oracle筆試
1、 數據庫中使用update修改多個字段值的問題
經我在PL/SQL環境下調試,得出如下結論(scott/tiger 下的dept表):
update dept set dname='yao', loc='shaoyang' where deptno=10; --通過
update dept set(dname, loc)=('yao','shaoyang') where deptno=10; --錯誤
update dept set(dname, loc)=(select dname,loc from dept where deptno=20) where deptno=10;--通過
2、程序流程問題(題目略去, 如下為我的驗證代碼):
public class TestCircle {
public static void main(String[] args) {
int i=2, j=9;
do{
if(i>j){
break;
}
j--;
}while(++i<5);
System.out.println("i is: "+i+", j is: "+j);
int k = new TestCircle().testCase(1);
System.out.println("k is : "+k);
}
public int testCase(int n){
int j=1;
switch (n) {
case 1: j++;
case 2: j++;
case 3: j++;
case 4: j++;
case 5: j++;
System.out.println("j is : "+j);
default: j++;
}
return n+j;
}
}
testCase這個問題我做錯了, 題目是要求最終打印出的k為8,請你給i與n賦值。
我在考場上寫的n=5, i=2; 運行得出結果卻為9. 分析了一下得出原因在于: 如果n<5的話,那么它會從其自身起一直到5都會執行j++這條語句, 因為此代碼片段中并沒有使用 break。
n與i有多種組合值, 如(1,1)、(4,1)和(5,1)等都可以。
3、 復習 JAVA的 “內部類”章節。
4、 復習 JAVA的 “反射”章節。
5、 溫習 操作系統 部分的知識。
6、 數組問題:
如我聲明 int [] a = new int[1] , 那么a[0]的默認值就為0。 我起初理解錯誤了, 我認為如此聲明只是為數組開辟了空間而已, 在其空間上默認值為NULL。
7、 關于啟動 gc 的方法:
System.gc() 和 RunTime()類的 gc() 方法, 但是即使調用了前面的方法也不保證一定會進行回收。
拓展之:
a. GC并不是定期來回收你的垃圾內存,即是根據需要來回收。
b. GC的回收是因為:它認為你的系統已經開始內存緊張(這個就是jvm的神奇)
c. 即使GC開始準備清理你的垃圾內存,但是如果該內存的引用還存在(不等于null), 這個時候GC仍然無能為力!
d、 RunTime類的 public static Runtime getRuntime() 返回: 與當前 Java 應用程序相關的 Runtime 對象。
8、 int i=10, double e = 10.0; 判斷(i==e)、 (i==10.0)的真假。
我認為一個是int類型,一個是double類型,它們分屬不同的類型, 所以我認為其是錯誤的, 然而經運行測試發現是正確的。
9、 public static void main(String[] args){
StringBuffer str1 = new StringBuffer("a");
StringBuffer str2 = new StringBuffer("b");
conver(str1, str2); }
public static void conver(StringBuffer str1, StringBuffer str2){
str1.append(str2);
str2 = str1;
}
測試結果為: str1 : ab str2 : b
10、 唯一索引 與 唯一約束
create unique index index_name on table_name(column)。
建立唯一索引會自動生成一個唯一索引(唯一性約束是通過唯一性索引來實現的)。
約束是為了保證數據滿足約束條件的數據完整性, 而索引通常是為了提高查詢的速度。
——————拓展:
唯一索引, 在物理結構上是完全一樣的, 而實際上, 非唯一索引其實也是索引的一種, 只是非唯一索引把rowId也編程了鍵值的一部分; 在用途上, 唯一索引與非唯一索引的區別在于優化器在優化查詢時應用索引時做了取舍。
如果是唯一索引則采取 index unique scan, 如果是非唯一性索引,則采取 index range scan.
——————拓展: 在線創建索引
在線創建索引時會阻塞DML操作, 直到創建唯一索引成功, DML才正常操作; 所以為了減少性能,不阻塞DML操作最好在最后加上 online關鍵字。
11、 在oracle中如何確定重復的記錄?
a、 自關聯查詢方法:
oracle系統中, 對于所有的表都存在一個唯一的列, 這就是rowid對該列使用max或者min
b、 使用group by/having 子句
c、 exception into 子句。
12、 關于使用DataSource連接數據庫的方式:
參考API內容如下:
該工廠用于提供到此 DataSource 對象所表示的物理數據源的連接。作為 DriverManager 工具的替代項,DataSource 對象是獲取連接的首選方法。實現 DataSource 接口的對象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服務中注冊。
DataSource 接口由驅動程序供應商實現。共有三種類型的實現:
基本實現 - 生成標準的 Connection 對象
連接池實現 - 生成自動參與連接池的 Connection 對象。此實現與中間層連接池管理器一起使用。
分布式事務實現 - 生成一個 Connection 對象,該對象可用于分布式事務,大多數情況下總是參與連接池。此實現與中間層事務管理器一起使用,大多數情況下總是與連接池管理器一起使用。
DataSource 對象的屬性在必要時可以修改。例如,如果將數據源移動到另一個服務器,則可更改與服務器相關的屬性。其優點在于,由于可以更改數據源的屬性,所以任何訪問該數據源的代碼都無需更改。
通過 DataSource 對象訪問的驅動程序本身不會向 DriverManager 注冊。通過查找操作獲取 DataSource 對象,然后使用該對象創建 Connection 對象。使用基本的實現,通過 DataSource 對象獲取的連接與通過 DriverManager 設施獲取的連接相同。
【數據庫oracle筆試】相關文章:
oracle筆試歸來11-06
Oracle筆試,分享筆試內容11-21
oracle筆試題及答案08-16
oracle 技術筆試題02-18
Oracle數據庫的優化03-18
Oracle數據庫SELECT語句03-27
Oracle數據庫語句大全12-21
oracle數據庫基本語句02-08
筆試大觀之Oracle Graduate01-14
Oracle筆試,攢RP中……07-16