您好,登錄后才能下訂單哦!
問題:
1、解釋冷備份和熱備份的不同點及各自的優點?
2、解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點?
****************************************************************************************************************************************************************************************
解答:
1、解釋冷備份和熱備份的不同點及各自優點?
答:
1、不同點:
熱備份:針對歸檔模式的數據庫,在數據庫處于工作狀態時進行備份;
冷備份:適用于所有模式的數據庫,在數據庫關閉后進行備份。
2、各自優點:
熱備份:當備份時,數據庫仍舊可以被使用并且可以將數據庫恢復到任意一個時間點;
冷備份:它的備份和恢復操作相當簡單,并且由于冷備份的數據庫可以工作在非歸檔模式下,不必將歸檔日志寫入硬盤,數據庫性能會比歸檔模式稍好。
記憶方式:熱備份>歸檔模式>工作時進行>恢復任意時間點
冷備份>所有模式>關閉時進行>少許提高性能
2、解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點?
答:歸檔模式是指可以備份所有的數據庫transactions并恢復到任意一個時間點。
非歸檔模式則相反,不能恢復到任意一個時間點。
但是非歸檔模式可以帶來數據庫性能上的少許提高。
記憶方式:歸檔模式>熱備份>恢復任意時間點>性能少許下降
非歸檔模式>冷備份>恢復完全備份>性能少許提高
不積跬步無以至千里
問題:
1、如何根據初始化文件pfile轉換成spfile文件?
2、數據庫正常啟動所經歷的狀態有哪幾種?
解答:
1、如何根據初始化文件pfile轉換成spfile文件?
答:
使用命令:SQL>create spfile from pfile。
解析:
(1)、概述:
Oracle從9i開始,參數初始化文件新增為兩種,即文本參數文件和服務器參數文件。它們在數據庫實例啟動時候加載,決定了數據庫的物理結構、內存、數據庫的限制及系統大量的默認值、數據庫的各種物理屬性、指定數據庫控制文件名和路徑等信息,是進行數據庫設計和性能調優的重要文件。
(2)簡述pfile和spfile
它們都是必須的參數文件。
pfile:初始化參數文件,為ASCII文本文件,可以直接編輯,對這類文件的修改是需要手工進行的,并且修改后,重啟Oracle實例才會生效。
spfile:服務器參數文件,二進制文件,不可以直接編輯。
(3)、查看系統是以pfile還是spfile啟動
命令:SQL>select isspecified,count(*) from v$spparameter group by isspecified;
如果isspecified里有true,表明用spfile進行了指定配置,如果全為false,則表明用pfile啟動。
(4)、使用spfile的好處
spfile改正了pfile管理混亂的問題,在多結點的環境里,pfile會有多個image啟動時需要跟蹤最新的image,這是個煩瑣的過程。用spfile以后,所有參數改變都寫到spfile里面參數配置有個權威的來源。
(5)、查看spfile location
命令SQL> show parameter spfile
(6)、互相創建
spfile和pfile是可以相互創建的,命令如下:
SQL>create spfile from pfile;
SQL>create pfile from spfile.
當數據庫第一次被創建的時候,系統會收集到創建者設置的各個參數,生成pfile。之后,在第一次啟動數據庫時,會依靠這個pfile創建spfile,此時將不再需要pfile文件。而當下次啟動時會使用pfile文件。如果數據庫不出現故障,pfile文件將一直使用。然而若spfile被損壞或需重新創建spfile文件,這時候就可以使用pfile文件來建立新的spfile文件。
2、數據庫正常啟動所經歷的狀態有哪幾種?
答:
數據庫實例啟動:NOMOUNT狀態;
數據庫裝載:MOUNTED狀態;
數據庫打開:OPEN狀態。
解析:
(1)、舉例簡述:
對于數據庫的啟動介紹前先舉一個簡單例子,如果我們打算開一家公司,一般會先有初始化的規劃,把初始化的規劃思路整理成書面材料文件,然后招聘有經驗的相關部門的管理人員組成一個團隊,其次是招聘每個部門里的基層員工,這樣一個簡單的公司體系就形成了。
啟動oracle數據庫如同上面的例子一樣,數據庫啟動時,先要找到初始化文件(spfile/pfile),這時數據庫處在nomount狀態,這相當于創辦公司的初始階段;其次根據初始文件找到控制文件,這時數據庫處于mount狀態,這相當于創業時最初組建的管理團隊。在之后會根據控制文件找到數據文件、重做日志文件,從而處在open狀態,這時用戶可以訪問數據庫了。如同一個公司的體系初步建設起來了。
(2)、實驗驗證:
輸入第1行命令:sqlplus/nolog;
說明:
啟動SQLPLUS但不進行登錄,只是進入sqlplus軟件,相當于打開一個登錄窗口,用戶名、密碼是接下來才輸入的,這樣輸入能夠讓下面的輸入不顯示密碼起到安全的作用。
輸入第2行命令:conn / as sysdba;
說明:
oracle在登錄時,有三種身份認證方式:操作系統身份認證、密碼文件認證、數據庫認證。而conn /as sysdba是屬于操作系統認證。你當前電腦開機時登錄的用戶,也就是進入操作系統的用戶,例如Win xp系統下是Administrator,它在你電腦的ORA_DBA組中。可以在“我的電腦”單擊右鍵,找到“管理”,選擇“本地用戶和組”,發現有一個組叫“ORA_DBA”,雙擊它,看到成員列表中有“Administrator”。也就是在conn /as sysdba,oracle會進行操作系統驗證,發現你當前登錄的用戶就屬于Administrator組,因此才可以登錄成功。你可以把ORA_DBA組中的“Administrator”用戶刪除,再conn /as sysdba,就發現進不去了。
輸入第3行命令:SQL> shutdown; ------------shutdown
輸入第4行命令:SQL> select status from v$instance;
說明:
查詢當前實例的狀態,v$instance是個視圖。這個狀態指明的是數據庫在用startup啟動以后的所處的狀態。
輸入第5行命令:SQL> startup nomount; ------------started
輸入第6行命令:SQL> select status from v$instance;
輸入第7行命令:SQL> alter database mount; ------------mounted
輸入第8行命令:SQL> select status from v$instance;
輸入第9行命令:SQL> alter database open; ------------open
輸入第10行命令:SQL> select status from v$instance;
輸入第11行命令:SQL> shutdown;
問題:
1、說出兩種相關約束?
2、解釋$ORACLE_HOME和$ORACLE_BASE的區別?
解答:
1、答:主鍵和外鍵。
2、答:$ORACLE_HOME:oracle的產品目錄;
$ORACLE_BASE:oracle的根目錄。
問題:
1、創建用戶時,需要授予新用戶什么權限方能使其連上數據庫?
2、備份如何分類?
解答:
1、答:CONNECT權限。
2、答:
第一種:邏輯備份和物理備份。
邏輯備份可以使用EXP/IMP;
物理備份可以使用RMAN。
第二種:熱備份和冷備份。
熱備份為數據庫正常訪問的情況下備份數據庫,RMAN備份也為熱備份。
冷備份為脫機備份,關閉數據庫然后備份數據庫的所有文件。
問題:
1、用于網絡連接的兩個文件是什么?
2、數據庫的重做日志(Redo Logs)的作用?
解答:
1、答:TNSNAMES.ORA和SQLNET.ORA;
2、答:Redo Logs是用于存放數據庫數據改動狀況的物理和邏輯結構,可以用以修復數據庫。
1、臨時表空間和永久表空間的區別是什么?
2、解釋Function、Procedure、Package的區別?
問題:
1、答:
臨時表空間(Temporary Tablespace):用于臨時對象;
永久表空間(Permanent Tablespace):用于存儲存在的對象,如表、回滾段等。
2、答:
Function、Procedure是PL/SQL代碼的集合,一般為了完成一個任務;
Procedure不需要返回任何值而Function將返回一個值。
Package是為了完成一個商業功能的一組Function和Procedure的集合。
問題:
1、簡述數據庫的data block、extent、segement的區別?
2、簡述為何要使用索引?
問題:
1、答:
data block是數據庫中最小的邏輯存儲單元。當數據庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent。一個數據庫對象擁有的所有extents被稱為該對象的segment。
2、答:
可以快速訪問表中的data block,即能夠加快訪問數據的速度。
問題:
1、簡述tablespace和datafile的關系?
2、什么視圖用來判斷表空間的剩余空間?
問題:
1、答:
一個tablespace可以有一個或多個datafile;
每個datafile只能在一個tablespace內;
table中的數據通過hash算法分布在tablespace中的各個datafile中;
tablespace是邏輯上的概念,datafile則在物理上儲存了數據庫的種種對象。
2、答:
DBA_FREE_SPACE。
問題:
1、比較truncate和delete命令的區別?
2、如果必須利用備份恢復數據庫,但此時沒有控制文件,如何應對?
問題:
1、答:
兩者都可以用來刪除表中所有的記錄。
truncate是DDL操作,它移動HWK,不需要rollback segment。
delete是DML操作,需要rollback segment且花費較長的時間。
2、答:
重建控制文件,用帶backup control file子句的recover命令恢復數據庫。
1、oracle數據庫的約束條件有哪些?
2、表的主鍵和唯一約束很像,有哪些區別?
問題:
1、 答:
有5個約束條件:主鍵、外鍵、非空、唯一、條件。
解釋:
非空:這個列的值不能為空(NOT NULL);
唯一:這個列的值在表中是唯一存在的,不能重復,但可以為空值(NULL);
條件:可以對列的值設定在某個條件范圍之內,比如,人的年齡就不能為負數,可以設置這個列的條件為大于0而小于200;
主鍵:primary,主鍵是關系數據庫表中的某一行或者某幾列的集合。它能夠唯一標識數據庫表中的一行。主鍵不能包含空值(NULL);
外鍵:foreign,外鍵是關系數據庫表中的一列或者某幾列的組合。它的值或與另外一個表的某一列或者某幾列相匹配,這一列是另一個表的主鍵。
2、 答:
表的主鍵是列的值為表中的唯一標識,不能為空值(NULL),而表的唯一約束是列的值在表中唯一存在,可以為空值(NULL)。1、日志的作用是什么?
2、RMAN是什么?
問題:
1、
答:
記錄數據庫事務,最大限度地保證數據的一致性與安全性。
重做日志文件:含對數據庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復,一個數據庫至少需要兩個重做日志文件。
歸檔日志文件:是重做日志文件的脫機副本,這些副本可能對于從介質失敗中進行恢復很必要。
2、
答:
RMAN(Recovery Manager)是DBA的一個重要工具,用于備份、還原和恢復數據庫,RMAN可以用來備份和恢復數據庫文件、歸檔日志、控制文件、系統參數文件,也可以用來執行完全或不完全的數據庫恢復。
問題:
1、RMAN的用戶接口有幾種?
2、描述RMAN的特點?
問題:
1、答:
RMAN有三種不同的用戶接口:COMMAND LINE方式、GUI方式、API方式。
解釋:
GUI方式集成在OEM中的備份管理器;
API方式用于集成到第三方的備份軟件中。
2、答:
RMAN的特點如下:
1 | 功能類似于物理備份,但比物理備份強大N倍。 |
2 | 可以壓縮空快。 |
3 | 可以在塊水平上實現增量。 |
4 | 可以把備份的輸出打包成備份集,也可以按固定大小分割備份集。 |
5 | 備份與恢復的過程可以自動管理。 |
6 | 可以使用腳本(存在于Recovery Catalog中)。 |
7 | 可以做壞塊監測。 |
1、下列不屬于ORACLE的邏輯結構的是()
A、區
B、段
C、數據文件
D、表空間
答案:C
2、下面哪個用戶不是ORACLE缺省安裝后就存在的用戶( )
A、SYSDBA
B、SYSTEM
C、SCOTT
D、SYS
答案:A
3、下面哪個操作會導致用戶連接到ORACLE數據庫,但不能創建表( )
A、授予了CONNECT的角色,但沒有授予RESOURCE的角色
B、沒有授予用戶系統管理員的角色
C、數據庫實例沒有啟動
D、數據庫監聽沒有啟動
答案:A
4、( )函數通常用來計算累計排名,移動平均數和報表聚合。
A、匯總
B、分析
C、分組
D、單行
答案:B
5、帶有( )字句的SELECT語句可以在表的一行或多行放置排他鎖。
A、FOR INSERT
B、FOR UPDATE
C、FOR DELETE
D、FOR REFRESH
答案:B
6、在Oracle中,你以SYSDBA登錄,CUSTOMER表位于Mary用戶方案中,下面哪條語句為數據庫中的所有用戶創建CUSTOMER表的同義詞( )。
A、CREATE PUBLIC SYNONYM cust ON mary.customer;
B、CREATE PUBLIC SYNONYM cust FOR mary.customer;
C、CREATE SYNONYM cust ON mary.customer FOR PUBLIC;
D、不能創建CUSTOMER的公用同義詞。
答案:B
7、 在Oracle中,當FETCH語句從游標獲得數據時,下面敘述正確的是( )。
A、游標打開
B、游標關閉
C、當前記錄的數據加載到變量中
D、創建變量保存當前記錄的數據
答案:C
8、 在Oracle中,表VENDOR包含以下列:
VENDOR_ID NUMBER Primary Key
NAME VARCHAR2(30)
LOCATION_ID NUMBER
ORDER_DT DATE
ORDER_AMOUNT NUMBER(8,2)
下面對表VENDOR運用分組函數的子句合法的是( )。
A、FROM MAX(order_dt)
B、SELECT SUM(order_dt)
C、SELECT SUM(order_amount)
D、WHERE MAX(order_dt) = order_d
答案:C
9、 在Oracle中,表EMP包含以下列:
……
NAME VARCHAR2(20)
ADDR VARCHAR2(60)
……
要以NAME’s address is ADDR格式返回數據,以下SQL語句正確的是( )。 + 的兩邊做To_number()
A、SELECT NAME + ’’’s address is ‘ + ADDR FROM EMP;
B、SELECT NAME || ’’’s address is ‘ || ADDR FROM EMP;
C、SELECT NAME + ’\’s address is ‘ + ADDR FROM EMP;
D、SELECT NAME || ’\’s address is ‘ || ADDR FROM EMP;
答案:B
10、 在Oracle中,以下不屬于集合操作符的是( )。
A、UNION
B、SUM
C、MINUS
D、INTERSECT
答案:B
11、 在Oracle中,表分區方式( )建議分區數是2的冪(2、4、8等),以獲得最平均的數據發布。
A、范圍分區
B、列表分區
C、散列分區
D、復合分區
答案:C
12、 在Oracle中,關于鎖,下列描述不正確的是( )。
A、鎖用于在用戶之間控制對數據的并發訪問
B、可以將鎖歸類為行級鎖和表級鎖
C、insert、update、delete語句自動獲得行級鎖
D、同一時間只能有一個用戶鎖定一個特定的表
答案:D
13、在Oracle中,序列venseq使用下面的語句創建:
CREATE SEQUENCE venseq INCREMENT BY 1 START WITH 10
MAXVALUE 100 MINVALUE 10 CYCLE CACHE 5;
下面對序列venseq修改的語句,錯誤的是( )。
A、ALTER SEQUENCE venseq START WITH 1;
B、ALTER SEQUENCE venseq MAXVALUE 90;
C、ALTER SEQUENCE venseq NOMINVALUE;
D、ALTER SEQUENCE venseq NOCACHE;
答案:A
14、在Oracle中,使用以下語句創建視圖:
CREATE OR REPLACE VIEW pen_view
AS SELECT * FROM order_master
WHERE ostatus = ‘p’ WITH CHECK OPTION CONSTRAINT penv;
當用戶試圖執行以下語句: UPDATE pen_view SET ostatus = ‘d’ WHERE ostatus=’p’; 下列描述正確的是( )。
A、Oracle將ostatus修改為d,不提示任何錯誤
B、Oracle不執行更新操作,并返回錯誤信息
C、Oracle將ostatus修改為d,同時返回錯誤信息
D、Oracle不執行更新操作,也不提示任何錯誤
答案:B
15、在Oracle中,在以下情形建立位圖索引可以獲得較好的性能( )。
A、在列值唯一的列上建立
B、在列值相差很小的列上建立
C、在列值頻繁重復的列上建立
D、在用于保存位圖的列上建立
答案:C
16、在Oracle中,通過命令( )可以釋放鎖。
A、INSERT
B、DELETE
C、ROLLBACK
D、UNLOCK
答案:C
17、在Oracle中,下面關于簇的描述不正確的是( )。
A、簇是一組表,這些表擁有公共列,并且經常一起使用
B、與每個表及其索引單獨存儲相比,簇能夠提高INSERT語句的性能
C、由于簇表中的所有行都使用相同的列作為公共主鍵,因此這些列僅為所有表存儲一次,從而節省了存儲空間
D、經常更新的列不應選作簇鍵
答案:B
18、在Oracle中,( )操作符允許引用現有的行對象。
A、CAST
B、REF
C、MULTISET
D、MAP
答案:B
19、在Oracle中,關于PL/SQL下列描述正確的是( )。
A、PL/SQL代表Power Language/SQL
B、PL/SQL不支持面向對象編程
C、PL/SQL塊包括聲明部分、可執行部分和異常處理部分
D、PL/SQL提供的四種內置數據類型是character,integer,float,boolean
答案:C
20、在Oracle中,閱讀下列PL/SQL塊:
DECLARE
v_lower NUMBER:=2;
v_upper NUMBER:=100;
v_count NUMBER:=1;
BEGIN
I = 2; I <= 2; i++
FOR i IN v_lower..v_lowerLOOP
INSERT INTO test(results)
VALUES (v_count);
v_count := v_count +1;
ENDLOOP;
END;
請問FOR LOOP循環體執行了( )次。
A、1
B、2
C、98
D、100
E、235:
答案:A
21、在Oracle中,關于子程序的描述不正確的是( )。
A、子程序是已命名的PL/SQL塊,可帶參數并可在需要時隨時調用
B、子程序可以具有聲明部分、可執行部分和異常處理部分
C、子程序參數的模式只有IN和OUT兩種模式
D、子程序可分為過程和函數兩種類型
答案:C
22、在Oracle中,關于觸發器的描述正確的是( )。
A、觸發器可以刪除,但不能禁用
B、觸發器只能用于表
C、觸發器可以分為行級和語句級兩種
D、觸發器是一個對關聯表發出insert、update、delete或select … for update語句時觸發的存儲過程
答案:D
23、在Oracle中,你需要創建索引提高薪水審查的性能,該審查要對員工薪水提高12個百分點后進行分析處理,下面哪個create index命令能解決此問題( )。
A、CREATE INDEX my_idx_1 ON employee(salary*1.12);
B、CREATE UNIQUE INDEX my_idx_1 ON employee(salary);
C、CREATE BITMAP INDEX my_idx_1 ON employee(salary);
D、CREATE INDEX my_idx_1 ON employee(salary) REVERSE;
答案:A
24、在Oracle中,執行下面的語句:
SELECT ceil(-97.342),
floor(-97.342), -123.01 -124
round(-97.342),
trunc(-97.342)
FROM dual;
哪個函數的返回值不等于-97( )。
A、ceil()
B、floor()
C、round(0)
D、trunc()
答案:B
25、在Oracle中,用以下SQL命令創建了一個序列:
CREATE SEQUENCE my_seq
START WITH 394
INCREMENT BY 12
NOMINVALUE
NOMAXVALUE
NOCYCLE
NOCACHE;
用戶執行包含my_seq.NEXTVAL的SQL語句三次,然后執行包含 my_seq.CURRVAL的SQL語句四次,請問序列my_seq的當前值是( )。
A、406
B、418
C、430
D、442
E、242:
答案:B
26、在Oracle中,下列哪種標量類型不能保存到數據庫表中( )。
A、CHAR
B、RAW
C、DATE
D、BOOLEAN
答案:B
27、在Oracle中,不屬于游標屬性的是( )。
A、%NOTFOUND
B、%FOUND
C、%ISCLOSE
D、%ISOPEN
答案:C
28、在Oracle中,用下列語句定義了一個過程:
CREATE OR REPLACE PROCEDURE test(a IN VARCHAR2,
b IN OUT NUMBER,
c OUT VARCHAR2) IS
BEGIN
……
END;
/
假定使用的變量都已定義,下面對過程test的調用語法正確的是( )。
A、test(‘String1’,50,v_str2)
B、test(v_str1,v_num1,’String2’)
C、test(‘String1’,v_num1,v_str2)
D、test(v_str1,20,v_str2)
答案:C
29、在Oracle中,關于程序包的描述不正確的是( )。
A、程序包是一種數據庫對象,它是對相關PL/SQL類型、子程序、游標、異常、變量和常量的封裝
B、程序包中私有對象是通過PRIVATE關鍵字來標識的 程序包體可以包括沒有在程序包說明中列出的對象,這些是私有對象,程序包的用戶不能使用
C、PL/SQL允許兩個或多個打包的子程序具有同一名稱,只要子程序接受的參數數據類型不同
D、程序包具有模塊化、信息隱藏、新增功能及性能更佳等優點
答案:B
30、在Oracle中,用戶( )擁有所有內置的程序包。
A、SYS
B、SYSTEM
C、PUBLIC
D、DEFAULT
答案:A
31、在Oracle中,關于觸發器的描述正確的是( )。
A、觸發器可以刪除,但不能禁用
B、觸發器只能用于表
C、觸發器可以分為行級和語句級
D、觸發器使一個對關聯表發出select、insert、update或delete語句時觸發的存儲過程
答案:D
32、在Oracle中,事務中使用下列SQL語句不會引起鎖定( )。
A、SELECT
B、INSERT
C、UPDATE
D、DELETE
答案:A
33、在Oracle中,當需要使用顯式游標更新或刪除游標中的行時,聲明游標時指定的SELECT語句必須帶有( )子句。
A、WHERE CURRENT OF
B、INTO
C、FOR UPDATE
D、ORDER BY
答案:C
34、在Windows操作系統中,Oracle的( )服務器監聽并接受來自客戶端應用程序的連接請求。
A、OracleHOME_NAMETNSListener
B、OracleServiceSID
C、OracleHOME_NAMEAgent
D、OracleHOME_NAMEHTTPServer
答案:A
35、在Oracle中,有一個名為seq的序列對象,以下語句能返回序列值但不會引起序列值增加的是( )。
A、select seq.ROWNUM from dual;
B、select seq.ROWIDfrom dual;
C、select seq.CURRVALfrom dual;
D、select seq.NEXTVALfrom dual;
答案:C
36、ORACLE中,執行語句:SELECT address1||’,'||address2||’,'||address2 ”Address” FROM employ;將會返回( )列。
A、0
B、1
C、2
D、3
答案:B
37、在Oracle中,INSTEAD OF觸發器主要用于( )。
A、表
B、表和視圖
C、基于單個表的視圖
D、基于多個表的視圖
答案:D
38、Oracle數據庫中,下面( )可以作為有效的列名。
A、Column
B、123_NUM
C、NUM_#123
D、#NUM123
答案:C
39、在Oracle中,以下工具可以邏輯備份數據庫對象或整個數據庫( )。
A、SQL*Plus
B、導出實用程序
C、導入實用程序
D、SQL*Loader
答案:B
40、Oracle數據庫中,通過( )訪問能夠以最快的方式訪問表中的一行。
A、主鍵
B、Rowid
C、唯一索引
D、整表掃描
答案:B
41、在Oracle中,使用下列的語句產生序列: CREATE SEQUENCE id; Oracle服務器會預開辟內存并維持的序列值有( )個。
A、0
B、10
C、20
D、100
答案:C
42、Oracle數據庫中,以下( )命令可以刪除整個表中的數據,并且無法回滾。
A、drop
B、delete
C、truncate
D、cascade
答案:C
43、Oralce數據庫中,以下( )函數可以針對任意數據類型進行操作。
A、TO_CHAR
B、LOWER
C、MAX
D、CEIL
答案:A
44、在Oracle中,語句( )將ORDER_DATE日期值’2000年3月18日’顯示為‘2000年1月1日’。
A、SELECT ROUND(order_date,’day’)FROM inventory
B、SELECT ROUND(order_date,’YEAR’)FROM inventory
C、SELECT ROUND(order_date,’month’)FROM inventory
D、SELECT ROUND(to_char(order_date,’yyyy’))FROM inventory
答案:B
45、在Oracle中,以下是STUDENTS表的結構: SID NUMBER NOT NULL,Primary Key SNAME VARCHAR2(30) COURSE_ID VARCHAR2(10) NOT NULL MARKS NUMBER"sql hljs">SID NUMBER NOT NULL,Primary Key SNAME VARCHAR2(30) COURSE_ID VARCHAR2(10) NOT NULL MARKS NUMBER 你需要查詢參加了課程ID為C10的考試,并且分數排在前10名的學生,以下( )語句能夠實現此功能。
A、SELECT SID,marks,ROWNUM “Rank”
FORM students
WHERE ROWNUM<=10 AND course_id=’C10′
ORDER BY marks DESC;
B、SELECT SID,marks,ROWNUM”Rank”
FORM students
WHERE ROWNUM<=10 AND course_id=’C10′
ORDER BY marks;
C、SELECT SID,marks,ROWNUM”Rank”
FORM (SELECT SID ,marks
FORM students
WHERE ROWNUM<=10 AND course_id=’C10′
ORDER BY marks DESC;
D、SELECT SID,marks,ROWNUM”Rank”
FORM (SELECT SID ,marks
FORM students
WHERE course_id=’C10′ ORDER BY marks DESC)
WHERE ROWNUM<=10;
答案:D
46、在Oracle中,用于PL/SQL程序輸出調試信息的內置程序包是
A、DBMS_STANDARD
B、DBMS_ALERT
C、DBMS_LOB
D、DBMS_OUTPUT
答案:D
47、在Oracle中,用下列語句定義了一個過程:
CREATE PROCEDURE proc(value1 IN VARCHAR2,value2 OUT NUMBER,value3 IN OUT VARCHAR2)
IS
BEGIN
……
END;
假定使用的變量都已定義,下面對過程proc的調用語法正確的是( )。
A、proc(‘tt’,10,v3)
B、proc(‘tt’,v2,v3)
C、proc(v1,v2,v3)
D、proc(‘tt’,10,’dd’)
答案:B
48、在Oracle中,使用以下語句創建視圖:
CREATE OR REPLACE VIEW MyView
AS SELECT * FROM orders
Where status=’p';
假定orders表中包含10條status=’p'的記錄,當用戶試圖執行以下語句: UPDATE MyView SET status=’o’ WHERE status=’p'; 下列描述正確的是()。
A、Oracle不執行更新操作,并返回錯誤信息
B、Oracle成功執行更新操作,再次查看視圖時返回0行記錄
C、Oracle成功執行更新操作,再次查看視圖時返回10行記錄
D、Oracle執行更新操作,但提示錯誤信息
答案:C
49、在Oracle中,下列( )語句不能用于控制游標。
A、Open
B、Create
C、Fetch
D、Close
答案:B
50、在Oracle中,在執行SQL語句時,你不小心使用Update命令將所有的ID值設置成了11111,那么使用( )命令可以取消這一操作。
A、EXIT
B、COMMIT
C、ROLLBACK
D、UNDO
答案:C
51、在Oracle中,數據庫中的觸發器是一個對關聯表發出insert、update或( )語句時觸發的存儲過程。
A、delete
B、drop
C、create
D、truncate
答案:A
52、在Oracle 中,使用了如下的語句創建用戶TOM,則對于該用戶而言,以下說法錯誤的是( )。CREATE USER TOM IDENTIFIED BY TOMSYS
A、該用戶的口令為TOMSYS
B、TOM默認為表空間為SYSTEM
C、TOM 的臨時表空間為TEMP
D、使ORANT UPDATE 命令可以修改TOM的口令
答案:D
53、在Oracle中,下述( )命令會使掛起的事務完成。。
A、COMMIT
B、DELETE
C、UPDATE
D、SELECT
E、INSERT
答案:A
54、游標變量的類型是( )
A、隱式游標
B、顯示游標
C、REF游標
D、循環游標
答案:B
55、在非歸檔方式下操作的數據庫禁用了( )。
A、歸檔日志。
B、聯機日志。
C、日志寫入程序。
D、日志文件。
答案:A
56、由于軟硬件問題導致的讀寫數據庫文件失敗,屬于( )故障。
A、實例
B、語句
C、用戶進程
D、介質
答案:D
57、( )參數用于確定是否要導入整個導出文件
A、constranints
B、tables
C、full
D、file
答案:C
58、在oracle程序中處理語句時發生的邏輯錯誤導致( )故障
A、實例
B、介質
C、語句
D、用戶進程
答案:C
59、( )方式的導出會從指定的表中導出所有的數據。
A、分區
B、表
C、全部數據庫
D、表空間
答案:B
60、使用( )命令可查看在創建觸發器時發生的編譯錯誤
A、View errors
B、Show errors
C、Display errors
D、Check errors
答案:B
61、( )包用于顯示pl/sql塊和存儲過程中的調試信息
A、Dbms_output。
B、Dbms_standadr。
C、Dbms_Input。
D、Dbms_session。
答案:A
62、( )觸發器允許觸發操作的語句訪問行的列值
A、行級 :old :new
B、語句級
C、模式
D、數據庫級
答案:A
63、要審計用戶執行的create,drop,和alter等ddl語句,應創建( )觸發器
A、行級
B、語句級
C、Instead of
D、模式
E、數據庫
答案:E
64、Oracle內置程序包由( )用戶所有
A、sys
B、system
C、scott
D、Pub lic
答案:A
65、( )程序包用于讀寫操作系統文本文件
A、Dbms_output
B、Dbms_lob (圖片,電影)
C、Dbms_random
D、Utl_file
答案:D
66、子程序的( )模式參數可以在調用子程序時指定一個常量
A、in
B、out
C、In out
D、inout
答案:A
67、下面關于主事務處理和自主事務處理的說法錯誤的是( )
A、自主事務處理結果的變化不倚賴于主事務處理的狀態
B、自主事務處理提交或回退時,不影響主事務處理的結果
C、自主事務處理提交,對主事務處理是不可見的
D、自主事務處理還可以啟動其他自主事務處理
答案:D
68、 在Oracle中,下面關于函數描述正確的是( )。
A、SYSDATE函數返回Oracle服務器的日期和時間
B、ROUND數字函數按四舍五入原則返回指定十進制數最靠近的整數
C、ADD_MONTHS日期函數返回指定兩個月份天數的和
D、SUBSTR函數從字符串指定的位置返回指定長度的子串
答案:AD
69、在Oracle中,當從SQL表達式調用函數時,下列描述不正確的是( )。
A、從SELECT語句調用的函數均不能修改數據庫表
B、函數可以帶有IN、OUT等模式的參數
C、函數的返回值必須是數據庫類型,不得使用PL/SQL類型
D、形式參數必須使用數據庫類型,不得使用PL/SQL類型
答案:AC
70、在Oracle中,在SQL提示符下調用PL/SQL過程的方法是()。
A、使用CALL語句
B、使用EXECUTE語句
C、使用RUN語句
D、直接使用過程名
答案:ABC
71、在Oracle中有表”cd”,它包含屬性”cdcode”,”category”和”cdname”,要查詢category取值為”CLASSIC”或”ROCK”的行,應采用語句( )。
A、SELECT * FROM cd WHERE category IN (‘CLASEIC’,'ROCK’);
B、SELECT * FROM cd WHERE category BETWEEN ‘CLASSIC’ AND ‘ROCK’;
C、SELECT * FROM cd WHERE category=’CLASSIC’ AND category=’ROCK’;
D、SELECT * FROM cd WHERE category=’CLASSIC’ OR category=’ROCK’;
答案:AD
72、在Oracle中,通過命令( )可以釋放鎖。(選擇兩項)
A、INSERT
B、DELETE
C、ROLLBACK
D、COMMIT
答案:CD
73、執行特定任務的子程序是( )
A、函數
B、過程。
C、程序包
D、游標。
答案:AB
答案:
select * from emp;
使用*的缺點有:查詢出了不必要的列;效率上不如直接指定列名。
2. 查詢職位(JOB)為'PRESIDENT'的員工的工資
答案:
select * from emp where job = 'PRESIDENT';
3. 查詢傭金(COMM)為0或為NULL的員工信息
答案:
select * from emp where comm = 0 or comm is null;
4. 查詢入職日期在1981-5-1 到1981-12-31之間的所有員工信息
答案:
select * from emp where hiredate
between to_date('1981-5-1','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd');
5. 查詢所有名字長度為4 的員工的員工編號,姓名
答案:
select * from emp where length(ename) = 4;
6. 顯示10 號部門的所有經理('MANAGER')和20號部門的所有職員('CLERK')的詳細信息
答案:
select * from emp where deptno = 10 and job = 'MANAGER' or deptno = 20 and job='CLERK';
7. 顯示姓名中沒有'L'字的員工的詳細信息或含有'SM'字的員工信息
答案:
select * from emp where ename not like '%L%' or ename like '%SM%';
8. 顯示各個部門經理('MANAGER')的工資
答案:
select sal from emp where job = 'MANAGER';
9. 顯示傭金(COMM)收入比工資(SAL)高的員工的詳細信息
答案:
select * from emp where comm > sal;
10. 把hiredate列看做是員工的生日,求本月過生日的員工
答案:
select * from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm');
11. 把hiredate列看做是員工的生日,求下月過生日的員工
答案:
select * from emp where to_char(hiredate, 'mm') = to_char(add_months(sysdate,1) ,'mm');
12. 求1982年入職的員工
答案:
select * from emp where to_char(hiredate,'yyyy') = '1982';
13. 求1981年下半年入職的員工
答案:
select * from emp where hiredate
between to_date('1981-7-1','yyyy-mm-dd') and to_date('1982-1-1','yyyy-mm-dd') - 1;
14. 求1981年各個月入職的的員工個數
答案:
select count(*), to_char(trunc(hiredate,'month'),'yyyy-mm')
from emp where to_char(hiredate,'yyyy')='1981'
group by trunc(hiredate,'month')
order by trunc(hiredate,'month');
15. 查詢各個部門的平均工資
答案:
select deptno,avg(sal) from emp group by deptno;
16. 顯示各種職位的最低工資
答案:
select job,min(sal) from emp group by job;
17. 按照入職日期由新到舊排列員工信息
答案:
select * from emp order by hiredate desc;
18. 查詢員工的基本信息,附加其上級的姓名
答案:
select e.*, e2.ename from emp e, emp e2 where e.mgr = e2.empno;
19. 顯示工資比'ALLEN'高的所有員工的姓名和工資
答案:
select * from emp where sal > (select sal from emp where ename='ALLEN');
20. 顯示與'SCOTT'從事相同工作的員工的詳細信息
答案:
select * from emp where job = (select * from emp where ename='SCOTT');
21. 顯示銷售部('SALES')員工的姓名
答案:
select ename from emp e, dept d where e.deptno = d.deptno and d.dname='SALES';
22. 顯示與30號部門'MARTIN'員工工資相同的員工的姓名和工資
答案:
select ename, sal from emp
where sal = (select sal from emp where deptno=30 and ename='MARTIN');
23. 查詢所有工資高于平均工資(平均工資包括所有員工)的銷售人員('SALESMAN')
答案:
select * from emp where job='SALESMAN' and sal > (select avg(sal) from emp);
24. 顯示所有職員的姓名及其所在部門的名稱和工資
答案:
select ename, job, dname from emp e, dept d where e.deptno = d.deptno;
25. 查詢在研發部('RESEARCH')工作員工的編號,姓名,工作部門,工作所在地
答案:
select empno,ename,dname,loc from emp e, dept d
where e.deptno = d.deptno and danme='RESEARCH';
26. 查詢各個部門的名稱和員工人數
答案:
select * from (select count(*) c, deptno from emp group by deptno) e
inner join dept d on e.deptno = d.deptno;
27. 查詢各個職位員工工資大于平均工資(平均工資包括所有員工)的人數和員工職位
答案:
select job, count(*) from emp where sal > (select avg(sal) from emp) group by job;
28. 查詢工資相同的員工的工資和姓名
答案:
select * from emp e where (select count(*) from emp where sal = e.sal group by sal)> 1;
29. 查詢工資最高的3名員工信息
答案:
select * from (select * from emp order by sal desc) where rownum <= 3;
30. 按工資進行排名,排名從1開始,工資相同排名相同(如果兩人并列第1則沒有第2名,從第三名繼續排)
答案:
select e.*, (select count(*) from emp where sal > e.sal)+1 rank from emp e order byrank;
31. 求入職日期相同的(年月日相同)的員工
答案:
select * from emp e where (select count(*) from emp where e.hiredate=hiredate)>1;
32. 查詢每個部門的最高工資
答案:
select deptno, max(sal) maxsal from emp group by deptno order by deptno;
33. 查詢每個部門,每種職位的最高工資
答案:
select deptno, job, max(sal) from emp group by deptno, job order by deptno, job;
34. 查詢每個員工的信息及工資級別
答案:
select e.*, sg.grade from emp e, salgrade sg where sal between losal and hisal;
35. 查詢工資最高的第6-10名員工
答案:
select * from (
select e.*,rownum rn from
(select * from emp order by sal desc) e
where rownum <=10)
where rn > 5;
36. 查詢各部門工資最高的員工信息
答案:
select * from emp e where e.sal = (select max(sal) from emp where (deptno =e.deptno));
37. 查詢每個部門工資最高的前2名員工
答案:
select * from emp e where
(select count(*) from emp where sal > e.sal and e.deptno = deptno) < 2
order by deptno, sal desc;
38. 查詢出有3個以上下屬的員工信息
答案:
select * from emp e where
(select count(*) from emp where e.empno = mgr) > 2;
39. 查詢所有大于本部門平均工資的員工信息
答案:
select * from emp e where sal >
(select avg(sal) from emp where (deptno = e.deptno))
order by deptno;
40. 查詢平均工資最高的部門信息
答案:
select d.*, avgsal from dept d, (select avg(sal) avgsal, deptno from emp group bydeptno) se
where avgsal = (select max(avg(sal)) from emp group by deptno) and d.deptno =se.deptno;
41. 查詢大于各部門總工資的平均值的部門信息
答案:
select d.*,sumsal from dept d, (select sum(sal) sumsal, deptno from emp group bydeptno) se
where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno =d.deptno;
42. 查詢大于各部門總工資的平均值的部門下的員工信息
答案:
select e.*,sumsal from emp e, (select sum(sal) sumsal, deptno from emp group bydeptno) se
where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno =e.deptno;
43. 查詢沒有員工的部門信息
答案:
select d.* from dept d left join emp e on (e.deptno = d.deptno) where empno is null;
44. 查詢當前月有多少天
答案:
select trunc(add_months(sysdate,1),'month') - trunc(sysdate,'month') from dual;
45. 列出最低薪金大于1500的各種工作及此從事此工作的全部雇員人數
答案:
SELECT job,COUNT(empno)
FROM emp
GROUP BY job HAVING MIN(sal)>1500 ;
46. 列出薪金高于公司平均薪金的所有員工,所在部門,上級領導,公司的工資等級
答案:
SELECT e.empno,e.ename,d.dname,m.ename,s.grade
FROM emp e,dept d,emp m,salgrade s
WHERE sal>(SELECT AVG(sal) FROM emp) AND e.mgr=m.empno AND d.deptno=e.deptno(+)AND e.sal BETWEEN s.losal AND s.hisal ;
47. 列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金、部門名稱
答案:
SELECT e.ename,e.sal,d.dname FROM emp e,dept d
WHERE sal > ALL (SELECT sal FROM emp WHERE deptno=30) AND e.deptno=d.deptno;
48. 列出所有部門的詳細信息和部門人數
答案:
SELECT d.dname,d.loc,dt.count
FROM dept d,(SELECT deptno,COUNT(*) count FROM emp GROUP BY deptno) dt
WHERE d.deptno=dt.deptno ;
49. 顯示非銷售人員工作名稱以及從事同一工作雇員的月工資的總和,并且要滿足從事同一工作的雇員的月工資合計大于$5000,輸出結果按月工資的合計升序排列
答案:
SELECT job,SUM(sal) sum
FROM emp
WHERE job<>'SALESMAN'
GROUP BY job HAVING sum>5000
ORDER BY sum ;
50. 客戶表a(id name address) 登陸流水表b(id time) 購物流水表c(id time productid productnum)
1.求每個客戶的最新登陸時間time,姓名name,客戶id?
答案:
select a.id,a.name,d.time as time
from a left join (select id,max(time) as time from b group by id) d
on a.id =d.id ;
2.查最新登陸并且已經購買商品的客戶id,name,登陸的時間time(一條sql語句)
答案:
select a.id,a.name,d.time as time
from a,(select id,max(time) as time from b group by id) d
where a.id =d.id
and exists (select * from c where id = a.id);
About Me
...............................................................................................................................
● 本文整理自網絡
● 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文博客園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗云盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 數據庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯系我請加QQ好友(646634621),注明添加緣由
● 于 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成
● 文章內容來源于小麥苗的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的數據庫技術。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。