欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          整理Oracle面試題及答案

          整理Oracle面試題及答案

          整理Oracle面試題及答案

          一下題目根據(jù)此表變換

          1、表:table1(FId,Fclass,Fscore),用最高效最簡(jiǎn)單的SQL列出各班成績(jī)最高的列表,顯示班級(jí),成績(jī)兩個(gè)字段。

           select stu_class, max(stu_score) from core group by stu_class ;

          2、有一個(gè)表table1有兩個(gè)字段FID,F(xiàn)no,字都非空,寫一個(gè)SQL語(yǔ)句列出該表中一個(gè)FID對(duì)應(yīng)多個(gè)不同的Fno的紀(jì)錄。

          select t2.* from table1 t1, table1 t2 where t1.fid = t2.fid and t1.fno <> t2.fno;

          三種寫法:

          select * from core co1 where co1.STU_CLASS in ( select co.STU_CLASS from CORE co group by co.STU_CLASS  having count(co.STU_CLASS) >1);   select DISTINCT c2.* from core c1 ,core c2 where c1.STU_CLASS = c2.STU_CLASS and c1.STU_SCORE <> c2.STU_SCORE; SELECT * FROM core c1 where 1=1 and  EXISTS (select 1 from core c2 where c1.STU_CLASS = c2.STU_CLASS and c1.STU_SCORE <> c2.STU_SCORE);

          3、有員工表empinfo

          (  Fempno varchar2(10) not null pk,  Fempname varchar2(20) not null,  Fage number not null,  Fsalary number not null  );

          假如數(shù)據(jù)量很大約1000萬(wàn)條;寫一個(gè)你認(rèn)為最高效的SQL,用一個(gè)SQL計(jì)算以下四種人:

          fsalary>9999 and fage > 35  fsalary>9999 and fage < 35  fsalary <9999 and fage > 35  fsalary <9999 and fage < 35

          每種員工的數(shù)量;

          select sum(case when fsalary > 9999 and fage > 35then 1else 0end) as "fsalary>9999_fage>35",sum(case when fsalary > 9999 and fage < 35then 1else 0end) as "fsalary>9999_fage<35",sum(case when fsalary < 9999 and fage > 35then 1else 0end) as "fsalary<9999_fage>35",sum(case when fsalary < 9999 and fage < 35then 1else 0end) as "fsalary<9999_fage<35"from empinfo;
          select sum(case when stu_score < 60 then 1 else 0 end ) as "60分以下人數(shù)" ,sum(case when stu_score > 60 and stu_score <= 70 then 1 else 0 end ) as "60到70分人數(shù)" ,sum(case when stu_score > 70 and stu_score <= 80 then 1 else 0 end ) as "70到80分人數(shù)" ,sum(case when stu_score > 80 and stu_score <= 100 then 1 else 0 end ) as "80分以上人數(shù)"  from core;

          4、表A字段如下
          month person income
          月份 人員 收入
          要求用一個(gè)SQL語(yǔ)句(注意是一個(gè))的處所有人(不區(qū)分人員)每個(gè)月及上月和下月的總收入
          要求列表輸出為
          月份 當(dāng)月收入 上月收入 下月收入

          MONTHS PERSON INCOME ---------- ---------- ----------200807 mantisXF 5000200806 mantisXF2 3500200806 mantisXF3 3000200805 mantisXF1 2000200805 mantisXF6 2200200804 mantisXF7 1800200803 8mantisXF 4000200802 9mantisXF 4200200802 10mantisXF 3300200801 11mantisXF 4600200809 11mantisXF 6800

          11 rows selected

           months, (incomes), (prev_months),  (( ), ), ), lag(incomes) (  months), )  prev_months, decode(lead(months) (  months), to_char(add_months(to_date(months, ), ), ), lead(incomes) (  months), )  next_months  ( months, (income)  incomes  a   months) aa) aaagroup (INCOMES) (PREV_MONTHS) (NEXT_MONTHS)

          5,表B
          C1 c2
          2005-01-01 1
          2005-01-01 3
          2005-01-02 5

          要求的處數(shù)據(jù)
          2005-01-01 4
          2005-01-02 5
          合計(jì) 9
          試用一個(gè)Sql語(yǔ)句完成。

          select nvl(to_char(t02,'yyyy-mm-dd'),'合計(jì)'),sum(t01)from test  group by rollup(t02)

          6,數(shù)據(jù)庫(kù)1,2,3 范式的概念與理解。

          關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)之時(shí)是要遵守一定的規(guī)則的。尤其是數(shù)據(jù)庫(kù)設(shè)計(jì)范式
          簡(jiǎn)單介紹1NF(第一范式),2NF(第二范式),3NF(第三范式),
          第一范式(1NF):在關(guān)系模式R中的每一個(gè)具體關(guān)系r中,如果每個(gè)屬性值 都是不可再分的最小數(shù)據(jù)單位,則稱R是第一范式的關(guān)系。

          例:如職工號(hào),姓名,電話號(hào)碼組成一個(gè)表(一個(gè)人可能有一個(gè)辦公室電話 和一個(gè)家里電話號(hào)碼) 規(guī)范成為1NF有三種方法:
            一是重復(fù)存儲(chǔ)職工號(hào)和姓名。這樣,關(guān)鍵字只能是電話號(hào)碼。
            二是職工號(hào)為關(guān)鍵字,電話號(hào)碼分為單位電話和住宅電話兩個(gè)屬性
            三是職工號(hào)為關(guān)鍵字,但強(qiáng)制每條記錄只能有一個(gè)電話號(hào)碼。
            以上三個(gè)方法,第一種方法最不可取,按實(shí)際情況選取后兩種情況。

           第二范式(2NF):如果關(guān)系模式R(U,F(xiàn))中的所有非主屬性都完全依賴于任意一個(gè)候選關(guān)鍵字,則稱關(guān)系R 是屬于第二范式的。
            例:選課關(guān)系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO為學(xué)號(hào), CNO為課程號(hào),GRADEGE 為成績(jī),CREDIT 為學(xué)分。 由以上
          條件,關(guān)鍵字為組合關(guān)鍵字(SNO,CNO)
            在應(yīng)用中使用以上關(guān)系模式有以下問(wèn)題:

          a.數(shù)據(jù)冗余,假設(shè)同一門課由40個(gè)學(xué)生選修,學(xué)分就 重復(fù)40次。
          b.更新異常,若調(diào)整了某課程的學(xué)分,相應(yīng)的元組CREDIT值都要更新,有可能會(huì)出現(xiàn)同一門課學(xué)分不同。
          c.插入異常,如計(jì)劃開(kāi)新課,由于沒(méi)人選修,沒(méi)有學(xué)號(hào)關(guān)鍵字,只能等有人選修才能把課程和學(xué)分存入。
          d.刪除異常,若學(xué)生已經(jīng)結(jié)業(yè),從當(dāng)前數(shù)據(jù)庫(kù)刪除選修記錄。某些門課程新生尚未選修,則此門課程及學(xué)分記錄無(wú)法保存。

            原因:非關(guān)鍵字屬性CREDIT僅函數(shù)依賴于CNO,也就是CREDIT部分依賴組合關(guān)鍵字(SNO,CNO)而不是完全依賴。

            解決方法:分成兩個(gè)關(guān)系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新關(guān)系包括兩個(gè)關(guān)系模式,它們之間通過(guò)SCN中
          的外關(guān)鍵字CNO相聯(lián)系,需要時(shí)再進(jìn)行自然聯(lián)接,恢復(fù)了原來(lái)的關(guān)系
           第三范式(3NF):如果關(guān)系模式R(U,F(xiàn))中的所有非主屬性對(duì)任何候選關(guān)鍵字都不存在傳遞信賴,則稱關(guān)系R是屬于第三范式的。

          例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各屬性分別代表學(xué)號(hào),
          姓名,所在系,系名稱,系地址。
          關(guān)鍵字SNO決定各個(gè)屬性。由于是單個(gè)關(guān)鍵字,沒(méi)有部分依賴的問(wèn)題,肯定是2NF。但這關(guān)系肯定有大量的冗余,有關(guān)學(xué)生所在的幾個(gè)
          屬性DNO,DNAME,LOCATION將重復(fù)存儲(chǔ),插入,刪除和修改時(shí)也將產(chǎn)生類似以上例的情況。
          原因:關(guān)系中存在傳遞依賴造成的。即SNO -> DNO。 而DNO -> SNO卻不存在,DNO -> LOCATION, 因此關(guān)鍵遼 SNO 對(duì) LOCATIO

          N 函數(shù)決定是通過(guò)傳遞依賴 SNO -> LOCATION 實(shí)現(xiàn)的。也就是說(shuō),SNO不直接決定非主屬性LOCATION。
          解決目地:每個(gè)關(guān)系模式中不能留有傳遞依賴。
          解決方法:分為兩個(gè)關(guān)系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)
          注意:關(guān)系S中不能沒(méi)有外關(guān)鍵字DNO。否則兩個(gè)關(guān)系之間失去聯(lián)系。

          7,簡(jiǎn)述oracle行觸發(fā)器的變化表限制表的概念和使用限制,行觸發(fā)器里面對(duì)這兩個(gè)表有什么限制。

          變化表mutating table
          被DML語(yǔ)句正在修改的表
          需要作為DELETE CASCADE參考完整性限制的結(jié)果進(jìn)行更新的表也是變化的

          限制:對(duì)于Session本身,不能讀取正在變化的表

          限制表constraining table
          需要對(duì)參考完整性限制執(zhí)行讀操作的表

          限制:如果限制列正在被改變,那么讀取或修改會(huì)觸發(fā)錯(cuò)誤,但是修改其它列是允許的。

          8、oracle臨時(shí)表有幾種。
          臨時(shí)表和普通表的主要區(qū)別有哪些,使用臨時(shí)表的主要原因是什么?

          在Oracle中,可以創(chuàng)建以下兩種臨時(shí)表:
          a。會(huì)話特有的臨時(shí)表

          CREATE GLOBAL TEMPORARY ( )  ON COMMIT PRESERVE ROWS;

          b。事務(wù)特有的臨時(shí)表

          CREATE GLOBAL TEMPORARY ( )  ON COMMIT DELETE ROWS;  CREATE GLOBAL TEMPORARY TABLE MyTempTable

          所建的臨時(shí)表雖然是存在的,但是你試一下insert 一條記錄然后用別的連接登上去select,記錄是空的,明白了吧。
          下面兩句話再貼一下:

          • ON COMMIT DELETE ROWS 說(shuō)明臨時(shí)表是事務(wù)指定,每次提交后ORACLE將截?cái)啾恚▌h除全部行)

          • ON COMMIT PRESERVE ROWS 說(shuō)明臨時(shí)表是會(huì)話指定,當(dāng)中斷會(huì)話時(shí)ORACLE將截?cái)啾怼?/p>

          9,怎么實(shí)現(xiàn):使一個(gè)會(huì)話里面執(zhí)行的多個(gè)過(guò)程函數(shù)或觸發(fā)器里面都可以訪問(wèn)的全局變量的效果,并且要實(shí)現(xiàn)會(huì)話間隔離?

          --個(gè)人理解就是建立一個(gè)包,將常量或所謂的全局變量用包中的函數(shù)返回出來(lái)就可以了,摘抄一短網(wǎng)上的解決方法Oracle數(shù)據(jù)庫(kù)程序包中的變量,在本程序包中可以直接引用,但是在程序包之外,則不可以直接引用。對(duì)程序包變量的存取,可以為每個(gè)變量配套相應(yīng)的存儲(chǔ)過(guò)程<用于存儲(chǔ)數(shù)據(jù)>和函數(shù)<用于讀取數(shù)據(jù)>來(lái)實(shí)現(xiàn)。       3.2 實(shí)例    --定義程序包   create or replace package PKG_System_Constant is        C_SystemTitle nVarChar2(100):='測(cè)試全局程序變量'; --定義常數(shù)     --獲取常數(shù)<系統(tǒng)標(biāo)題>     Function FN_GetSystemTitle       Return nVarChar2;         G_CurrentDate Date:=SysDate; --定義全局變量     --獲取全局變量<當(dāng)前日期>     Function FN_GetCurrentDate       Return Date;      --設(shè)置全局變量<當(dāng)前日期>     Procedure SP_SetCurrentDate       (P_CurrentDate In Date);    End PKG_System_Constant;    /   create or replace package body PKG_System_Constant is     --獲取常數(shù)<系統(tǒng)標(biāo)題>     Function FN_GetSystemTitle       Return nVarChar2       Is      Begin        Return C_SystemTitle;       End FN_GetSystemTitle;         --獲取全局變量<當(dāng)前日期>     Function FN_GetCurrentDate       Return Date       Is      Begin        Return G_CurrentDate;       End FN_GetCurrentDate;      --設(shè)置全局變量<當(dāng)前日期>     Procedure SP_SetCurrentDate       (P_CurrentDate In Date)       Is      Begin        G_CurrentDate:=P_CurrentDate;       End SP_SetCurrentDate;    End PKG_System_Constant;    /        3.3 測(cè)試    --測(cè)試讀取常數(shù)   Select PKG_System_Constant.FN_GetSystemTitle From Dual;       --測(cè)試設(shè)置全局變量   Declare    Begin     PKG_System_Constant.SP_SetCurrentDate(To_Date('2001.01.01','yyyy.mm.dd'));    End;    /   --測(cè)試讀取全局變量   Select PKG_System_Constant.FN_GetCurrentDate From Dual;

          10,aa,bb表都有20個(gè)字段,且記錄數(shù)量都很大,aa,bb表的X字段(非空)上有索引,
          請(qǐng)用SQL列出aa表里面存在的X在bb表不存在的X的值,請(qǐng)寫出認(rèn)為最快的語(yǔ)句,并解譯原因。

          select aa.x from aa where not exists (select 'x' from bb where aa.x = bb.x) ;

          以上語(yǔ)句同時(shí)使用到了aa中x的索引和的bb中x的索引

          11,簡(jiǎn)述SGA主要組成結(jié)構(gòu)和用途?

          SGA是Oracle為一個(gè)實(shí)例分配的一組共享內(nèi)存緩沖區(qū),它包含該實(shí)例的數(shù)據(jù)和控制信息。SGA在實(shí)例啟動(dòng)時(shí)被自動(dòng)分配,當(dāng)實(shí)例關(guān)閉時(shí)被收回。數(shù)據(jù)庫(kù)的所有數(shù)據(jù)操作都要通過(guò)SGA來(lái)進(jìn)行。
          SGA中內(nèi)存根據(jù)存放信息的不同,可以分為如下幾個(gè)區(qū)域:
          a.Buffer Cache:存放數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)塊的拷貝。它是由一組緩沖塊所組成,這些緩沖塊為所有與該實(shí)例相鏈接的用戶進(jìn)程所共享。緩沖塊的數(shù)目由初始化參數(shù)DB_BLOCK_BUFFERS確定,緩沖塊的大小由初始化參數(shù)DB_BLOCK_SIZE確定。大的數(shù)據(jù)塊可提高查詢速度。它由DBWR操作。
          b. 日志緩沖區(qū)Redo Log Buffer:存放數(shù)據(jù)操作的更改信息。它們以日志項(xiàng)(redo entry)的形式存放在日志緩沖區(qū)中。當(dāng)需要進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí),日志項(xiàng)用于重構(gòu)或回滾對(duì)數(shù)據(jù)庫(kù)所做的變更。日志緩沖區(qū)的大小由初始化參數(shù)LOG_BUFFER確定。大的日志緩沖區(qū)可減少日志文件I/O的次數(shù)。后臺(tái)進(jìn)程LGWR將日志緩沖區(qū)中的信息寫入磁盤的日志文件中,可啟動(dòng)ARCH后臺(tái)進(jìn)程進(jìn)行日志信息歸檔。
          c. 共享池Shared Pool:包含用來(lái)處理的SQL語(yǔ)句信息。它包含共享SQL區(qū)和數(shù)據(jù)字典存儲(chǔ)區(qū)。共享SQL區(qū)包含執(zhí)行特定的SQL語(yǔ)句所用的信息。數(shù)據(jù)字典區(qū)用于存放數(shù)據(jù)字典,它為所有用戶進(jìn)程所共享。

          12什么是分區(qū)表?簡(jiǎn)述范圍分區(qū)和列表分區(qū)的區(qū)別,分區(qū)表的主要優(yōu)勢(shì)有哪些?

          使用分區(qū)方式建立的表叫分區(qū)表

          范圍分區(qū)
          每個(gè)分區(qū)都由一個(gè)分區(qū)鍵值范圍指定(對(duì)于一個(gè)以日期列作為分區(qū)鍵的表,“2005 年 1 月”分區(qū)包含分區(qū)鍵值為從“2005 年 1 月 1 日”
          到“2005 年 1 月 31 日”的行)。

          列表分區(qū)
          每個(gè)分區(qū)都由一個(gè)分區(qū)鍵值列表指定(對(duì)于一個(gè)地區(qū)列作為分區(qū)鍵的表,“北美”分區(qū)可能包含值“加拿大”“美國(guó)”和“墨西哥”)。

          分區(qū)功能通過(guò)改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來(lái)了極大的好處。通常,分區(qū)可以使某些查詢以及維護(hù)操作的性能大大提高。此外,分區(qū)還可以極大簡(jiǎn)化常見(jiàn)的管理任務(wù)。通過(guò)分區(qū),數(shù)據(jù)庫(kù)設(shè)計(jì)人員和管理員能夠解決前沿應(yīng)用程序帶來(lái)的一些難題。分區(qū)是構(gòu)建千兆字節(jié)數(shù)據(jù)系統(tǒng)或超高可用性系統(tǒng)的關(guān)鍵工具。

          13,背景:某數(shù)據(jù)運(yùn)行在archivelog,且用rman作過(guò)全備份和數(shù)據(jù)庫(kù)的冷備份,
          且所有的歸檔日志都有,現(xiàn)控制文件全部損壞,其他文件全部完好,請(qǐng)問(wèn)該怎么恢復(fù)該數(shù)據(jù)庫(kù),說(shuō)一兩種方法。

          回復(fù)的方法:
          一.使用冷備份,直接將冷備份的文件全部COPY到原先的目錄下,在從新啟動(dòng)數(shù)據(jù)庫(kù)就可以
          二.使用歸檔日志,

          • 啟動(dòng)數(shù)據(jù)庫(kù)NOMOUNT

          • 創(chuàng)建控制文件,控制文件指定數(shù)據(jù)文件和重做日志文件的位置.

          • 使用RECOVER DATABASE using backup controlfile until cancel 命令回復(fù)數(shù)據(jù)庫(kù),這時(shí)可以使用歸檔日志

          • ALETER DATABASE OPEN RESETLOGS;

          • 重新備份數(shù)據(jù)庫(kù)和控制文件

          14,用rman寫一個(gè)備份語(yǔ)句:備份表空間TSB,level 為2的增量備份。

          15,有個(gè)表a(x number(20),y number(20))用最快速高效的SQL向該表插入從1開(kāi)始的連續(xù)的1000萬(wàn)記錄。

          相關(guān)學(xué)習(xí)推薦:oracle數(shù)據(jù)庫(kù)學(xué)習(xí)教程

          【專題推薦】:2020年oracle面試題匯總(最新)

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)