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