日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库习题高阶

發(fā)布時(shí)間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库习题高阶 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自[https://www.cnblogs.com/luolizhi/p/5248230.html]
一、數(shù)據(jù)庫基礎(chǔ)

  • 數(shù)據(jù)抽象:物理抽象、概念抽象、視圖級(jí)抽象,內(nèi)模式、模式、外模式
  • SQL語言包括數(shù)據(jù)定義、數(shù)據(jù)操縱(Data Manipulation),數(shù)據(jù)控制(Data Control)
    數(shù)據(jù)定義:Create Table,Alter Table,Drop Table, Craete/DropIndex等
    數(shù)據(jù)操縱:Select ,insert,update,delete,
    數(shù)據(jù)控制:grant,revoke,commit,rollback
  • SQL常用命令:
    CREATE TABLE Student(
    ID NUMBER PRIMARY KEY,
    NAME VARCHAR2(50) NOT NULL);//建表
  • CREATE VIEW view_name AS
    Select * FROM Table_name;//建視圖

    Create UNIQUE INDEX index_name ON TableName(col_name);//建索引

    INSERT INTO tablename {column1,column2,…}values(exp1,exp2,…);//插入
    INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入視圖實(shí)際影響表
    UPDATE tablename SET name=’zang 3’ condition;//更新數(shù)據(jù)
    DELETE FROM Tablename WHERE condition;//刪除
    GRANT (Select,delete,…) ON (對(duì)象) TO USER_NAME [WITHGRANT OPTION];//授權(quán)
    REVOKE (權(quán)限表) ON(對(duì)象) FROM USER_NAME[WITH REVOKE OPTION] //撤權(quán)
    列出工作人員及其領(lǐng)導(dǎo)的名字:
    Select E.NAME, S.NAME FROM EMPLOYEE E S
    WHERE E.SUPERName=S.Name
    4. 視圖:
    5. 完整性約束:實(shí)體完整性、參照完整性、用戶定義完整性
    6. 第三范式:
    1NF:每個(gè)屬性是不可分的。 2NF:若關(guān)系R是1NF,且每個(gè)非主屬性都完全函數(shù)依賴于R的鍵。例SLC(SID#, CourceID#, SNAME,Grade),則不是2NF;3NF:若R是2NF,且它的任何非鍵屬性都不傳遞依賴于任何候選鍵。
    7. ER(實(shí)體/聯(lián)系)模型
    8. 索引作用
    9. 事務(wù):是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應(yīng)用的基本邏輯單位。事務(wù)性質(zhì):原子性、
    l 原子性。即不可分割性,事務(wù)要么全部被執(zhí)行,要么就全部不被執(zhí)行。
    l 一致性或可串性。事務(wù)的執(zhí)行使得數(shù)據(jù)庫從一種正確狀態(tài)轉(zhuǎn)換成另一種正確狀態(tài)
    l 隔離性。在事務(wù)正確提交之前,不允許把該事務(wù)對(duì)數(shù)據(jù)的任何改變提供給任何其他事務(wù),
    l 持久性。事務(wù)正確提交后,其結(jié)果將永久保存在數(shù)據(jù)庫中,即使在事務(wù)提交后有了其他故障,事務(wù)的處理結(jié)果也會(huì)得到保存。
    10. 鎖:共享鎖、互斥鎖
    兩段鎖協(xié)議:階段1:加鎖階段 階段2:解鎖階段
    11. 死鎖及處理:事務(wù)循環(huán)等待數(shù)據(jù)鎖,則會(huì)死鎖。
    死鎖處理:預(yù)防死鎖協(xié)議,死鎖恢復(fù)機(jī)制
    12. 存儲(chǔ)過程:存儲(chǔ)過程就是編譯好了的一些sql語句。
    1.存儲(chǔ)過程因?yàn)镾QL語句已經(jīng)預(yù)編繹過了,因此運(yùn)行的速度比較快。
    2. 可保證數(shù)據(jù)的安全性和完整性。通過存儲(chǔ)過程可以使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲(chǔ)過程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫的完整性。
    3.可以降低網(wǎng)絡(luò)的通信量。存儲(chǔ)過程主要是在服務(wù)器上運(yùn)行,減少對(duì)客戶機(jī)的壓力。
    4:存儲(chǔ)過程可以接受參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值。可以向程序返回錯(cuò)誤原因
    5:存儲(chǔ)過程可以包含程序流、邏輯以及對(duì)數(shù)據(jù)庫的查詢。同時(shí)可以實(shí)體封裝和隱藏了數(shù)據(jù)邏輯。
    13. 觸發(fā)器: 當(dāng)滿足觸發(fā)器條件,則系統(tǒng)自動(dòng)執(zhí)行觸發(fā)器的觸發(fā)體。
    觸發(fā)時(shí)間:有before,after.觸發(fā)事件:有insert,update,delete三種。觸發(fā)類型:有行觸發(fā)、語句觸發(fā)
    14.內(nèi)聯(lián)接,外聯(lián)接區(qū)別?
    內(nèi)連接是保證兩個(gè)表中所有的行都要滿足連接條件,而外連接則不然。
    在外連接中,某些不滿條件的列也會(huì)顯示出來,也就是說,只限制其中一個(gè)表的行,而不限制另一個(gè)表的行。分左連接、右連接、全連接三種

    SQL試題2

    一、
    教師號(hào)  星期號(hào) 是否有課
    1    2   有
    1    3   有
    2    1   有
    3    2   有`
    1    2   有
    寫一條sql語句讓你變?yōu)檫@樣的表
    教師號(hào) 星期一 星期二 星期三
    1       2   1
    2   1
    3       1
    各星期下的數(shù)字表示:對(duì)應(yīng)的教師在星期幾已經(jīng)排的課數(shù)

    二、
    書表(books)
    book_id,book_name,creatdate,Lastmodifydate,decription
    001,三個(gè)人的世界,2005-02-02,2005-07-07,NULL
    作者表(authors)
    A_id,A_name
    01,王紛
    02,李尚
    03,泰和
    部門表(depts)
    d_id,d_name
    001,編輯一部
    002,編輯二部
    003,編輯三部
    書和作者關(guān)聯(lián)表(bookmap)
    book_id,A_id
    001,01
    001,02
    001,03
    部門和作者關(guān)聯(lián)表(depmap)
    d_id,a_id
    001,01
    002,02
    003,03
    找出每個(gè)部門的所寫的總書兩,比如,一本書有3個(gè)人寫,如果三個(gè)人在不同的部門,則每個(gè)部門的總數(shù)量就是1.最后結(jié)果如下:
    部門,書量
    編輯一部,1
    編輯二部,1
    編輯三部,1

    三、
    兩個(gè)表情況
    表名:wu_plan
    ID plan model corp_code plannum prixis
    1 00001 exx22 nokia 2000 0
    2 00002 lc001 sony 3000 0

    表名:wu_bom
    ID plan pact amount
    1 00001 aa1 300
    2 00001 aa2 200
    3 00002 bb1 500
    4 00002 bb2 800
    5 00002 bb3 400

    查詢這兩個(gè)表中plan唯一,每一個(gè)plan中,amount最少的,plannum大于prixis的記錄
    結(jié)果是:
    ID plan model corp_code plannum prixis pact amount
    1 00001 exx22 nokia 2000 0 a2 200
    2 00002 lc001 sony 3000 0 bb3 400

    四、
    表1結(jié)構(gòu)如下:
    部門 條碼 品名 銷售額 銷售數(shù)量 銷售日期

    表2結(jié)構(gòu)如下
    課別 部門

    要求:先按部門排序,再按銷售額、銷售數(shù)量排序檢索出某個(gè)課別每個(gè)部門一個(gè)時(shí)期內(nèi)的商品銷售額的前三名,如查詢01課別2007年4月15日到2007年4月22日每個(gè)部門一個(gè)周內(nèi)的商品銷售額合計(jì)的前三名

    SQL 面試題目匯總

    1.觸發(fā)器的作用?

    答:觸發(fā)器是一中特殊的存儲(chǔ)過程,主要是通過事件來觸發(fā)而被執(zhí)行的。它可以強(qiáng)化約束,來維護(hù)數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以聯(lián)級(jí)運(yùn)算。如,某表上的觸發(fā)器上包含對(duì)另一個(gè)表的數(shù)據(jù)操作,而該操作又會(huì)導(dǎo)致該表觸發(fā)器被觸發(fā)。

    2。什么是存儲(chǔ)過程?用什么來調(diào)用?

    答:存儲(chǔ)過程是一個(gè)預(yù)編譯的SQL語句,優(yōu)點(diǎn)是允許模塊化的設(shè)計(jì),就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次SQL,使用存儲(chǔ)過程比單純SQL語句執(zhí)行要快。可以用一個(gè)命令對(duì)象來調(diào)用存儲(chǔ)過程。

    3。索引的作用?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?

    答:索引就一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以利用它加速對(duì)數(shù)據(jù)的檢索。它很類似與現(xiàn)實(shí)生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的 數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個(gè)列或者是多個(gè)列。缺點(diǎn)是它減慢了數(shù)據(jù)錄入的速度,同時(shí)也增加了數(shù)據(jù)庫的尺寸大小。

    3。什么是內(nèi)存泄漏?

    答:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的,大小任意的,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字new等 創(chuàng)建對(duì)象時(shí),就從堆中為它分配一塊內(nèi)存,使用完后程序調(diào)用free或者delete釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。

    4。維護(hù)數(shù)據(jù)庫的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?

    答:我是這樣做的,盡可能使用約束,如check,主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩,編程復(fù)雜,效率低下。

    5。什么是事務(wù)?什么是鎖?

    答:事務(wù)就是被綁定在一起作為一個(gè)邏輯工作單元的SQL語句分組,如果任何一個(gè)語句操作失敗那么整個(gè)操作就被失敗,以后操作就會(huì)回滾到操作前狀態(tài),或者是上有個(gè)節(jié)點(diǎn)。為了確保要么執(zhí)行,要么不執(zhí)行,就可以使用事務(wù)。要將有組語句作為事務(wù)考慮,就需要通過ACID測(cè)試,即原子性,一致性,隔離性和持久性。鎖:在所以的DBMS中,鎖是實(shí)現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實(shí)生活中鎖一樣,它可以使某些數(shù)據(jù)的擁有者,在某段時(shí)間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級(jí)別的。

    6。什么叫視圖?游標(biāo)是什么?

    答:視圖是一種虛擬的表,具有和物理表相同的功能。可以對(duì)視圖進(jìn)行增,改,查,操作,試圖通常是有一個(gè)表或者多個(gè)表的行或列的子集。對(duì)視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。游標(biāo):是對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理。游標(biāo)可以定在該單元中的特定行,從結(jié)果集的當(dāng)前行檢索一行或多行。可以對(duì)結(jié)果集當(dāng)前行做修改。一般不使用游標(biāo),但是需要逐條處理數(shù)據(jù)的時(shí)候,游標(biāo)顯得十分重要。

    7。為管理業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表:

    S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學(xué)號(hào),學(xué)員姓名,所屬單位,學(xué)員年齡

    C(C#,CN)C#,CN分別代表課程編號(hào),課程名稱

    SC(S#,C#,G) S#,C#,G分別代表學(xué)號(hào),所選的課程編號(hào),學(xué)習(xí)成績(jī)

    (1)使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號(hào)和姓名?

    答案:select s# ,sn from s where S# in(select S# from c,scwhere c.c#=sc.c# and cn=’稅收基礎(chǔ)’)

    (2) 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號(hào)為’C2’的學(xué)員姓名和所屬單位?

    答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’

    (3) 使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號(hào)為’C5’的學(xué)員姓名和所屬單位?

    答:select sn,sd from s where s# not in(select s# from scwhere c#=’c5’)

    (4)查詢選修了課程的學(xué)員人數(shù)

    答:select 學(xué)員人數(shù)=count(distinct s#)from sc

    (5) 查詢選修課程超過5門的學(xué)員學(xué)號(hào)和所屬單位?

    答:select sn,sd from s where s# in(select s# from sc groupby s# having count(distinct c#)>5)

    目前在職場(chǎng)中很難找到非常合格的數(shù)據(jù)庫開發(fā)人員。有人說:“SQL開發(fā)是一門語言,它很容易學(xué),但是很難掌握。”

    華為http://sqlserver.365dev.net/sql-1981.html

    在面試過程中多次碰到兩道SQL查詢的題目,一是查詢A(ID,Name)表中第31至40條記錄,ID作為主鍵可能是不是連續(xù)增長(zhǎng)的列,完整的查詢語句如下:

    select top 10 * from A where ID >(select max(ID) from(select top 30 ID from A order by A ) T) order by A

    另外一道題目的要求是查詢表A中存在ID重復(fù)三次以上的記錄,完整的查詢語句如下:
    select * from(select count(ID) as count from table group by ID)T whereT.count>3

    以上兩道題目非常有代表意義,望各位把自己碰到的有代表的查詢都貼上來。

    create table testtable1
    (
    id int IDENTITY,
    department varchar(12)
    )

    select * from testtable1
    insert into testtable1 values(‘設(shè)計(jì)’)
    insert into testtable1 values(‘市場(chǎng)’)
    insert into testtable1 values(‘售后’)
    /*
    結(jié)果
    id department
    1 設(shè)計(jì)
    2 市場(chǎng)
    3 售后
    /
    create table testtable2
    (
    id int IDENTITY,
    dptID int,
    name varchar(12)
    )
    insert into testtable2 values(1,’張三’)
    insert into testtable2 values(1,’李四’)
    insert into testtable2 values(2,’王五’)
    insert into testtable2 values(3,’彭六’)
    insert into testtable2 values(4,’陳七’)
    /
    用一條SQL語句,怎么顯示如下結(jié)果
    id dptID department name
    1 1 設(shè)計(jì) 張三
    2 1 設(shè)計(jì) 李四
    3 2 市場(chǎng) 王五
    4 3 售后 彭六
    5 4 黑人 陳七
    */

    答案是:SELECT testtable2.* , ISNULL(department,’黑人’) FROM testtable1 right join testtable2 on testtable2.dptID = testtable1.ID

    在面試應(yīng)聘的SQL Server數(shù)據(jù)庫開發(fā)人員時(shí),我運(yùn)用了一套標(biāo)準(zhǔn)的基準(zhǔn)技術(shù)問題。下面這些問題是我覺得能夠真正有助于淘汰不合格應(yīng)聘者的問題。它們按照從易到難的順序排列。當(dāng)你問到關(guān)于主鍵和外鍵的問題時(shí),后面的問題都十分有難度,因?yàn)榇鸢缚赡軙?huì)更難解釋和說明,尤其是在面試的情形下。

    你能向我簡(jiǎn)要敘述一下SQL Server 2000中使用的一些數(shù)據(jù)庫對(duì)象嗎?

    你希望聽到的答案包括這樣一些對(duì)象:表格、視圖、用戶定義的函數(shù),以及存儲(chǔ)過程;如果他們還能夠提到像觸發(fā)器這樣的對(duì)象就更好了。如果應(yīng)聘者不能回答這個(gè)基本的問題,那么這不是一個(gè)好兆頭。

    NULL是什么意思?

    NULL(空)這個(gè)值是數(shù)據(jù)庫世界里一個(gè)非常難纏的東西,所以有不少應(yīng)聘者會(huì)在這個(gè)問題上跌跟頭您也不要覺得意外。

    NULL這個(gè)值表示UNKNOWN(未知):它不表示“”(空字符串)。假設(shè)您的SQL Server數(shù)據(jù)庫里有ANSI_NULLS,當(dāng)然在默認(rèn)情況下會(huì)有,對(duì)NULL這個(gè)值的任何比較都會(huì)生產(chǎn)一個(gè)NULL值。您不能把任何值與一個(gè) UNKNOWN值進(jìn)行比較,并在邏輯上希望獲得一個(gè)答案。您必須使用IS NULL操作符。

    什么是索引?SQL Server 2000里有什么類型的索引?

    任何有經(jīng)驗(yàn)的數(shù)據(jù)庫開發(fā)人員都應(yīng)該能夠很輕易地回答這個(gè)問題。一些經(jīng)驗(yàn)不太多的開發(fā)人員能夠回答這個(gè)問題,但是有些地方會(huì)說不清楚。

    簡(jiǎn)單地說,索引是一個(gè)數(shù)據(jù)結(jié)構(gòu),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級(jí)保存數(shù)據(jù)。這意味著不論聚集索引里有表格的哪個(gè)(或哪些)字段,這些字段都 會(huì)按順序被保存在表格。由于存在這種排序,所以每個(gè)表格只會(huì)有一個(gè)聚集索引。非聚集索引在索引的葉級(jí)有一個(gè)行標(biāo)識(shí)符。這個(gè)行標(biāo)識(shí)符是一個(gè)指向磁盤上數(shù)據(jù)的指針。它允許每個(gè)表格有多個(gè)非聚集索引。

    什么是主鍵?什么是外鍵?

    主鍵是表格里的(一個(gè)或多個(gè))字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個(gè)用來建立兩個(gè)表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個(gè)表格里的主鍵字段與另外一個(gè)表格(盡管可能是同一個(gè)表格)里的一系列相連的字段。那么這些相連的字段就是外鍵。

    什么是觸發(fā)器?SQL Server 2000有什么不同類型的觸發(fā)器?

    讓未來的數(shù)據(jù)庫開發(fā)人員知道可用的觸發(fā)器類型以及如何實(shí)現(xiàn)它們是非常有益的。

    觸發(fā)器是一種專用類型的存儲(chǔ)過程,它被捆綁到SQL Server 2000的表格或者視圖上。在SQL Server 2000里,有INSTEAD-OF和AFTER兩種觸發(fā)器。INSTEAD-OF觸發(fā)器是替代數(shù)據(jù)操控語言(Data Manipulation Language,DML)語句對(duì)表格執(zhí)行語句的存儲(chǔ)過程。例如,如果我有一個(gè)用于TableA的INSTEAD-OF-UPDATE觸發(fā)器,同時(shí)對(duì)這個(gè) 表格執(zhí)行一個(gè)更新語句,那么INSTEAD-OF-UPDATE觸發(fā)器里的代碼會(huì)執(zhí)行,而不是我執(zhí)行的更新語句則不會(huì)執(zhí)行操作。

    AFTER觸發(fā)器要在DML語句在數(shù)據(jù)庫里使用之后才執(zhí)行。這些類型的觸發(fā)器對(duì)于監(jiān)視發(fā)生在數(shù)據(jù)庫表格里的數(shù)據(jù)變化十分好用。

    您如何確一個(gè)帶有名為Fld1字段的TableB表格里只具有Fld1字段里的那些值,而這些值同時(shí)在名為TableA的表格的Fld1字段里?

    這個(gè)與關(guān)系相關(guān)的問題有兩個(gè)可能的答案。第一個(gè)答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護(hù)引用的完整性。它被用來確保表格里 的字段只保存有已經(jīng)在不同的(或者相同的)表格里的另一個(gè)字段里定義了的值。這個(gè)字段就是候選鍵(通常是另外一個(gè)表格的主鍵)。

    另外一種答案是觸發(fā)器。觸發(fā)器可以被用來保證以另外一種方式實(shí)現(xiàn)與限制相同的作用,但是它非常難設(shè)置與維護(hù),而且性能一般都很糟糕。由于這個(gè)原因,微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護(hù)引用的完整性。

    對(duì)一個(gè)投入使用的在線事務(wù)處理表格有過多索引需要有什么樣的性能考慮?

    你正在尋找進(jìn)行與數(shù)據(jù)操控有關(guān)的應(yīng)聘人員。對(duì)一個(gè)表格的索引越多,數(shù)據(jù)庫引擎用來更新、插入或者刪除數(shù)據(jù)所需要的時(shí)間就越多,因?yàn)樵跀?shù)據(jù)操控發(fā)生的時(shí)候索引也必須要維護(hù)。

    你可以用什么來確保表格里的字段只接受特定范圍里的值?

    這個(gè)問題可以用多種方式來回答,但是只有一個(gè)答案是“好”答案。您希望聽到的回答是Check限制,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。

    觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義,這可能會(huì)在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。

    如果應(yīng)聘者能夠正確地回答這個(gè)問題,那么他的機(jī)會(huì)就非常大了,因?yàn)檫@表明他們具有使用存儲(chǔ)過程的經(jīng)驗(yàn)。

    返回參數(shù)總是由存儲(chǔ)過程返回,它用來表示存儲(chǔ)過程是成功還是失敗。返回參數(shù)總是INT數(shù)據(jù)類型。

    OUTPUT參數(shù)明確要求由開發(fā)人員來指定,它可以返回其他類型的數(shù)據(jù),例如字符型和數(shù)值型的值。(可以用作輸出參數(shù)的數(shù)據(jù)類型是有一些限制的。)您可以在一個(gè)存儲(chǔ)過程里使用多個(gè)OUTPUT參數(shù),而您只能夠使用一個(gè)返回參數(shù)。

    什么是相關(guān)子查詢?如何使用這些查詢?

    經(jīng)驗(yàn)更加豐富的開發(fā)人員將能夠準(zhǔn)確地描述這種類型的查詢。

    相關(guān)子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會(huì)真正請(qǐng)求外部查詢的值,從而形成一個(gè)類似于循環(huán)的狀況。

    數(shù)據(jù)庫面試

    一:SQL tuning 類

  • 列舉幾種表連接方式
    Answer:等連接(內(nèi)連接)、非等連接、自連接、外連接(左、右、全)
  • Or hash join/merge join/nest loop(cluster join)/index join ??

    ORACLE 8i,9i 表連接方法。

    一般的相等連接: select * from a, b where a.id = b.id; 這個(gè)就屬于內(nèi)連接。

    對(duì)于外連接:

    Oracle中可以使用“(+) ”來表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN

    LEFT OUTER JOIN:左外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    LEFT OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    等價(jià)于

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e, departments d

    WHERE e.department_id=d.department_id(+)

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有對(duì)應(yīng)部門編號(hào)department_id的員工記錄。

    RIGHT OUTER JOIN:右外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    RIGHT OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    等價(jià)于

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e, departments d

    WHERE e.department_id(+)=d.department_id

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有任何員工的部門記錄。

    FULL OUTER JOIN:全外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    FULL OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有對(duì)應(yīng)部門編號(hào)department_id的員工記錄和沒有任何員工的部門記錄。

    ORACLE8i是不直接支持完全外連接的語法,也就是說不能在左右兩個(gè)表上同時(shí)加上(+),下面是在ORACLE8i可以參考的完全外連接語法

    select t1.id,t2.id from table1 t1,table t2 wheret1.id=t2.id(+)

    union

    select t1.id,t2.id from table1 t1,table t2 wheret1.id(+)=t2.id

    連接類型
    定義
    圖示
    例子

    內(nèi)連接
    只連接匹配的行

    select A.c1,B.c2 from A join B on A.c3 = B.c3;

    左外連接
    包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中全部匹配的行

    select A.c1,B.c2 from A left join B on A.c3 = B.c3;

    右外連接
    包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中全部匹配的行

    select A.c1,B.c2 from A right join B on A.c3 = B.c3;

    全外連接
    包含左、右兩個(gè)表的全部行,不管在另一邊的表中是否存在與它們匹配的行

    select A.c1,B.c2 from A full join B on A.c3 = B.c3;

    (theta)連接
    使用等值以外的條件來匹配左、右兩個(gè)表中的行

    select A.c1,B.c2 from A join B on A.c3 != B.c3;

    交叉連接
    生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將一個(gè)數(shù)據(jù)源中的每個(gè)行與另一個(gè)數(shù)據(jù)源的每個(gè)行一一匹配

    select A.c1,B.c2 from A,B;

  • 不借助第三方工具,怎樣查看sql的執(zhí)行計(jì)劃
    I) 使用Explain Plan,查詢PLAN_TABLE;
  • EXPLAIN PLAN

    SET STATEMENT_ID=’QUERY1′

    FOR

    SELECT *

    FROM a

    WHERE aa=1;

    SELECT operation, options, object_name, object_type, ID,parent_id

    FROM plan_table

    WHERE STATEMENT_ID = ‘QUERY1′

    ORDER BY ID;

    II)SQLPLUS中的SET TRACE 即可看到Execution Plan Statistics

    SET AUTOTRACE ON;

  • 如何使用CBO,CBO與RULE的區(qū)別
    IF 初始化參數(shù) OPTIMIZER_MODE = CHOOSE THEN –(8I DEFAULT)
  • IF 做過表分析

    THEN 優(yōu)化器 Optimizer=CBO(COST); /高效/

    ELSE

    優(yōu)化器 Optimizer=RBO(RULE); /高效/

    END IF;

    END IF;

    區(qū)別:

    RBO根據(jù)規(guī)則選擇最佳執(zhí)行路徑來運(yùn)行查詢。

    CBO根據(jù)表統(tǒng)計(jì)找到最低成本的訪問數(shù)據(jù)的方法確定執(zhí)行計(jì)劃。

    使用CBO需要注意:

    I) 需要經(jīng)常對(duì)表進(jìn)行ANALYZE命令進(jìn)行分析統(tǒng)計(jì);

    II) 需要穩(wěn)定執(zhí)行計(jì)劃;

    III)需要使用提示(Hint);

    使用RULE需要注意:

    I) 選擇最有效率的表名順序

    II) 優(yōu)化SQL的寫法;

    在optimizer_mode=choose時(shí),如果表有統(tǒng)計(jì)信息(分區(qū)表外),優(yōu)化器將選擇CBO,否則選RBO。

    RBO遵循簡(jiǎn)單的分級(jí)方法學(xué),使用15種級(jí)別要點(diǎn),當(dāng)接收到查詢,優(yōu)化器將評(píng)估使用到的要點(diǎn)數(shù)目,然后選擇最佳級(jí)別(最少的數(shù)量)的執(zhí)行路徑來運(yùn)行查詢。

    CBO嘗試找到最低成本的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應(yīng)時(shí)間,計(jì)算使用不同的執(zhí)行計(jì)劃的成本,并選擇成本最低的一個(gè),關(guān)于表的數(shù)據(jù)內(nèi)容的統(tǒng)計(jì)被用于確定執(zhí)行計(jì)劃。

  • 如何定位重要(消耗資源多)的SQL
    使用CPU多的用戶session
  • SELECT a.SID, spid, status, SUBSTR (a.program, 1, 40) prog,a.terminal,a.SQL_TEXT, osuser, VALUE / 60 / 100 VALUE

    FROM vsessiona,vsession a, vsessiona,vprocess b, v$sesstat c

    WHERE c.statistic# = 12 AND c.SID = a.SID AND a.paddr =b.addr

    ORDER BY VALUE DESC;

    select sql_text from v$sql

    where disk_reads > 1000 or (executions > 0 andbuffer_gets/executions > 30000);

  • 如何跟蹤某個(gè)session的SQL
    利用TRACE 跟蹤
  • ALTER SESSION SET SQLTRACE ON;

    COLUMN SQL format a200;

    SELECT machine, sql_text SQL

    FROM vsqltexta,vsqltext a, vsqltexta,vsession b

    WHERE address = sql_address

    AND machine = ‘&A’

    ORDER BY hash_value, piece;

    execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

    select sid,serial# from vsessionwheresid=(selectsidfromvsession where sid = (select sidfrom vsessionwheresid=(selectsidfromvmystat where rownum = 1);

    exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,”);

  • SQL調(diào)整最關(guān)注的是什么
    檢查系統(tǒng)的I/O問題
  • sar-d能檢查整個(gè)系統(tǒng)的iostat(IO statistics)

    查看該SQL的response time(db blockgets/consistent gets/physical reads/sorts (disk))

  • 說說你對(duì)索引的認(rèn)識(shí)(索引的結(jié)構(gòu)、對(duì)dml影響、對(duì)查詢影響、為什么提高查詢性能)
    索引有B-TREE、BIT、CLUSTER等類型。ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree結(jié)構(gòu);通常來說,在表上建立恰當(dāng)?shù)乃饕?#xff0c;查詢時(shí)會(huì)改 進(jìn)查詢性能。但在進(jìn)行插入、刪除、修改時(shí),同時(shí)會(huì)進(jìn)行索引的修改,在性能上有一定的影響。有索引且查詢條件能使用索引時(shí),數(shù)據(jù)庫會(huì)先度取索引,根據(jù)索引內(nèi)容和查詢條件,查詢出ROWID,再根據(jù)ROWID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很多,因此通過先讀索引,能減少I/O,提高查詢性 能。
  • b-tree index/bitmap index/function index/patitionalindex(local/global)索引通常能提高select/update/delete的性能,會(huì)降低insert的速度,

  • 使用索引查詢一定能提高查詢的性能嗎?為什么
    通常,通過索引查詢數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價(jià).
  • 索引需要空間來存儲(chǔ),也需要定期維護(hù), 每當(dāng)有記錄在表中增減或索引列被修改時(shí),索引本身也會(huì)被修改. 這意味著每條記錄的INSERT,DELETE,UPDATE將為此多付出4,5 次的磁盤I/O. 因?yàn)樗饕枰~外的存儲(chǔ)空間和處理,那些不必要的索引反而會(huì)使查詢反應(yīng)時(shí)間變慢.使用索引查詢不一定能提高查詢性能,索引范圍查詢(INDEX RANGE SCAN)適用于兩種情況:

    基于一個(gè)范圍的檢索,一般查詢返回結(jié)果集小于表中記錄數(shù)的30%宜采用;

    基于非唯一性索引的檢索

    索引就是為了提高查詢性能而存在的,如果在查詢中索引沒有提高性能,只能說是用錯(cuò)了索引,或者講是場(chǎng)合不同

  • 綁定變量是什么?綁定變量有什么優(yōu)缺點(diǎn)?
    綁定變量是指在SQL語句中使用變量,改變變量的值來改變SQL語句的執(zhí)行結(jié)果。
  • 優(yōu)點(diǎn):使用綁定變量,可以減少SQL語句的解析,能減少數(shù)據(jù)庫引擎消耗在SQL語句解析上的資源。提高了編程效率和可靠性。減少訪問數(shù)據(jù)庫的次數(shù), 就能實(shí)際上減少ORACLE的工作量。

    缺點(diǎn):經(jīng)常需要使用動(dòng)態(tài)SQL的寫法,由于參數(shù)的不同,可能SQL的執(zhí)行效率不同;

    綁定變量是相對(duì)文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,

    這樣的SQL在不同條件下需要反復(fù)解析,綁定變量是指使用變量來代替直接書寫條件,查詢bind value在運(yùn)行時(shí)傳遞,然后綁定執(zhí)行。

    優(yōu)點(diǎn)是減少硬解析,降低CPU的爭(zhēng)用,節(jié)省shared_pool

    缺點(diǎn)是不能使用histogram,sql優(yōu)化比較困難

  • 如何穩(wěn)定(固定)執(zhí)行計(jì)劃
    可以在SQL語句中指定執(zhí)行計(jì)劃。使用HINTS;
  • query_rewrite_enabled = true

    star_transformation_enabled = true

    optimizer_features_enable =9.2.0

    創(chuàng)建并使用stored outline

  • 和排序相關(guān)的內(nèi)存在8i和9i分別怎樣調(diào)整,臨時(shí)表空間的作用是什么
    SORT_AREA_SIZE 在進(jìn)行排序操作時(shí),如果排序的內(nèi)容太多,內(nèi)存里不能全部放下,則需要進(jìn)行外部排序,
  • 此時(shí)需要利用臨時(shí)表空間來存放排序的中間結(jié)果。

    8i中sort_area_size/sort_area_retained_size決定了排序所需要的內(nèi)存,如果排序操作不能在sort_area_size中完成,就會(huì)用到temp表空間

    9i中如果workarea_size_policy=auto時(shí),

    排序在pga內(nèi)進(jìn)行,通常pga_aggregate_target的1/20可以用來進(jìn)行disk sort;

    如果workarea_size_policy=manual時(shí),排序需要的內(nèi)存由sort_area_size決定, 在執(zhí)行order by/groupby/distinct/union/create index/index rebuild/minus等操作時(shí),如果在pga或sort_area_size中不能完成,排序?qū)⒃谂R時(shí)表空間進(jìn)行(disk sort),臨時(shí)表空間主要作用就是完成系統(tǒng)中的disk sort.

  • 存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請(qǐng)給出sql
    SELECT *
  • FROM (SELECT ROWNUM AS row_num, tmp_tab.*

    FROM (SELECT a, b, c, d

    FROM T

    ORDER BY c) tmp_tab

    WHERE ROWNUM= 20

    ORDER BY row_num;

    create table t(a number(,b number(,c number(,d number();

    /

    begin

    for i in 1 … 300 loop

    insert into tvalues(mod(i,2),i/2,dbms_random.value(1,300),i/4);

    end loop;

    end;

    /

    select * from (select c.*,rownum as rn from (select * fromt order by c desc) c) where rn between 21 and 30;

    /

    select * from (select * from test order by c desc) x whererownum < 30

    minus

    select * from (select * from test order by c desc) y whererownum < 20 order by 3 desc

    相比之 minus性能較差

    二:數(shù)據(jù)庫基本概念類
    1 Pctused and pctfree 表示什么含義有什么作用
    pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中, pctfree控制數(shù)據(jù)塊中保留用于update的空間,當(dāng)數(shù)據(jù)塊中的free space小于pctfree設(shè)置的空間時(shí),該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作free space大于pct_used設(shè)置的空間時(shí),該數(shù)據(jù)庫塊將被添加在freelist鏈表中。

    2 簡(jiǎn)單描述tablespace / segment / extent/ block之間的關(guān)系
    tablespace: 一個(gè)數(shù)據(jù)庫劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位成為表空間;每一個(gè)表空間可能包含一個(gè)或多個(gè) Segment;

    Segments: Segment指在tablespace中為特定邏輯存儲(chǔ)結(jié)構(gòu)分配的空間。每一個(gè)段是由一個(gè)或多個(gè)extent組成。包括數(shù)據(jù)段、索引段、回滾段和臨時(shí)段。

    Extents: 一個(gè) extent 由一系列連續(xù)的 Oracle blocks組成.ORACLE為通過extent 來給segment分配空間。

    Data Blocks:Oracle 數(shù)據(jù)庫最小的I/O存儲(chǔ)單位,一個(gè)data block對(duì)應(yīng)一個(gè)或多個(gè)分配給data file的操作系統(tǒng)塊。

    table創(chuàng)建時(shí),默認(rèn)創(chuàng)建了一個(gè)data segment,每個(gè)data segment含有min extents指定的extents數(shù),每個(gè)extent據(jù)據(jù)表空間的存儲(chǔ)參數(shù)分配一定數(shù)量的blocks

    3 描述tablespace和datafile之間的關(guān)系
    一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件。表空間利用增加或擴(kuò)展數(shù)據(jù)文件擴(kuò)大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文件大小的和。一個(gè)datafile只能屬于一個(gè)表空間;

    一個(gè)tablespace可以有一個(gè)或多個(gè)datafile,每個(gè)datafile只能在一個(gè)tablespace內(nèi), table中的數(shù)據(jù),通過hash算法分布在tablespace中的各個(gè)datafile中,tablespace是邏輯上的概念,datafile則 在物理上儲(chǔ)存了數(shù)據(jù)庫的種種對(duì)象。

    4 本地管理表空間和字典管理表空間的特點(diǎn),ASSM有什么特點(diǎn)
    本地管理表空間:(9i默認(rèn))空閑塊列表存儲(chǔ)在表空間的數(shù)據(jù)文件頭。

    特點(diǎn):減少數(shù)據(jù)字典表的競(jìng)爭(zhēng),當(dāng)分配和收縮空間時(shí)會(huì)產(chǎn)生回滾,不需要合并。

    字典管理表空間:(8i默認(rèn))空閑塊列表存儲(chǔ)在數(shù)據(jù)庫中的字典表里.

    特點(diǎn):片由數(shù)據(jù)字典管理,可能造成字典表的爭(zhēng)用。存儲(chǔ)在表空間的每一個(gè)段都會(huì)有不同的存儲(chǔ)字句,需要合并相鄰的塊;

    本地管理表空間(Locally Managed Tablespace簡(jiǎn)稱LMT)

    8i以后出現(xiàn)的一種新的表空間的管理模式,通過位圖來管理表空間的空間使用。字典管理表空間(Dictionary-Managed Tablespace簡(jiǎn)稱DMT)

    8i以前包括以后都還可以使用的一種表空間管理模式,通過數(shù)據(jù)字典管理表空間的空間使用。動(dòng)段空間管理(ASSM),它首次出現(xiàn)在Oracle920里有了ASSM,鏈接列表freelist被位圖所取代,它是一個(gè)二進(jìn)制的數(shù)組,

    能夠迅速有效地管理存儲(chǔ)擴(kuò)展和剩余區(qū)塊(free block),因此能夠改善分段存儲(chǔ)本質(zhì),ASSM表空間上創(chuàng)建的段還有另外一個(gè)稱呼叫Bitmap Managed Segments(BMB 段)。

    5 回滾段的作用是什么
    回滾段用于保存數(shù)據(jù)修改前的映象,這些信息用于生成讀一致性數(shù)據(jù)庫信息、在數(shù)據(jù)庫恢復(fù)和Rollback時(shí)使用。一個(gè)事務(wù)只能使用一個(gè)回滾段。

    事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時(shí)候,該數(shù)據(jù)修改前的值(即前影像)會(huì)存放在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時(shí),ORACLE將會(huì)利用回滾段中的數(shù)據(jù)前影像來將修改的數(shù)據(jù)恢復(fù)到原來的值。

    事務(wù)恢復(fù):當(dāng)事務(wù)正在處理的時(shí)候,例程失敗,回滾段的信息保存在undo表空間中,ORACLE將在下次打開數(shù)據(jù)庫時(shí)利用回滾來恢復(fù)未提交的數(shù)據(jù)。

    讀一致性:當(dāng)一個(gè)會(huì)話正在修改數(shù)據(jù)時(shí),其他的會(huì)話將看不到該會(huì)話未提交的修改。 當(dāng)一個(gè)語句正在執(zhí)行時(shí),該語句將看不到從該語句開始執(zhí)行后的未提交的修改(語句級(jí)讀一致性)

    當(dāng)ORACLE執(zhí)行SELECT語句時(shí),ORACLE依照當(dāng)前的系統(tǒng)改變號(hào)(SYSTEM CHANGE NUMBER-SCN)來保證任何前于當(dāng)前SCN的未提交的改變不被該語句處理。可以想象:當(dāng)一個(gè)長(zhǎng)時(shí)間的查詢正在執(zhí)行時(shí), 若其他會(huì)話改變了該查詢要查詢的某個(gè)數(shù)據(jù)塊,ORACLE將利用回滾段的數(shù)據(jù)前影像來構(gòu)造一個(gè)讀一致性視圖

    6 日志的作用是什么
    日志文件(Log File)記錄所有對(duì)數(shù)據(jù)庫數(shù)據(jù)的修改,主要是保護(hù)數(shù)據(jù)庫以防止故障,以及恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:

    a)每一個(gè)數(shù)據(jù)庫至少包含兩個(gè)日志文件組。每個(gè)日志文件組至少包含兩個(gè)日志文件成員。

    b)日志文件組以循環(huán)方式進(jìn)行寫操作。

    c)每一個(gè)日志文件成員對(duì)應(yīng)一個(gè)物理文件。

    記錄數(shù)據(jù)庫事務(wù),最大限度地保證數(shù)據(jù)的一致性與安全性

    重做日志文件:含對(duì)數(shù)據(jù)庫所做的更改記錄,這樣萬一出現(xiàn)故障可以啟用數(shù)據(jù)恢復(fù),一個(gè)數(shù)據(jù)庫至少需要兩個(gè)重做日志文件

    歸檔日志文件:是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢復(fù)很必要。

    7 SGA主要有那些部分,主要作用是什么
    系統(tǒng)全局區(qū)(SGA):是ORACLE為實(shí)例分配的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的管理和操作。

    SGA主要包括:

    a)共享池(shared pool) :用來存儲(chǔ)最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典的數(shù)據(jù)。

    b)數(shù)據(jù)緩沖區(qū) (database buffer cache):用來存儲(chǔ)最近從數(shù)據(jù)文件中讀寫過的數(shù)據(jù)。

    c)重作日志緩沖區(qū)(redo log buffer):用來記錄服務(wù)或后臺(tái)進(jìn)程對(duì)數(shù)據(jù)庫的操作。

    另外在SGA中還有兩個(gè)可選的內(nèi)存結(jié)構(gòu):

    d)java pool: 用來存儲(chǔ)Java代碼。

    e)Large pool: 用來存儲(chǔ)不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。

    GA:db_cache/shared_pool/large_pool/java_pool

    db_cache: 數(shù)據(jù)庫緩存(Block Buffer)對(duì)于Oracle數(shù)據(jù)庫的運(yùn)轉(zhuǎn)和性能起著非常關(guān)鍵的作用,它占據(jù)Oracle數(shù)據(jù)庫SGA(系統(tǒng)共享內(nèi)存區(qū))的主要部分。Oracle數(shù)據(jù) 庫通過使用LRU算法,將最近訪問的數(shù)據(jù)塊存放到緩存中,從而優(yōu)化對(duì)磁盤數(shù)據(jù)的訪問.

    shared_pool: 共享池的大小對(duì)于Oracle 性能來說都是很重要的。共享池中保存數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL 塊和SQL 語句及控制結(jié)構(gòu)

    large_pool: 使用MTS配置時(shí),因?yàn)橐赟GA中分配UGA來保持用戶的會(huì)話,就是用Large_pool來保持這個(gè)會(huì)話內(nèi)存使用RMAN做備份的時(shí)候,要使用Large_pool這個(gè)內(nèi)存結(jié)構(gòu)來做磁盤I/O緩存器

    java_pool: 為java procedure預(yù)備的內(nèi)存區(qū)域,如果沒有使用java proc,java_pool不是必須的

    8 Oracle系統(tǒng)進(jìn)程主要有哪些,作用是什么
    數(shù)據(jù)寫進(jìn)程(DBWR):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件

    日志寫進(jìn)程(LGWR):將重做日志緩沖區(qū)中的更改寫入在線重做日志文件

    系統(tǒng)監(jiān)控 (SMON): 檢查數(shù)據(jù)庫的一致性如有必要還會(huì)在數(shù)據(jù)庫打開時(shí)啟動(dòng)數(shù)據(jù)庫的恢復(fù)

    進(jìn)程監(jiān)控 (PMON): 負(fù)責(zé)在一個(gè)Oracle 進(jìn)程失敗時(shí)清理資源

    檢查點(diǎn)進(jìn)程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。

    歸檔進(jìn)程 (ARCH):在每次日志切換時(shí)把已滿的日志組進(jìn)行備份或歸檔

    恢復(fù)進(jìn)程 (RECO): 保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時(shí)commit,要么同時(shí)rollback;

    作業(yè)調(diào)度器(CJQ ): 負(fù)責(zé)將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完成一些預(yù)定義的工作.

    三:備份恢復(fù)類
    1 備份如何分類
    邏輯備份:exp/imp 指定表的邏輯備份

    物理備份:

    熱備份:alter tablespace begin/end backup;

    冷備份:脫機(jī)備份(database shutdown)

    RMAN備份

    full backup/incremental backup(累積/差異)

    物理備份

    物理備份是最主要的備份方式。用于保證數(shù)據(jù)庫在最小的數(shù)據(jù)庫丟失或沒有數(shù)據(jù)丟失的情況下得到恢復(fù)。

    冷物理

    冷物理備份提供了最簡(jiǎn)單和最直接的方法保護(hù)數(shù)據(jù)庫因物理損壞丟失。建議在以下幾種情況中使用。

    對(duì)一個(gè)已經(jīng)存在大最數(shù)據(jù)量的數(shù)據(jù)庫,在晚間數(shù)據(jù)庫可以關(guān)閉,此時(shí)應(yīng)用冷物理備份。

    對(duì)需對(duì)數(shù)據(jù)庫服務(wù)器進(jìn)行升級(jí),(如更換硬盤),此時(shí)需要備份數(shù)據(jù)庫信息,并在新的硬盤中恢復(fù)這些數(shù)據(jù)信息,建議采用冷物理備份。

    熱物理

    主要是指?jìng)浞葸^程在數(shù)據(jù)庫打開并且用戶可以使用的情況下進(jìn)行。需要執(zhí)行熱物理備份的情況有:

    由于數(shù)據(jù)庫性質(zhì)要求不間斷工作,因而此時(shí)只能采用熱物理備份。

    由于備份的要求的時(shí)間過長(zhǎng),而數(shù)據(jù)庫只能短時(shí)間關(guān)閉時(shí)。

    邏輯備份 (EXP/IMP)

    邏輯備份用于實(shí)現(xiàn)數(shù)據(jù)庫對(duì)象的恢復(fù)。但不是基于時(shí)間點(diǎn)可完全恢復(fù)的備份策略。只能作為聯(lián)機(jī)備份和脫機(jī)備份的一種補(bǔ)充。

    完全邏輯備份

    完全邏輯備份是將整個(gè)數(shù)據(jù)庫導(dǎo)出到一個(gè)數(shù)據(jù)庫的格式文件中,該文件可以在不同的數(shù)據(jù)庫版本、操作系統(tǒng)和硬件平臺(tái)之間進(jìn)行移植。

    指定表的邏輯備份

    通過備份工具,可以將指定的數(shù)據(jù)庫表備份出來,這可以避免完全邏輯備份所帶來的時(shí)間和財(cái)力上的浪費(fèi)。

    2 歸檔是什么含義
    關(guān)于歸檔日志:Oracle要將填滿的在線日志文件組歸檔時(shí),則要建立歸檔日志(archived redo log)。其對(duì)數(shù)據(jù)庫備份和恢復(fù)有下列用處:

    數(shù)據(jù)庫后備以及在線和歸檔日志文件,在操作系統(tǒng)和磁盤故障中可保證全部提交的事物可被恢復(fù)。

    在數(shù)據(jù)庫打開和正常系統(tǒng)使用下,如果歸檔日志是永久保存,在線后備可以進(jìn)行和使用。

    數(shù)據(jù)庫可運(yùn)行在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式

    數(shù)據(jù)庫在NOARCHIVELOG方式下使用時(shí),不能進(jìn)行在線日志的歸檔,

    數(shù)據(jù)庫在ARCHIVELOG方式下運(yùn)行,可實(shí)施在線日志的歸檔

    歸檔是歸檔當(dāng)前的聯(lián)機(jī)redo日志文件。

    SVRMGR> alter system archive log current;

    數(shù)據(jù)庫只有運(yùn)行在ARCHIVELOG模式下,并且能夠進(jìn)行自動(dòng)歸檔,才可以進(jìn)行聯(lián)機(jī)備份。有了聯(lián)機(jī)備份才有可能進(jìn)行完全恢復(fù)。

    3 如果一個(gè)表在2004-08-04 10:30:00 被drop,在有完善的歸檔和備份的情況下,如何恢復(fù)
    9i 新增的FLASH BACK 應(yīng)該可以;

    Logminer應(yīng)該可以找出DML。

    有完善的歸檔和備份,先歸檔當(dāng)前數(shù)據(jù),然后可以先恢復(fù)到刪除的時(shí)間點(diǎn)之前,把DROP 的表導(dǎo)出來,然后再恢復(fù)到最后歸檔時(shí)間;

    手工拷貝回所有備份的數(shù)據(jù)文件

    Sql〉startup mount;

    sql〉alter database recoverautomatic until time ’2004-08-04:10:30:00′;

    sql〉alter database open resetlogs;

    4 rman是什么,有何特點(diǎn)
    RMAN(Recovery Manager)是DBA的一個(gè)重要工具,用于備份、還原和恢復(fù)oracle數(shù)據(jù)庫, RMAN 可以用來備份和恢復(fù)數(shù)據(jù)庫文件、歸檔日志、控制文件、系統(tǒng)參數(shù)文件,也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。

    RMAN有三種不同的用戶接口:COMMAND LINE方式、GUI 方式(集成在OEM 中的備份管理器)、API 方式(用于集成到第三方的備份軟件中)。

    具有如下特點(diǎn):

    1)功能類似物理備份,但比物理備份強(qiáng)大N倍;

    2)可以壓縮空塊;

    3)可以在塊水平上實(shí)現(xiàn)增量;

    4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;

    5)備份與恢復(fù)的過程可以自動(dòng)管理;

    6)可以使用腳本(存在Recovery catalog 中)

    7)可以做壞塊監(jiān)測(cè)

    5 standby的特點(diǎn)
    備用數(shù)據(jù)庫(standby database):ORACLE推出的一種高可用性(HIGH AVAILABLE)數(shù)據(jù)庫方案,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)間通過日志同步來保證數(shù)據(jù)的同步,備用節(jié)點(diǎn)作為主節(jié)點(diǎn)的備份,可以實(shí)現(xiàn)快速切換與災(zāi)難性恢復(fù),從 920開始,還開始支持物理與邏輯備用服務(wù)器。

    9i中的三種數(shù)據(jù)保護(hù)模式分別是:

    1)、MAXIMIZE PROTECTION :最大數(shù)據(jù)保護(hù)與無數(shù)據(jù)分歧,LGWR將同時(shí)傳送到備用節(jié)點(diǎn),在主節(jié)點(diǎn)事務(wù)確認(rèn)之前,備用節(jié)點(diǎn)也必須完全收到日志數(shù)據(jù)。如果網(wǎng)絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問題,導(dǎo)致主節(jié)點(diǎn)DOWN機(jī)。

    2)、MAXIMIZE AVAILABILITY :無數(shù)據(jù)丟失模式,允許數(shù)據(jù)分歧,允許異步傳送。

    正常情況下運(yùn)行在最大保護(hù)模式,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)的網(wǎng)絡(luò)斷開或連接不正常時(shí),自動(dòng)切換到最大性能模式,主節(jié)點(diǎn)的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情況下有較大的性能影響。

    3)、MAXIMIZE PERFORMANCE:這種模式應(yīng)當(dāng)可以說是從8i繼承過來的備用服務(wù)器模式,異步傳送,無數(shù)據(jù)同步檢查,可能丟失數(shù)據(jù),但是能獲得主節(jié)點(diǎn)的最大性能。9i在配置DATA GUARD的時(shí)候默認(rèn)就是MAXIMIZE PERFORMANCE

    6 對(duì)于一個(gè)要求恢復(fù)時(shí)間比較短的系統(tǒng)(數(shù)據(jù)庫50G,每天歸檔5G),你如何設(shè)計(jì)備份策略
    數(shù)據(jù)庫比較大邏輯備份沒什么必要,每天歸檔5G,每周三/周六自動(dòng)歸檔10G,每月RMAN歸檔全庫。應(yīng)該有standby。

    rman/每月一號(hào) level 0 每周末/周三 level 1 其它每天level2

    四:系統(tǒng)管理類

  • 對(duì)于一個(gè)存在系統(tǒng)性能的系統(tǒng),說出你的診斷處理思路
    ü 做statspack收集系統(tǒng)相關(guān)信息 了解系統(tǒng)大致情況/確定是否存在參數(shù)設(shè)置不合適的地方/查看top 5 event/查看topsql等
  • ü 查vsystemevent/vsystem_event/vsysteme?vent/vsession_event/vsessionwait從vsession_wait從vsessionw?aitvsystem_event開始,確定需要什么資源(db file sequential read)等,深入研究vsessionevent,確定等待事件涉及的會(huì)話,從vsession_event,確定等待事件涉及的會(huì)話,從vsessione?vent,會(huì)vsession_wait確定詳細(xì)的資源爭(zhēng)用情況(p1-p3的 值:file_id/block_id/blocks等)

    ü 通過vsql/vsql/vsql/vsqltext/v$sqlarea表確定disk_reads、(buffer_gets/executions)值較大的SQL

  • 列舉幾種診斷IO、CPU、性能狀況的方法
    top uptime vmstat iostat statspack sql_trace/tkprof
  • 查vsystemevent/vsystem_event/vsysteme?vent/vsession_event/v$session_wait

    查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)

    或者第三方的監(jiān)視工具,TOAD就不錯(cuò)。

  • 對(duì)statspack有何認(rèn)識(shí)
    認(rèn)識(shí)不深。僅限了解。StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫運(yùn)行性能指標(biāo)的軟件包。可以做數(shù)據(jù)庫健康檢查報(bào)告。
  • StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫運(yùn)行性能指標(biāo)的軟件包,該軟件包從8i起,在9i、10g都有顯著的增強(qiáng)

    該軟件包的輔助表(存儲(chǔ)相關(guān)參數(shù)與收集的性能指標(biāo)的表)由最初的25個(gè)增長(zhǎng)到43個(gè)

    收集級(jí)別參數(shù)由原來的3個(gè)(0、5、10)增加到5個(gè)(0、5、6、7、10)

    通過分析收集的性能指標(biāo),數(shù)據(jù)庫管理員可以詳細(xì)地了解數(shù)據(jù)庫目前的運(yùn)行情況,對(duì)數(shù)據(jù)庫實(shí)例、等待事件、SQL等進(jìn)行優(yōu)化調(diào)整

    利用statspack收集的snapshot,可以統(tǒng)計(jì)制作數(shù)據(jù)庫的各種性能指標(biāo)的統(tǒng)計(jì)趨勢(shì)圖表。

  • 如果系統(tǒng)現(xiàn)在需要在一個(gè)很大的表上創(chuàng)建一個(gè)索引,你會(huì)考慮那些因素,如何做以盡量減小對(duì)應(yīng)用的影響
    可以先表分析一下,然后測(cè)試創(chuàng)建索引前后對(duì)應(yīng)用的性能影響;
  • 需要考慮的是該索引列不經(jīng)常更新,不是有很多重復(fù)值的情況時(shí), 在大表中使用索引特別有效. 創(chuàng)建的索引可以跟數(shù)據(jù)表分不同表空間存儲(chǔ)。

    在系統(tǒng)比較空閑時(shí)nologging選項(xiàng)(如果有dataguard則不可以使用nologging)

    大的sort_ared_size或pga_aggregate_target較大

  • 對(duì)raid10 和raid5有何認(rèn)識(shí)
    RAID 10(或稱RAID 1+0)與RAID 0+1不同,它是用硬盤驅(qū)動(dòng)器先組成RAID 1陣列,然后在RAID 1陣列之間再組成RAID 0陣列。
  • RAID 10模式同RAID 0+1模式一樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID 0+1具有更高的可靠性。RAID 10陣列的實(shí)際容量為M×n/2,磁盤利用率為50%。RAID10也需要至少4個(gè)硬盤驅(qū)動(dòng)器構(gòu)成,因而價(jià)格昂貴。

    RAID 10的可靠性同RAID 1一樣,但由于RAID 10硬盤驅(qū)動(dòng)器之間有數(shù)據(jù)分割,因而數(shù)據(jù)傳輸性能優(yōu)良。

    RAID 5與RAID 3很相似,不同之處在于RAID 5的奇偶校驗(yàn)信息也同數(shù)據(jù)一樣被分割保存到所有的硬盤驅(qū)動(dòng)器,而不是寫入一個(gè)指定的硬盤驅(qū)動(dòng)器,從而消除了單個(gè)奇偶校驗(yàn)硬盤驅(qū)動(dòng)器的瓶頸問題。RAID 5磁盤陣列的性能比RAID 3有所提高,但仍然需要至少3塊硬盤驅(qū)動(dòng)器。其實(shí)際容量為M×(n-1),磁盤利用率為(n-1)/n 。

    五:綜合隨意類

  • 你最擅長(zhǎng)的是oracle哪部分?
    pl/sql及sql優(yōu)化

  • 喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?
    喜歡。PL/SQL比較得心應(yīng)手。

  • 隨意說說你覺得oracle最有意思的部分或者最困難的部分
    我對(duì)數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯不足,自然覺得有些困難。

  • 基于ORACLE的研究應(yīng)該是個(gè)寬廣的領(lǐng)域,所以我覺得還是有意思的。

  • 為何要選擇做DBA呢?
    我對(duì)數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯不足,主要是缺乏環(huán)境和交流。
  • 因此,算不上什么DBA。不過因此我更需要這樣的機(jī)會(huì)。

    不過就整個(gè)ORACLE 來說,一直從事與它相關(guān)的工作,感情還是頗深的。放棄可惜。而且就技術(shù)本身而言我覺得自己還是有學(xué)習(xí)和創(chuàng)新的能力,它的諸如數(shù)據(jù)倉庫,數(shù)據(jù)挖掘之類的領(lǐng)域也很廣。

    數(shù)據(jù)庫面試筆試題集

    第一套
    一.選擇題

  • 下面敘述正確的是______。
    A、算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)
    B、算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
    C、算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止D、以上三種描述都不對(duì)
  • 以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。A、隊(duì)列B、線性表C、二叉樹D、棧
  • 在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。A、8 B、16 C、32 D、15
  • 下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是______。
    A、使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯
    B、模塊只有一個(gè)入口,可以有多個(gè)出口
    C、注重提高程序的執(zhí)行效率 D、不使用goto語句
  • 下面概念中,不屬于面向?qū)ο蠓椒ǖ氖莀_____。
    A、對(duì)象 B、繼承 C、類 D、過程調(diào)用
  • 在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是______。
    A、可行性分析 B、需求分析 C、詳細(xì)設(shè)計(jì) D、程序編碼
  • 在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計(jì)階段的是______。
    A、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) B、給出系統(tǒng)模塊結(jié)構(gòu) C、定義模塊算法 D、定義需求并建立系統(tǒng)模型
  • 數(shù)據(jù)庫系統(tǒng)的核心是______。
    A、數(shù)據(jù)模型 B、數(shù)據(jù)庫管理系統(tǒng) C、軟件工具 D、數(shù)據(jù)庫
  • 下列敘述中正確的是______。
    A、數(shù)據(jù)庫是一個(gè)獨(dú)立的系統(tǒng),不需要操作系統(tǒng)的支持
    B、數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)數(shù)據(jù)庫管理系統(tǒng)
    C、數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題
    D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致
  • 下列模式中,能夠給出數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是______。
    A、內(nèi)模式 B、外模式 C、概念模式 D、邏輯模式
  • Visual FoxPro數(shù)據(jù)庫文件是______。
    A、存放用戶數(shù)據(jù)的文件 B、管理數(shù)據(jù)庫對(duì)象的系統(tǒng)文件
    C、存放用戶數(shù)據(jù)和系統(tǒng)的文件 D、前三種說法都對(duì)
  • SQL語句中修改表結(jié)構(gòu)的命令是______。
    A、MODIFY TABLE B、MODIFYSTRUCTURE C、ALTER TABLE D、ALTERSTRUCTURE
  • 如果要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)組分組報(bào)表,第一個(gè)分組表達(dá)式是”部門”,第二個(gè)分組表達(dá)式是”性別”,第三個(gè)分組表達(dá)式是”基本工資”,當(dāng)前索引的索引表達(dá)式應(yīng)當(dāng)是______。
    A、部門+性別+基本工資 B、部門+性別+STR(基本工資)
    C、STR(基本工資)+性別+部門 D、性別+部門+STR(基本工資)
  • 把一個(gè)項(xiàng)目編譯成一個(gè)應(yīng)用程序時(shí),下面的敘述正確的是______。
    A、所有的項(xiàng)目文件將組合為一個(gè)單一的應(yīng)用程序文件
    B、所有項(xiàng)目的包含文件將組合為一個(gè)單一的應(yīng)用程序文件
    C、所有項(xiàng)目排除的文件將組合為一個(gè)單一的應(yīng)用程序文件
    D、由用戶選定的項(xiàng)目文件將組合為一個(gè)單一的應(yīng)用程序文件
  • 數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS三者之間的關(guān)系是______。
    A、DBS包括DB和DBMS B、DBMS包括DB和DBS
    C、DB包括DBS和DBMS D、DBS就是DB,也就是DBMS
  • 在”選項(xiàng)”對(duì)話框的”文件位置”選項(xiàng)卡中可以設(shè)置______。
    A、表單的默認(rèn)大小 B、默認(rèn)目錄
    C、日期和時(shí)間的顯示格式 D、程序代碼的顏色
  • 要控制兩個(gè)表中數(shù)據(jù)的完整性和一致性可以設(shè)置”參照完整性”,要求這兩個(gè)表______。
    A、是同一個(gè)數(shù)據(jù)庫中的兩個(gè)表 B、不同數(shù)據(jù)庫中的兩個(gè)表
    C、兩個(gè)自由表 D、一個(gè)是數(shù)據(jù)庫表另一個(gè)是自由表
  • 定位第一條記錄上的命令是______。
    A、GO TOP B、GO BOTTOM C、GO 6 D、SKIP
  • 在關(guān)系模型中,實(shí)現(xiàn)”關(guān)系中不允許出現(xiàn)相同的元組”的約束是通過______。
    A、候選鍵 B、主鍵 C、外鍵 D、超鍵
  • 設(shè)當(dāng)前數(shù)據(jù)庫有10條記錄(記錄未進(jìn)行任何索引),在下列三種情況下,當(dāng)前記錄號(hào)為1時(shí);EOF()為真時(shí);BOF()為真時(shí),命令?RECN()的結(jié)果分別是______。
    A、1,11,1 B、1,10,1 C、1,11,0 D、1,10,0
  • 下列表達(dá)式中結(jié)果不是日期型的是______。
    A、CTOD(“2000/10/01″) B、{^99/10/01}+365C、VAL(“2000/10/01″) D、DATE()
  • 只有滿足聯(lián)接條件的記錄才包含在查詢結(jié)果中,這種聯(lián)接為______。
    A、左聯(lián)接 B、右聯(lián)接 C、內(nèi)部聯(lián)接 D、完全聯(lián)接
  • 索引字段值不唯一,應(yīng)該選擇的索引類型為______。
    A、主索引 B、普通索引 C、候選索引 D、唯一索引
  • 執(zhí)行SELECT 0選擇工作區(qū)的結(jié)果是______。
    A、選擇了0號(hào)工作區(qū) B、選擇了空閑的最小號(hào)工作區(qū)
    C、關(guān)閉選擇的工作區(qū) D、選擇已打開的工作區(qū)
  • 從數(shù)據(jù)庫中刪除表的命令是______。
    A、DROP TABLE B、ALTER TABLE C、DELETE TABLE D、USE
  • DELETE FROM S WHERE 年齡>60語句的功能是______。
    A、從S表中徹底刪除年齡大于60歲的記錄 B、S表中年齡大于60歲的記錄被加上刪除標(biāo)記
    C、刪除S表 D、刪除S表的年齡列
  • SELECT-SQL語句是______。
    A、選擇工作區(qū)語句 B、數(shù)據(jù)查詢語句 C、選擇標(biāo)準(zhǔn)語句 D、數(shù)據(jù)修改語句
  • SQL語言是______語言。A、層次數(shù)據(jù)庫 B、網(wǎng)絡(luò)數(shù)據(jù)庫 C、關(guān)系數(shù)據(jù)庫 D、非數(shù)據(jù)庫
  • 在SQL中,刪除視圖用______。
    A、DROP SCHEMA命令 B、CREATE TABLE命令 C、DROPVIEW命令 D、DROP INDEX命令
  • 以下屬于非容器類控件的是______。A、Form B、Label C、pageD、Container
  • 將查詢結(jié)果放在數(shù)組中應(yīng)使用______短語。
    A、INTO CURSOR B、TO ARRAY C、INTO TABLE D、INTO ARRAY
  • 在命令窗口執(zhí)行SQL命令時(shí),若命令要占用多行,續(xù)行符是______。
    A、冒號(hào)(? B、分號(hào)(? C、逗號(hào)(,) D、連字符(-)
  • 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    對(duì)于圖書管理數(shù)據(jù)庫,查詢0001號(hào)借書證的讀者姓名和所借圖書的書名。
    SQL語句正確的是______。
    SELECT 姓名,書名 FROM 借閱,圖書,讀者 WHERE;
    借閱.借書證號(hào)=”0001″ AND;


  • A、圖書.總編號(hào)=借閱.總編號(hào) AND;
    讀者.借書證號(hào)=借閱.借書證號(hào)
    B、圖書.分類號(hào)=借閱.分類號(hào) AND;
    讀者.借書證號(hào)=借閱.借書證號(hào)
    C、讀者.總編號(hào)=借閱.總編號(hào) AND;
    讀者.借書證號(hào)=借閱.借書證號(hào)
    D、圖書.總編號(hào)=借閱.總編號(hào) AND;
    讀者.書名=借閱.書名
    34. 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    對(duì)于圖書管理數(shù)據(jù)庫,分別求出各個(gè)單位當(dāng)前借閱圖書的讀者人次。下面的SQL語句正確的是______。
    SELECT 單位,______ FROM 借閱,讀者 WHERE;
    借閱.借書證號(hào)=讀者.借書證號(hào) ______
    A、COUNT(借閱.借書證號(hào)) GROUP BY 單位 B、SUM(借閱.借書證號(hào)) GROUP BY 單位
    C、COUNT(借閱.借書證號(hào)) ORDER BY 單位 D、COUNT(借閱.借書證號(hào)) HAVING 單位
    35. 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    對(duì)于圖書管理數(shù)據(jù)庫,檢索借閱了《現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)》一書的借書證號(hào)。下面SQL語句正確的是______。
    SELECT 借書證號(hào) FROM 借閱 WHERE 總編號(hào)=;


    A、(SELECT 借書證號(hào) FROM 圖書 WHERE 書名=”現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)”)
    B、(SELECT 總編號(hào) FROM 圖書 WHERE 書名=”現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)”)
    C、(SELECT 借書證號(hào) FROM 借閱 WHERE 書名=”現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)”)
    D、(SELECT 總編號(hào) FROM 借閱 WHERE 書名=”現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)”)
    二、填空題
    36. 算法的復(fù)雜度主要包括______復(fù)雜度和空間復(fù)雜度。
    37. 數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的______。
    38. 若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和______測(cè)試方法。
    39. 如果一個(gè)工人可管理多個(gè)設(shè)施,而一個(gè)設(shè)施只被一個(gè)工人管理,則實(shí)體”工人”與實(shí)體”設(shè)備”之間存在______聯(lián)系。
    40. 關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和______。
    41. 命令?LEN(“THIS IS MY BOOK”)的結(jié)果是______。
    42.SQL SELECT語句為了將查詢結(jié)果存放到臨時(shí)表中應(yīng)該使用______短語。
    43. 多欄報(bào)表的欄目數(shù)可以通過______來設(shè)置。
    44. 在打開項(xiàng)目管理器之后再打開”應(yīng)用程序生成器”,可以通過按ALT+F2鍵,快捷菜單和”工具”菜單中的______。
    45. 數(shù)據(jù)庫系統(tǒng)的核心是______。
    46. 查詢?cè)O(shè)計(jì)器中的”聯(lián)接”選項(xiàng)卡,可以控制______選擇。
    47. 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    用SQL的CREATE命令建立借閱表(字段順序要相同),請(qǐng)對(duì)下面的SQL語句填空:


  • 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    對(duì)圖書管理數(shù)據(jù)庫,查詢由”清華大學(xué)出版社”或”電子工業(yè)出版社”出版,并且單價(jià)不超出20元的書名。請(qǐng)對(duì)下面的SQL語句填空:
    SELECT 書名,出版單位,單價(jià) FROM 圖書;
    WHERE_______ AND;

  • 設(shè)有圖書管理數(shù)據(jù)庫:
    圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))
    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))
    對(duì)圖書管理數(shù)據(jù)庫,求共借出多少種圖書。請(qǐng)對(duì)下面的SQL語句填空:
    SELECT _______ FROM 借閱
    第一套題答案
    選擇題
    1-5 CCBAD 6-10 BDBCA 11-15 DCBAA 16-20 BAABA 21-25 CCBBA 26-30 BBCCB 31-35DDAAB
    填空題
    36.時(shí)間 37.模式或邏輯模式 38.黑盒 39. 一對(duì)多 或 1對(duì)多 或 一對(duì)n或 1:N 或1:n 或 1:n 或 1:N 或 一對(duì)m 或 1:M 或 1:m 或 1:m 或 1:N 40. 投影 41.1542. Into cursor 或 Into cursor cursorname 43. 頁面設(shè)置或 列數(shù) 44. 應(yīng)用程序生成器 45. 數(shù)據(jù)庫管理系統(tǒng) 或 DBMS 46. 聯(lián)接類型 或 聯(lián)接條件 47. CREATE TABLE 借閱 (借書證號(hào) C(4),總編號(hào)C(6),借書日期 D(8)) 或 CREA TABL 借閱 (借書證號(hào) C(4),總編號(hào)C(6),借書日期D(8)) 或 CREATE TABLE 借閱 (借書證號(hào) C(4),總編號(hào)C(6),借書日期 D) 或 CREA TABL 借閱 (借書證號(hào) C(4),總編號(hào)C(6),借書日期 D) 48. 單價(jià)=;
  • ALL (SELECT 工資 FROM 教師 WHERE 系號(hào)=”02″)

    與如上語句等價(jià)的SQL語句是______。

    A、SELECT DISTINCT 系號(hào) FROM 教師 WHERE工資>=;

    (SELECT MAX(工資) FROM 教師 WHERE 系號(hào)=”02″)

    B、SELECT DISTINCT 系號(hào) FROM 教師 WHERE 工資>=;

    (SELECT MIN(工資) FROM 教師 WHERE 系號(hào)=”02″)

    C、SELECT DISTINCT 系號(hào) FROM 教師 WHERE 工資>=;

    ANY(SELECT 工資 FROM 教師 WHERE 系號(hào)=”02″)

    D、SELECT DISTINCT 系號(hào) FROM 教師 WHERE 工資>=;

    SOME (SELECT 工資 FROM 教師 WHERE 系號(hào)=”02″)

    二、 填空題

  • 若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和______測(cè)試方法。

  • 數(shù)據(jù)庫系統(tǒng)的三級(jí)模式分別為______模式、內(nèi)部級(jí)模式與外部級(jí)模式。

  • 在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為______。

  • 在面向?qū)ο蠓椒ㄖ?#xff0c;信息隱蔽是通過對(duì)象的______性來實(shí)現(xiàn)的。

  • 關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增加、刪除和修改四種操作。

  • 41.要把幫助文件設(shè)置為復(fù)制到硬盤上的Foxhelp.chm文件,需要在”選項(xiàng)”對(duì)話框的______選項(xiàng)卡上設(shè)置。

  • TIME( )的返回值的數(shù)據(jù)類型是______類型。

  • 在定義字段有效性規(guī)則中,在規(guī)則框中輸入的表達(dá)式中類型是________。

  • 設(shè)計(jì)報(bào)表通常包括兩部分內(nèi)容:______和布局。

  • ______是指只有滿足聯(lián)接條件的記錄才包含在查詢結(jié)果中。

  • 設(shè)有圖書管理數(shù)據(jù)庫:

  • 圖書(總編號(hào)C(6),分類號(hào)C(8),書名C(16),作者C(6),出版單位C(20),單價(jià)N(6,2))

    讀者(借書證號(hào)C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))

    借閱(借書證號(hào)C(4),總編號(hào)C(6),借書日期D(8))

    檢索書價(jià)在15元至25元(含15元和25元)之間的圖書的書名、作者、書價(jià)和分類號(hào),結(jié)果按分類號(hào)升序排序。

    SELECT 書名,作者,單價(jià),分類號(hào) FROM 圖書;

    WHERE______;

    ORDER BY______;

  • 設(shè)有如下關(guān)系表R、S和T:
  • R(BH,XM,XB,DWH)

    S(SWH,DWM)

    T(BH,XM,XB,DWH)

    實(shí)現(xiàn)R∪T的SQL語句是_______。

  • 設(shè)有如下關(guān)系表R:
  • R(NO,NAME,SEX,AGE,CLASS)

    主關(guān)鍵字是NO

    其中NO為學(xué)號(hào),NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號(hào)。寫出實(shí)現(xiàn)下列功能的SQL語句。

    插入”95031″班學(xué)號(hào)為30,姓名為”鄭和”的學(xué)生記錄;_______。

  • 設(shè)有如下關(guān)系表R:
  • R(NO,NAME,SEX,AGE,CLASS)

    主關(guān)鍵字是NO

    其中NO為學(xué)號(hào)(數(shù)值型),NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號(hào)。寫出實(shí)現(xiàn)下列功能的SQL語句。

    刪除學(xué)號(hào)為20的學(xué)生記錄;______。

    第二套題答案

    1-5 CBBDD 6-10 CBBCC 11-15 DDCCA 16-20 DCBCA 21-25 BBDAC26-30 CDCBD 31-35 ACBBA

    36.黑盒 37.概念或概念級(jí) 38.n(n-1)/2 39.封裝 40.查詢 41.文件位置 42.字符 或 C43.邏輯表達(dá)式

    44.數(shù)據(jù)源 45.內(nèi)部聯(lián)接

  • 單價(jià) BETWEEN 15 AND 25 或 單價(jià) BETW 15 AND 25 或 單價(jià) BETWE 15 AND 25 或單價(jià)>=15 and 單價(jià)=15 and 單價(jià)=15 and 單價(jià)15 and 單價(jià)=

  • SELECT * FROM R UNION SELECT * FROM T 或 SELE * FROM R UNIO SELE * FROM T 或 SELECT FROM R UNIO SELECT * FROM T 或 SELE * FROM R UNION SELE FROM T

  • INSERT INTO R(NO,NAME,CLASS) VALUES(30,”鄭和”,”95031″) 或 INSE INTO R(NO,NAME,CLASS)VALUES(30,”鄭和”,”95031″)

  • DELETE FROM R WHERE NO=20 或DELE FROM R WHERE NO=20 或 DELE FROM R WHER NO=20 或 DELETE FROM R WHER NO=20

  • Oracle 面試題集錦-技術(shù)篇

  • 解釋冷備份和熱備份的不同點(diǎn)以及各自的優(yōu)點(diǎn)
  • 解答:熱備份針對(duì)歸檔模式的數(shù)據(jù)庫,在數(shù)據(jù)庫仍舊處于工作狀態(tài)時(shí)進(jìn)行備份。而冷備份指在數(shù)據(jù)庫關(guān)閉后,進(jìn)行備份,適用于所有模式的數(shù)據(jù)庫。熱備份的 優(yōu)點(diǎn)在于當(dāng)備份時(shí),數(shù)據(jù)庫仍舊可以被使用并且可以將數(shù)據(jù)庫恢復(fù)到任意一個(gè)時(shí)間點(diǎn)。冷備份的優(yōu)點(diǎn)在于它的備份和恢復(fù)操作相當(dāng)簡(jiǎn)單,并且由于冷備份的數(shù)據(jù)庫可以工作在非歸檔模式下,數(shù)據(jù)庫性能會(huì)比歸檔模式稍好。(因?yàn)椴槐貙rchive log寫入硬盤)

  • 你必須利用備份恢復(fù)數(shù)據(jù)庫,但是你沒有控制文件,該如何解決問題呢?
  • 解答:重建控制文件,用帶backup control file 子句的recover命令恢復(fù)

    數(shù)據(jù)庫。

  • 如何轉(zhuǎn)換init.ora到spfile?
  • 解答:使用create spfile from pfile 命令.

  • 解釋data block , extent 和 segment的區(qū)別(這里建議用英文術(shù)語)
  • 解答:data block是數(shù)據(jù)庫中最小的邏輯存儲(chǔ)單元。當(dāng)數(shù)據(jù)庫的對(duì)象需要更多的物理存儲(chǔ)空間時(shí),連續(xù)的data block就組成了extent . 一個(gè)數(shù)據(jù)庫對(duì)象

    擁有的所有extents被稱為該對(duì)象的segment.

  • 給出兩個(gè)檢查表結(jié)構(gòu)的方法
  • 解答:1。DESCRIBE命令

  • DBMS_METADATA.GET_DDL 包

  • 怎樣查看數(shù)據(jù)庫引擎的報(bào)錯(cuò)

  • 解答:alert log.

  • 比較truncate和delete 命令
  • 解答:兩者都可以用來刪除表中所有的記錄。區(qū)別在于:truncate是DDL操作,它移動(dòng)HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花費(fèi)較長(zhǎng)時(shí)間.

  • 使用索引的理由
  • 解答:快速訪問表中的data block

  • 給出在STAR SCHEMA中的兩種表及它們分別含有的數(shù)據(jù)
  • 解答:Fact tables 和dimension tables.fact table 包含大量的主要的信息而 dimension tables 存放對(duì)fact table 某些屬性描述的信息

  • FACT Table上需要建立何種索引?
  • 解答:位圖索引 (bitmap index)

  • 給出兩種相關(guān)約束?
  • 解答:主鍵和外鍵

  • 如何在不影響子表的前提下,重建一個(gè)母表
  • 解答:子表的外鍵強(qiáng)制實(shí)效,重建母表,激活外鍵

  • 解釋歸檔和非歸檔模式之間的不同和它們各自的優(yōu)缺點(diǎn)
  • 解答:歸檔模式是指你可以備份所有的數(shù)據(jù)庫 transactions并恢復(fù)到任意一個(gè)時(shí)間點(diǎn)。非歸檔模式則相反,不能恢復(fù)到任意一個(gè)時(shí)間點(diǎn)。但是非歸檔模式可以帶來數(shù)據(jù)庫性能上的少許提高.

  • 如何建立一個(gè)備份控制文件?
  • 解答:Alter database backup control file to trace.

  • 給出數(shù)據(jù)庫正常啟動(dòng)所經(jīng)歷的幾種狀態(tài) ?
  • 解答:

    STARTUP NOMOUNT – 數(shù)據(jù)庫實(shí)例啟動(dòng)

    STARTUP MOUNT – 數(shù)據(jù)庫裝載

    STARTUP OPEN – 數(shù)據(jù)庫打開

  • 哪個(gè)column可以用來區(qū)別V視圖和GV視圖和GVGV視圖?
  • 解答: INST_ID 指明集群環(huán)境中具體的 某個(gè)instance 。

  • 如何生成explain plan?
  • 解答:運(yùn)行utlxplan.sql. 建立plan 表

    針對(duì)特定SQL語句,使用 explain plan set statement_id= ‘tst1′ into plan_table

    運(yùn)行utlxplp.sql 或 utlxpls.sql察看explain plan

  • 如何增加buffer cache的命中率?
  • 解答:在數(shù)據(jù)庫較繁忙時(shí),適用buffer cache advisory 工具,查詢v$db_cache_advice . 如果有必要更改,可以使用 altersystem set db_cache_size 命令

  • ORA-01555的應(yīng)對(duì)方法?
  • 解答:具體的出錯(cuò)信息是snapshot too old within rollback seg , 通常可以通過

    增大rollback seg來解決問題。當(dāng)然也需要察看一下具體造成錯(cuò)誤的SQL文本

  • 解釋ORACLEHOME和ORACLE_HOME和ORACLEH?OMEORACLE_BASE的區(qū)別?
  • 解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產(chǎn)品的目錄。

  • 如何判斷數(shù)據(jù)庫的時(shí)區(qū)?
  • 解答:SELECT DBTIMEZONE FROM DUAL;

  • 解釋GLOBAL_NAMES設(shè)為TRUE的用途
  • 解答:GLOBAL_NAMES指明聯(lián)接數(shù)據(jù)庫的方式。如果這個(gè)參數(shù)設(shè)置為TRUE,在建立數(shù)據(jù)庫鏈接時(shí)就必須用相同的名字連結(jié)遠(yuǎn)程數(shù)據(jù)庫

    23。如何加密PL/SQL程序?

    解答:WRAP

  • 解釋FUNCTION,PROCEDURE和PACKAGE區(qū)別
  • 解答:function 和procedure是PL/SQL代碼的集合,通常為了完成一個(gè)任務(wù)。procedure 不需要返回任何值而function將返回一個(gè)值在另一

    方面,Package是為了完成一個(gè)商業(yè)功能的一組function和proceudre的集合

  • 解釋TABLE Function的用途
  • 解答:TABLE Function是通過PL/SQL邏輯返回一組紀(jì)錄,用于普通的表/視圖。他們也用于pipeline和ETL過程。

  • 舉出3種可以收集three advisory statistics
  • 解答:Buffer Cache Advice, Segment Level Statistics, TimedStatistics

  • Audit trace 存放在哪個(gè)oracle目錄結(jié)構(gòu)中?
  • 解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer

  • 解釋materialized views的作用
  • 解答:Materialized views 用于減少那些匯總,集合和分組的信息的集合數(shù)量。它們通常適合于數(shù)據(jù)倉庫和DSS系統(tǒng)。

  • 當(dāng)用戶進(jìn)程出錯(cuò),哪個(gè)后臺(tái)進(jìn)程負(fù)責(zé)清理它
  • 解答: PMON

  • 哪個(gè)后臺(tái)進(jìn)程刷新materialized views?
  • 解答:The Job Queue Processes.

  • 如何判斷哪個(gè)session正在連結(jié)以及它們等待的資源?
  • 解答:VSESSION/VSESSION / VSESSION/VSESSION_WAIT

  • 描述什么是 redo logs
  • 解答:Redo Logs 是用于存放數(shù)據(jù)庫數(shù)據(jù)改動(dòng)狀況的物理和邏輯結(jié)構(gòu)。可以用來修復(fù)數(shù)據(jù)庫.

  • 如何進(jìn)行強(qiáng)制LOG SWITCH?
  • 解答:ALTER SYSTEM SWITCH LOGFILE;

  • 舉出兩個(gè)判斷DDL改動(dòng)的方法?
  • 解答:你可以使用 Logminer 或 Streams

  • Coalescing做了什么?
  • 解答:Coalescing針對(duì)于字典管理的tablespace進(jìn)行碎片整理,將臨近的小extents合并成單個(gè)的大extent.

  • TEMPORARY tablespace和PERMANENTtablespace 的區(qū)別是?
  • 解答:A temporary tablespace 用于臨時(shí)對(duì)象例如排序結(jié)構(gòu)而 permanent tablespaces用來存儲(chǔ)那些’真實(shí)’的對(duì)象(例如表,回滾段等)

  • 創(chuàng)建數(shù)據(jù)庫時(shí)自動(dòng)建立的tablespace名稱?
  • 解答:SYSTEM tablespace.

  • 創(chuàng)建用戶時(shí),需要賦予新用戶什么權(quán)限才能使它聯(lián)上數(shù)據(jù)庫。
  • 解答:CONNECT

  • 如何在tablespace里增加數(shù)據(jù)文件?
  • 解答:ALTER TABLESPACE ADD DATAFILE SIZE

  • 如何變動(dòng)數(shù)據(jù)文件的大小?
  • 解答:ALTER DATABASE DATAFILE RESIZE ;

  • 哪個(gè)VIEW用來檢查數(shù)據(jù)文件的大小?
  • 解答: DBA_DATA_FILES

  • 哪個(gè)VIEW用來判斷tablespace的剩余空間
  • 解答:DBA_FREE_SPACE

  • 如何判斷誰往表里增加了一條紀(jì)錄?
  • 解答:auditing

  • 如何重構(gòu)索引?
  • 解答: ALTER INDEX REBUILD;

  • 解釋什么是Partitioning(分區(qū))以及它的優(yōu)點(diǎn)。
  • 解答:Partition將大表和索引分割成更小,易于管理的分區(qū)。

  • 你剛剛編譯了一個(gè)PL/SQL Package但是有錯(cuò)誤報(bào)道,如何顯示出錯(cuò)信息?
  • 解答:SHOW ERRORS

  • 如何搜集表的各種狀態(tài)數(shù)據(jù)?
  • 解答: ANALYZE

    The ANALYZE command.

  • 如何啟動(dòng)SESSION級(jí)別的TRACE
  • 解答: DBMS_SESSION.SET_SQL_TRACE

    ALTER SESSION SET SQL_TRACE = TRUE;

  • IMPORT和SQL*LOADER 這2個(gè)工具的不同點(diǎn)
  • 解答:這兩個(gè)ORACLE工具都是用來將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫的。

    區(qū)別是:IMPORT工具只能處理由另一個(gè)ORACLE工具EXPORT生成

    的數(shù)據(jù)。而SQL*LOADER可以導(dǎo)入不同的ASCII格式的數(shù)據(jù)源

    50。用于網(wǎng)絡(luò)連接的2個(gè)文件?

    解答: TNSNAMES.ORA and SQLNET.ORA

    數(shù)據(jù)庫面試題目(一)

    一:SQL tuning 類

  • 列舉幾種表連接方式
    Answer:等連接(內(nèi)連接)、非等連接、自連接、外連接(左、右、全)
  • Or hash join/merge join/nest loop(cluster join)/index join ??

    ORACLE 8i,9i 表連接方法。

    一般的相等連接: select * from a, b where a.id = b.id; 這個(gè)就屬于內(nèi)連接。

    對(duì)于外連接:

    Oracle中可以使用“(+) ”來表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN

    LEFT OUTER JOIN:左外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    LEFT OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    等價(jià)于

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e, departments d

    WHERE e.department_id=d.department_id(+)

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有對(duì)應(yīng)部門編號(hào)department_id的員工記錄。

    RIGHT OUTER JOIN:右外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    RIGHT OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    等價(jià)于

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e, departments d

    WHERE e.department_id(+)=d.department_id

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有任何員工的部門記錄。

    FULL OUTER JOIN:全外關(guān)聯(lián)

    SELECT e.last_name, e.department_id, d.department_name

    FROM employees e

    FULL OUTER JOIN departments d

    ON (e.department_id = d.department_id);

    結(jié)果為:所有員工及對(duì)應(yīng)部門的記錄,包括沒有對(duì)應(yīng)部門編號(hào)department_id的員工記錄和沒有任何員工的部門記錄。

    ORACLE8i是不直接支持完全外連接的語法,也就是說不能在左右兩個(gè)表上同時(shí)加上(+),下面是在ORACLE8i可以參考的完全外連接語法

    select t1.id,t2.id from table1 t1,table t2 wheret1.id=t2.id(+)

    union

    select t1.id,t2.id from table1 t1,table t2 wheret1.id(+)=t2.id

    連接類型
    定義
    圖示
    例子

    內(nèi)連接
    只連接匹配的行

    select A.c1,B.c2 from A join B on A.c3 = B.c3;

    左外連接
    包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中全部匹配的行

    select A.c1,B.c2 from A left join B on A.c3 = B.c3;

    右外連接
    包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中全部匹配的行

    select A.c1,B.c2 from A right join B on A.c3 = B.c3;

    全外連接
    包含左、右兩個(gè)表的全部行,不管在另一邊的表中是否存在與它們匹配的行

    select A.c1,B.c2 from A full join B on A.c3 = B.c3;

    (theta)連接
    使用等值以外的條件來匹配左、右兩個(gè)表中的行

    select A.c1,B.c2 from A join B on A.c3 != B.c3;

    交叉連接
    生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將一個(gè)數(shù)據(jù)源中的每個(gè)行與另一個(gè)數(shù)據(jù)源的每個(gè)行一一匹配

    select A.c1,B.c2 from A,B;

  • 不借助第三方工具,怎樣查看sql的執(zhí)行計(jì)劃
    I) 使用Explain Plan,查詢PLAN_TABLE;
  • EXPLAIN PLAN

    SET STATEMENT_ID=’QUERY1′

    FOR

    SELECT *

    FROM a

    WHERE aa=1;

    SELECT operation, options, object_name, object_type, ID,parent_id

    FROM plan_table

    WHERE STATEMENT_ID = ‘QUERY1′

    ORDER BY ID;

    II)SQLPLUS中的SET TRACE 即可看到Execution Plan Statistics

    SET AUTOTRACE ON;

  • 如何使用CBO,CBO與RULE的區(qū)別
    IF 初始化參數(shù) OPTIMIZER_MODE = CHOOSE THEN –(8I DEFAULT)
  • IF 做過表分析

    THEN 優(yōu)化器 Optimizer=CBO(COST); /高效/

    ELSE

    優(yōu)化器 Optimizer=RBO(RULE); /高效/

    END IF;

    END IF;

    區(qū)別:

    RBO根據(jù)規(guī)則選擇最佳執(zhí)行路徑來運(yùn)行查詢。

    CBO根據(jù)表統(tǒng)計(jì)找到最低成本的訪問數(shù)據(jù)的方法確定執(zhí)行計(jì)劃。

    使用CBO需要注意:

    I) 需要經(jīng)常對(duì)表進(jìn)行ANALYZE命令進(jìn)行分析統(tǒng)計(jì);

    II) 需要穩(wěn)定執(zhí)行計(jì)劃;

    III)需要使用提示(Hint);

    使用RULE需要注意:

    I) 選擇最有效率的表名順序

    II) 優(yōu)化SQL的寫法;

    在optimizer_mode=choose時(shí),如果表有統(tǒng)計(jì)信息(分區(qū)表外),優(yōu)化器將選擇CBO,否則選RBO。

    RBO遵循簡(jiǎn)單的分級(jí)方法學(xué),使用15種級(jí)別要點(diǎn),當(dāng)接收到查詢,優(yōu)化器將評(píng)估使用到的要點(diǎn)數(shù)目,然后選擇最佳級(jí)別(最少的數(shù)量)的執(zhí)行路徑來運(yùn)行查詢。

    CBO嘗試找到最低成本的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應(yīng)時(shí)間,計(jì)算使用不同的執(zhí)行計(jì)劃的成本,并選擇成本最低的一個(gè),關(guān)于表的數(shù)據(jù)內(nèi)容的統(tǒng)計(jì)被用于確定執(zhí)行計(jì)劃。

  • 如何定位重要(消耗資源多)的SQL
    使用CPU多的用戶session
  • SELECT a.SID, spid, status, SUBSTR (a.program, 1, 40) prog,a.terminal,a.SQL_TEXT, osuser, VALUE / 60 / 100 VALUE

    FROM vsessiona,vsession a, vsessiona,vprocess b, v$sesstat c

    WHERE c.statistic# = 12 AND c.SID = a.SID AND a.paddr =b.addr

    ORDER BY VALUE DESC;

    select sql_text from v$sql

    where disk_reads > 1000 or (executions > 0 andbuffer_gets/executions > 30000);

  • 如何跟蹤某個(gè)session的SQL
    利用TRACE 跟蹤
  • ALTER SESSION SET SQLTRACE ON;

    COLUMN SQL format a200;

    SELECT machine, sql_text SQL

    FROM vsqltexta,vsqltext a, vsqltexta,vsession b

    WHERE address = sql_address

    AND machine = ‘&A’

    ORDER BY hash_value, piece;

    execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

    select sid,serial# from vsessionwheresid=(selectsidfromvsession where sid = (select sidfrom vsessionwheresid=(selectsidfromvmystat where rownum = 1);

    execdbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,”);

  • SQL調(diào)整最關(guān)注的是什么
    檢查系統(tǒng)的I/O問題
  • sar-d能檢查整個(gè)系統(tǒng)的iostat(IO statistics)

    查看該SQL的response time(db blockgets/consistent gets/physical reads/sorts (disk))

  • 說說你對(duì)索引的認(rèn)識(shí)(索引的結(jié)構(gòu)、對(duì)dml影響、對(duì)查詢影響、為什么提高查詢性能)
    索引有B-TREE、BIT、CLUSTER等類型。ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree結(jié)構(gòu);通常來說,在表上建立恰當(dāng)?shù)乃饕?#xff0c;查詢時(shí)會(huì)改 進(jìn)查詢性能。但在進(jìn)行插入、刪除、修改時(shí),同時(shí)會(huì)進(jìn)行索引的修改,在性能上有一定的影響。有索引且查詢條件能使用索引時(shí),數(shù)據(jù)庫會(huì)先度取索引,根據(jù)索引內(nèi)容和查詢條件,查詢出ROWID,再根據(jù)ROWID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很多,因此通過先讀索引,能減少I/O,提高查詢性 能。
  • b-tree index/bitmap index/function index/patitionalindex(local/global)索引通常能提高select/update/delete的性能,會(huì)降低insert的速度,

  • 使用索引查詢一定能提高查詢的性能嗎?為什么
    通常,通過索引查詢數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價(jià).
  • 索引需要空間來存儲(chǔ),也需要定期維護(hù), 每當(dāng)有記錄在表中增減或索引列被修改時(shí),索引本身也會(huì)被修改. 這意味著每條記錄的INSERT,DELETE,UPDATE將為此多付出4,5 次的磁盤I/O. 因?yàn)樗饕枰~外的存儲(chǔ)空間和處理,那些不必要的索引反而會(huì)使查詢反應(yīng)時(shí)間變慢.使用索引查詢不一定能提高查詢性能,索引范圍查詢(INDEX RANGE SCAN)適用于兩種情況:

    基于一個(gè)范圍的檢索,一般查詢返回結(jié)果集小于表中記錄數(shù)的30%宜采用;

    基于非唯一性索引的檢索

    索引就是為了提高查詢性能而存在的,如果在查詢中索引沒有提高性能,只能說是用錯(cuò)了索引,或者講是場(chǎng)合不同

  • 綁定變量是什么?綁定變量有什么優(yōu)缺點(diǎn)?
    綁定變量是指在SQL語句中使用變量,改變變量的值來改變SQL語句的執(zhí)行結(jié)果。
  • 優(yōu)點(diǎn):使用綁定變量,可以減少SQL語句的解析,能減少數(shù)據(jù)庫引擎消耗在SQL語句解析上的資源。提高了編程效率和可靠性。減少訪問數(shù)據(jù)庫的次數(shù), 就能實(shí)際上減少ORACLE的工作量。

    缺點(diǎn):經(jīng)常需要使用動(dòng)態(tài)SQL的寫法,由于參數(shù)的不同,可能SQL的執(zhí)行效率不同;

    綁定變量是相對(duì)文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,

    這樣的SQL在不同條件下需要反復(fù)解析,綁定變量是指使用變量來代替直接書寫條件,查詢bind value在運(yùn)行時(shí)傳遞,然后綁定執(zhí)行。

    優(yōu)點(diǎn)是減少硬解析,降低CPU的爭(zhēng)用,節(jié)省shared_pool

    缺點(diǎn)是不能使用histogram,sql優(yōu)化比較困難

  • 如何穩(wěn)定(固定)執(zhí)行計(jì)劃
    可以在SQL語句中指定執(zhí)行計(jì)劃。使用HINTS;
  • query_rewrite_enabled = true

    star_transformation_enabled = true

    optimizer_features_enable =9.2.0

    創(chuàng)建并使用stored outline

  • 和排序相關(guān)的內(nèi)存在8i和9i分別怎樣調(diào)整,臨時(shí)表空間的作用是什么
    SORT_AREA_SIZE 在進(jìn)行排序操作時(shí),如果排序的內(nèi)容太多,內(nèi)存里不能全部放下,則需要進(jìn)行外部排序,
  • 此時(shí)需要利用臨時(shí)表空間來存放排序的中間結(jié)果。

    8i中sort_area_size/sort_area_retained_size決定了排序所需要的內(nèi)存,如果排序操作不能在sort_area_size中完成,就會(huì)用到temp表空間

    9i中如果workarea_size_policy=auto時(shí),

    排序在pga內(nèi)進(jìn)行,通常pga_aggregate_target的1/20可以用來進(jìn)行disk sort;

    如果workarea_size_policy=manual時(shí),排序需要的內(nèi)存由sort_area_size決定, 在執(zhí)行order by/groupby/distinct/union/create index/index rebuild/minus等操作時(shí),如果在pga或sort_area_size中不能完成,排序?qū)⒃谂R時(shí)表空間進(jìn)行(disk sort),臨時(shí)表空間主要作用就是完成系統(tǒng)中的disk sort.

  • 存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請(qǐng)給出sql
    SELECT *
  • FROM (SELECT ROWNUM AS row_num, tmp_tab.*

    FROM (SELECT a, b, c, d

    FROM T

    ORDER BY c) tmp_tab

    WHERE ROWNUM= 20

    ORDER BY row_num;

    create table t(a number(,b number(,c number(,d number();

    /

    begin

    for i in 1 … 300 loop

    insert into tvalues(mod(i,2),i/2,dbms_random.value(1,300),i/4);

    end loop;

    end;

    /

    select * from (select c.*,rownum as rn from (select * fromt order by c desc) c) where rn between 21 and 30;

    /

    select * from (select * from test order by c desc) x whererownum < 30

    minus

    select * from (select * from test order by c desc) y whererownum < 20 order by 3 desc

    相比之 minus性能較差

    二:數(shù)據(jù)庫基本概念類
    1 Pctused and pctfree 表示什么含義有什么作用
    pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中, pctfree控制數(shù)據(jù)塊中保留用于update的空間,當(dāng)數(shù)據(jù)塊中的free space小于pctfree設(shè)置的空間時(shí),該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作free space大于pct_used設(shè)置的空間時(shí),該數(shù)據(jù)庫塊將被添加在freelist鏈表中。

    2 簡(jiǎn)單描述tablespace / segment / extent/ block之間的關(guān)系
    tablespace: 一個(gè)數(shù)據(jù)庫劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位成為表空間;每一個(gè)表空間可能包含一個(gè)或多個(gè) Segment;

    Segments: Segment指在tablespace中為特定邏輯存儲(chǔ)結(jié)構(gòu)分配的空間。每一個(gè)段是由一個(gè)或多個(gè)extent組成。包括數(shù)據(jù)段、索引段、回滾段和臨時(shí)段。

    Extents: 一個(gè) extent 由一系列連續(xù)的 Oracle blocks組成.ORACLE為通過extent 來給segment分配空間。

    Data Blocks:Oracle 數(shù)據(jù)庫最小的I/O存儲(chǔ)單位,一個(gè)data block對(duì)應(yīng)一個(gè)或多個(gè)分配給data file的操作系統(tǒng)塊。

    table創(chuàng)建時(shí),默認(rèn)創(chuàng)建了一個(gè)data segment,每個(gè)data segment含有min extents指定的extents數(shù),每個(gè)extent據(jù)據(jù)表空間的存儲(chǔ)參數(shù)分配一定數(shù)量的blocks

    3 描述tablespace和datafile之間的關(guān)系
    一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件。表空間利用增加或擴(kuò)展數(shù)據(jù)文件擴(kuò)大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文件大小的和。一個(gè)datafile只能屬于一個(gè)表空間;

    一個(gè)tablespace可以有一個(gè)或多個(gè)datafile,每個(gè)datafile只能在一個(gè)tablespace內(nèi), table中的數(shù)據(jù),通過hash算法分布在tablespace中的各個(gè)datafile中,tablespace是邏輯上的概念,datafile則 在物理上儲(chǔ)存了數(shù)據(jù)庫的種種對(duì)象。

    4 本地管理表空間和字典管理表空間的特點(diǎn),ASSM有什么特點(diǎn)
    本地管理表空間:(9i默認(rèn))空閑塊列表存儲(chǔ)在表空間的數(shù)據(jù)文件頭。

    特點(diǎn):減少數(shù)據(jù)字典表的競(jìng)爭(zhēng),當(dāng)分配和收縮空間時(shí)會(huì)產(chǎn)生回滾,不需要合并。

    字典管理表空間:(8i默認(rèn))空閑塊列表存儲(chǔ)在數(shù)據(jù)庫中的字典表里.

    特點(diǎn):片由數(shù)據(jù)字典管理,可能造成字典表的爭(zhēng)用。存儲(chǔ)在表空間的每一個(gè)段都會(huì)有不同的存儲(chǔ)字句,需要合并相鄰的塊;

    本地管理表空間(Locally Managed Tablespace簡(jiǎn)稱LMT)

    8i以后出現(xiàn)的一種新的表空間的管理模式,通過位圖來管理表空間的空間使用。字典管理表空間(Dictionary-Managed Tablespace簡(jiǎn)稱DMT)

    8i以前包括以后都還可以使用的一種表空間管理模式,通過數(shù)據(jù)字典管理表空間的空間使用。動(dòng)段空間管理(ASSM),它首次出現(xiàn)在Oracle920里有了ASSM,鏈接列表freelist被位圖所取代,它是一個(gè)二進(jìn)制的數(shù)組,

    能夠迅速有效地管理存儲(chǔ)擴(kuò)展和剩余區(qū)塊(free block),因此能夠改善分段存儲(chǔ)本質(zhì),ASSM表空間上創(chuàng)建的段還有另外一個(gè)稱呼叫Bitmap Managed Segments(BMB 段)。

    5 回滾段的作用是什么
    回滾段用于保存數(shù)據(jù)修改前的映象,這些信息用于生成讀一致性數(shù)據(jù)庫信息、在數(shù)據(jù)庫恢復(fù)和Rollback時(shí)使用。一個(gè)事務(wù)只能使用一個(gè)回滾段。

    事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時(shí)候,該數(shù)據(jù)修改前的值(即前影像)會(huì)存放在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時(shí),ORACLE將會(huì)利用回滾段中的數(shù)據(jù)前影像來將修改的數(shù)據(jù)恢復(fù)到原來的值。

    事務(wù)恢復(fù):當(dāng)事務(wù)正在處理的時(shí)候,例程失敗,回滾段的信息保存在undo表空間中,ORACLE將在下次打開數(shù)據(jù)庫時(shí)利用回滾來恢復(fù)未提交的數(shù)據(jù)。

    讀一致性:當(dāng)一個(gè)會(huì)話正在修改數(shù)據(jù)時(shí),其他的會(huì)話將看不到該會(huì)話未提交的修改。 當(dāng)一個(gè)語句正在執(zhí)行時(shí),該語句將看不到從該語句開始執(zhí)行后的未提交的修改(語句級(jí)讀一致性)

    當(dāng)ORACLE執(zhí)行SELECT語句時(shí),ORACLE依照當(dāng)前的系統(tǒng)改變號(hào)(SYSTEM CHANGE NUMBER-SCN)來保證任何前于當(dāng)前SCN的未提交的改變不被該語句處理。可以想象:當(dāng)一個(gè)長(zhǎng)時(shí)間的查詢正在執(zhí)行時(shí), 若其他會(huì)話改變了該查詢要查詢的某個(gè)數(shù)據(jù)塊,ORACLE將利用回滾段的數(shù)據(jù)前影像來構(gòu)造一個(gè)讀一致性視圖

    6 日志的作用是什么
    日志文件(Log File)記錄所有對(duì)數(shù)據(jù)庫數(shù)據(jù)的修改,主要是保護(hù)數(shù)據(jù)庫以防止故障,以及恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:

    a)每一個(gè)數(shù)據(jù)庫至少包含兩個(gè)日志文件組。每個(gè)日志文件組至少包含兩個(gè)日志文件成員。

    b)日志文件組以循環(huán)方式進(jìn)行寫操作。

    c)每一個(gè)日志文件成員對(duì)應(yīng)一個(gè)物理文件。

    記錄數(shù)據(jù)庫事務(wù),最大限度地保證數(shù)據(jù)的一致性與安全性

    重做日志文件:含對(duì)數(shù)據(jù)庫所做的更改記錄,這樣萬一出現(xiàn)故障可以啟用數(shù)據(jù)恢復(fù),一個(gè)數(shù)據(jù)庫至少需要兩個(gè)重做日志文件

    歸檔日志文件:是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢復(fù)很必要。

    7 SGA主要有那些部分,主要作用是什么
    系統(tǒng)全局區(qū)(SGA):是ORACLE為實(shí)例分配的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的管理和操作。

    SGA主要包括:

    a)共享池(shared pool) :用來存儲(chǔ)最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典的數(shù)據(jù)。

    b)數(shù)據(jù)緩沖區(qū) (database buffer cache):用來存儲(chǔ)最近從數(shù)據(jù)文件中讀寫過的數(shù)據(jù)。

    c)重作日志緩沖區(qū)(redo log buffer):用來記錄服務(wù)或后臺(tái)進(jìn)程對(duì)數(shù)據(jù)庫的操作。

    另外在SGA中還有兩個(gè)可選的內(nèi)存結(jié)構(gòu):

    d)Java pool: 用來存儲(chǔ)Java代碼。

    e)Large pool: 用來存儲(chǔ)不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。

    GA:db_cache/shared_pool/large_pool/java_pool

    db_cache: 數(shù)據(jù)庫緩存(Block Buffer)對(duì)于Oracle數(shù)據(jù)庫的運(yùn)轉(zhuǎn)和性能起著非常關(guān)鍵的作用,它占據(jù)Oracle數(shù)據(jù)庫SGA(系統(tǒng)共享內(nèi)存區(qū))的主要部分。Oracle數(shù)據(jù) 庫通過使用LRU算法,將最近訪問的數(shù)據(jù)塊存放到緩存中,從而優(yōu)化對(duì)磁盤數(shù)據(jù)的訪問.

    shared_pool: 共享池的大小對(duì)于Oracle 性能來說都是很重要的。共享池中保存數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL 塊和SQL 語句及控制結(jié)構(gòu)

    large_pool: 使用MTS配置時(shí),因?yàn)橐赟GA中分配UGA來保持用戶的會(huì)話,就是用Large_pool來保持這個(gè)會(huì)話內(nèi)存使用RMAN做備份的時(shí)候,要使用Large_pool這個(gè)內(nèi)存結(jié)構(gòu)來做磁盤I/O緩存器

    java_pool: 為java procedure預(yù)備的內(nèi)存區(qū)域,如果沒有使用java proc,java_pool不是必須的

    8 Oracle系統(tǒng)進(jìn)程主要有哪些,作用是什么
    數(shù)據(jù)寫進(jìn)程(DBWR):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件

    日志寫進(jìn)程(LGWR):將重做日志緩沖區(qū)中的更改寫入在線重做日志文件

    系統(tǒng)監(jiān)控 (SMON): 檢查數(shù)據(jù)庫的一致性如有必要還會(huì)在數(shù)據(jù)庫打開時(shí)啟動(dòng)數(shù)據(jù)庫的恢復(fù)

    進(jìn)程監(jiān)控 (PMON): 負(fù)責(zé)在一個(gè)Oracle 進(jìn)程失敗時(shí)清理資源

    檢查點(diǎn)進(jìn)程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。

    歸檔進(jìn)程 (ARCH):在每次日志切換時(shí)把已滿的日志組進(jìn)行備份或歸檔

    恢復(fù)進(jìn)程 (RECO): 保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時(shí)commit,要么同時(shí)rollback;

    作業(yè)調(diào)度器(CJQ ): 負(fù)責(zé)將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完成一些預(yù)定義的工作.

    三:備份恢復(fù)類
    1 備份如何分類
    邏輯備份:exp/imp 指定表的邏輯備份

    物理備份:

    熱備份:alter tablespace begin/end backup;

    冷備份:脫機(jī)備份(database shutdown)

    RMAN備份

    full backup/incremental backup(累積/差異)

    物理備份

    物理備份是最主要的備份方式。用于保證數(shù)據(jù)庫在最小的數(shù)據(jù)庫丟失或沒有數(shù)據(jù)丟失的情況下得到恢復(fù)。

    冷物理

    冷物理備份提供了最簡(jiǎn)單和最直接的方法保護(hù)數(shù)據(jù)庫因物理損壞丟失。建議在以下幾種情況中使用。

    對(duì)一個(gè)已經(jīng)存在大最數(shù)據(jù)量的數(shù)據(jù)庫,在晚間數(shù)據(jù)庫可以關(guān)閉,此時(shí)應(yīng)用冷物理備份。

    對(duì)需對(duì)數(shù)據(jù)庫服務(wù)器進(jìn)行升級(jí),(如更換硬盤),此時(shí)需要備份數(shù)據(jù)庫信息,并在新的硬盤中恢復(fù)這些數(shù)據(jù)信息,建議采用冷物理備份。

    熱物理

    主要是指?jìng)浞葸^程在數(shù)據(jù)庫打開并且用戶可以使用的情況下進(jìn)行。需要執(zhí)行熱物理備份的情況有:

    由于數(shù)據(jù)庫性質(zhì)要求不間斷工作,因而此時(shí)只能采用熱物理備份。

    由于備份的要求的時(shí)間過長(zhǎng),而數(shù)據(jù)庫只能短時(shí)間關(guān)閉時(shí)。

    邏輯備份 (EXP/IMP)

    邏輯備份用于實(shí)現(xiàn)數(shù)據(jù)庫對(duì)象的恢復(fù)。但不是基于時(shí)間點(diǎn)可完全恢復(fù)的備份策略。只能作為聯(lián)機(jī)備份和脫機(jī)備份的一種補(bǔ)充。

    完全邏輯備份

    完全邏輯備份是將整個(gè)數(shù)據(jù)庫導(dǎo)出到一個(gè)數(shù)據(jù)庫的格式文件中,該文件可以在不同的數(shù)據(jù)庫版本、操作系統(tǒng)和硬件平臺(tái)之間進(jìn)行移植。

    指定表的邏輯備份

    通過備份工具,可以將指定的數(shù)據(jù)庫表備份出來,這可以避免完全邏輯備份所帶來的時(shí)間和財(cái)力上的浪費(fèi)。

    2 歸檔是什么含義
    關(guān)于歸檔日志:Oracle要將填滿的在線日志文件組歸檔時(shí),則要建立歸檔日志(archived redo log)。其對(duì)數(shù)據(jù)庫備份和恢復(fù)有下列用處:

    數(shù)據(jù)庫后備以及在線和歸檔日志文件,在操作系統(tǒng)和磁盤故障中可保證全部提交的事物可被恢復(fù)。

    在數(shù)據(jù)庫打開和正常系統(tǒng)使用下,如果歸檔日志是永久保存,在線后備可以進(jìn)行和使用。

    數(shù)據(jù)庫可運(yùn)行在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式

    數(shù)據(jù)庫在NOARCHIVELOG方式下使用時(shí),不能進(jìn)行在線日志的歸檔,

    數(shù)據(jù)庫在ARCHIVELOG方式下運(yùn)行,可實(shí)施在線日志的歸檔

    歸檔是歸檔當(dāng)前的聯(lián)機(jī)redo日志文件。

    SVRMGR> alter system archive log current;

    數(shù)據(jù)庫只有運(yùn)行在ARCHIVELOG模式下,并且能夠進(jìn)行自動(dòng)歸檔,才可以進(jìn)行聯(lián)機(jī)備份。有了聯(lián)機(jī)備份才有可能進(jìn)行完全恢復(fù)。

    3 如果一個(gè)表在2004-08-04 10:30:00 被drop,在有完善的歸檔和備份的情況下,如何恢復(fù)
    9i 新增的FLASH BACK 應(yīng)該可以;

    Logminer應(yīng)該可以找出DML。

    有完善的歸檔和備份,先歸檔當(dāng)前數(shù)據(jù),然后可以先恢復(fù)到刪除的時(shí)間點(diǎn)之前,把DROP 的表導(dǎo)出來,然后再恢復(fù)到最后歸檔時(shí)間;

    手工拷貝回所有備份的數(shù)據(jù)文件

    Sql〉startup mount;

    sql〉alter database recoverautomatic until time ’2004-08-04:10:30:00′;

    sql〉alter database open resetlogs;

    4 rman是什么,有何特點(diǎn)
    RMAN(Recovery Manager)是DBA的一個(gè)重要工具,用于備份、還原和恢復(fù)oracle數(shù)據(jù)庫, RMAN 可以用來備份和恢復(fù)數(shù)據(jù)庫文件、歸檔日志、控制文件、系統(tǒng)參數(shù)文件,也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。

    RMAN有三種不同的用戶接口:COMMAND LINE方式、GUI 方式(集成在OEM 中的備份管理器)、API 方式(用于集成到第三方的備份軟件中)。

    具有如下特點(diǎn):

    1)功能類似物理備份,但比物理備份強(qiáng)大N倍;

    2)可以壓縮空塊;

    3)可以在塊水平上實(shí)現(xiàn)增量;

    4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;

    5)備份與恢復(fù)的過程可以自動(dòng)管理;

    6)可以使用腳本(存在Recovery catalog 中)

    7)可以做壞塊監(jiān)測(cè)

    5 standby的特點(diǎn)
    備用數(shù)據(jù)庫(standby database):ORACLE推出的一種高可用性(HIGH AVAILABLE)數(shù)據(jù)庫方案,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)間通過日志同步來保證數(shù)據(jù)的同步,備用節(jié)點(diǎn)作為主節(jié)點(diǎn)的備份,可以實(shí)現(xiàn)快速切換與災(zāi)難性恢復(fù),從 920開始,還開始支持物理與邏輯備用服務(wù)器。

    9i中的三種數(shù)據(jù)保護(hù)模式分別是:

    1)、MAXIMIZE PROTECTION :最大數(shù)據(jù)保護(hù)與無數(shù)據(jù)分歧,LGWR將同時(shí)傳送到備用節(jié)點(diǎn),在主節(jié)點(diǎn)事務(wù)確認(rèn)之前,備用節(jié)點(diǎn)也必須完全收到日志數(shù)據(jù)。如果網(wǎng)絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問題,導(dǎo)致主節(jié)點(diǎn)DOWN機(jī)。

    2)、MAXIMIZE AVAILABILITY :無數(shù)據(jù)丟失模式,允許數(shù)據(jù)分歧,允許異步傳送。

    正常情況下運(yùn)行在最大保護(hù)模式,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)的網(wǎng)絡(luò)斷開或連接不正常時(shí),自動(dòng)切換到最大性能模式,主節(jié)點(diǎn)的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情況下有較大的性能影響。

    3)、MAXIMIZE PERFORMANCE:這種模式應(yīng)當(dāng)可以說是從8i繼承過來的備用服務(wù)器模式,異步傳送,無數(shù)據(jù)同步檢查,可能丟失數(shù)據(jù),但是能獲得主節(jié)點(diǎn)的最大性能。9i在配置DATA GUARD的時(shí)候默認(rèn)就是MAXIMIZE PERFORMANCE

    6 對(duì)于一個(gè)要求恢復(fù)時(shí)間比較短的系統(tǒng)(數(shù)據(jù)庫50G,每天歸檔5G),你如何設(shè)計(jì)備份策略
    數(shù)據(jù)庫比較大邏輯備份沒什么必要,每天歸檔5G,每周三/周六自動(dòng)歸檔10G,每月RMAN歸檔全庫。應(yīng)該有standby。

    rman/每月一號(hào) level 0 每周末/周三 level 1 其它每天level2

    四:系統(tǒng)管理類

  • 對(duì)于一個(gè)存在系統(tǒng)性能的系統(tǒng),說出你的診斷處理思路
    ü 做statspack收集系統(tǒng)相關(guān)信息 了解系統(tǒng)大致情況/確定是否存在參數(shù)設(shè)置不合適的地方/查看top 5 event/查看topsql等
  • ü 查vsystemevent/vsystem_event/vsysteme?vent/vsession_event/vsessionwait從vsession_wait從vsessionw?aitvsystem_event開始,確定需要什么資源(db file sequential read)等,深入研究vsessionevent,確定等待事件涉及的會(huì)話,從vsession_event,確定等待事件涉及的會(huì)話,從vsessione?vent,會(huì)vsession_wait確定詳細(xì)的資源爭(zhēng)用情況(p1-p3的 值:file_id/block_id/blocks等)

    ü 通過vsql/vsql/vsql/vsqltext/v$sqlarea表確定disk_reads、(buffer_gets/executions)值較大的SQL

  • 列舉幾種診斷IO、CPU、性能狀況的方法
    top uptime vmstat iostat statspack sql_trace/tkprof
  • 查vsystemevent/vsystem_event/vsysteme?vent/vsession_event/v$session_wait

    查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)

    或者第三方的監(jiān)視工具,TOAD就不錯(cuò)。

  • 對(duì)statspack有何認(rèn)識(shí)
    認(rèn)識(shí)不深。僅限了解。StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫運(yùn)行性能指標(biāo)的軟件包。可以做數(shù)據(jù)庫健康檢查報(bào)告。
  • StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫運(yùn)行性能指標(biāo)的軟件包,該軟件包從8i起,在9i、10g都有顯著的增強(qiáng)

    該軟件包的輔助表(存儲(chǔ)相關(guān)參數(shù)與收集的性能指標(biāo)的表)由最初的25個(gè)增長(zhǎng)到43個(gè)

    收集級(jí)別參數(shù)由原來的3個(gè)(0、5、10)增加到5個(gè)(0、5、6、7、10)

    通過分析收集的性能指標(biāo),數(shù)據(jù)庫管理員可以詳細(xì)地了解數(shù)據(jù)庫目前的運(yùn)行情況,對(duì)數(shù)據(jù)庫實(shí)例、等待事件、SQL等進(jìn)行優(yōu)化調(diào)整

    利用statspack收集的snapshot,可以統(tǒng)計(jì)制作數(shù)據(jù)庫的各種性能指標(biāo)的統(tǒng)計(jì)趨勢(shì)圖表。

  • 如果系統(tǒng)現(xiàn)在需要在一個(gè)很大的表上創(chuàng)建一個(gè)索引,你會(huì)考慮那些因素,如何做以盡量減小對(duì)應(yīng)用的影響
    可以先表分析一下,然后測(cè)試創(chuàng)建索引前后對(duì)應(yīng)用的性能影響;
  • 需要考慮的是該索引列不經(jīng)常更新,不是有很多重復(fù)值的情況時(shí), 在大表中使用索引特別有效. 創(chuàng)建的索引可以跟數(shù)據(jù)表分不同表空間存儲(chǔ)。

    在系統(tǒng)比較空閑時(shí)nologging選項(xiàng)(如果有dataguard則不可以使用nologging)

    大的sort_ared_size或pga_aggregate_target較大

  • 對(duì)raid10 和raid5有何認(rèn)識(shí)
    RAID 10(或稱RAID 1+0)與RAID 0+1不同,它是用硬盤驅(qū)動(dòng)器先組成RAID 1陣列,然后在RAID 1陣列之間再組成RAID 0陣列。
  • RAID 10模式同RAID 0+1模式一樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID 0+1具有更高的可靠性。RAID 10陣列的實(shí)際容量為M×n/2,磁盤利用率為50%。RAID10也需要至少4個(gè)硬盤驅(qū)動(dòng)器構(gòu)成,因而價(jià)格昂貴。

    RAID 10的可靠性同RAID 1一樣,但由于RAID 10硬盤驅(qū)動(dòng)器之間有數(shù)據(jù)分割,因而數(shù)據(jù)傳輸性能優(yōu)良。

    RAID 5與RAID 3很相似,不同之處在于RAID 5的奇偶校驗(yàn)信息也同數(shù)據(jù)一樣被分割保存到所有的硬盤驅(qū)動(dòng)器,而不是寫入一個(gè)指定的硬盤驅(qū)動(dòng)器,從而消除了單個(gè)奇偶校驗(yàn)硬盤驅(qū)動(dòng)器的瓶頸問題。RAID 5磁盤陣列的性能比RAID 3有所提高,但仍然需要至少3塊硬盤驅(qū)動(dòng)器。其實(shí)際容量為M×(n-1),磁盤利用率為(n-1)/n 。

    五:綜合隨意類

  • 你最擅長(zhǎng)的是oracle哪部分?
    pl/sql及sql優(yōu)化

  • 喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?
    喜歡。PL/SQL比較得心應(yīng)手。

  • 隨意說說你覺得oracle最有意思的部分或者最困難的部分
    我對(duì)數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯不足,自然覺得有些困難。

  • 基于ORACLE的研究應(yīng)該是個(gè)寬廣的領(lǐng)域,所以我覺得還是有意思的。

  • 為何要選擇做DBA呢?
    我對(duì)數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯不足,主要是缺乏環(huán)境和交流。
  • 因此,算不上什么DBA。不過因此我更需要這樣的機(jī)會(huì)。

    不過就整個(gè)ORACLE 來說,一直從事與它相關(guān)的工作,感情還是頗深的。放棄可惜。而且就技術(shù)本身而言我覺得自己還是有學(xué)習(xí)和創(chuàng)新的能力,它的諸如數(shù)據(jù)倉庫,數(shù)據(jù)挖掘之類的領(lǐng)域也很廣。

    數(shù)據(jù)庫面試題目(二)

    六:Databases Questions & Answers

  • What are two methods of retrieving SQL?

  • What cursor type do you use to retrieve multiple recordsets?

  • What action do you have to perform before retrieving data from the nextresult set of a stored procedure?
    Move the cursor down one row from its current position. A ResultSet cursor isinitially positioned before the first row. Before you can get to the first row,you would need to Move the cursor down by one row ( For ex: in java the firstcall to next makes the first row the current row; the second call makes thesecond row the current row, and so on).

  • What is the basic form of a SQL statement to read dataout of a table?
    SELECT * FROM table_name;

  • What structure can you have the database make to speedup table reads?
    The question is not correct. “What structure can you have the database make tospeed up table reads?” It is not clear what exactly the term “structure” meansin this case. Follow the rules of DB tuning we have to:

  • properly use indexes ( different types of indexes)

  • properly locate different DB objects across differenttablespaces, files and so on.

  • Create a special space (tablespace) to locate some ofthe data with special datatypes( for example CLOB, LOB and …)

  • What is a “join”?
    Joins merge the data of two related tables into a single result set, presentinga denormalized view of the data.

  • What is a “constraint”?
    A constraint allows you to apply simple referential integrity checks to atable. There are 5 primary types of constraints that are currently supported bySQL Server:

  • PRIMARY/UNIQUE – enforces uniqueness of a particular tablecolumn.

    DEFAULT – specifies a default value for a column in case aninsert operation does not provide one.

    FOREIGN KEY – validates that every value in a column existsin a column of another table.

    CHECK – checks that every value stored in a column is insome specified list

    NOT NULL – is a constraint which does not allow values inthe specific column to be null. And also it is the only constraint which is nota table level constraint.

  • What is a “primary key”?
    Primary Key is a type of a constraint enforcing uniqueness and data integrityfor each row of a table. All columns participating in a primary key constraintmust possess the NOT NULL property.

  • What is a “functional dependency”? How does it relate todatabase table design?
    What functional dependence in the context of a database means is that: Assumethat a table exists in the database called TABLE with a composite primary key(A, B) and other non-key attributes (C, D, E). Functional dependency ingeneral, would mean that any non-key attribute – C D or E being dependent onthe primary key (A and B) in our table here.

  • Partial functional dependency, on the other hand, isanother corollary of the above, which states that all non-key attributes – C Dor E – if dependent on the subset of the primary key (A and B) and not on it asa whole.

    Example :

    ———-

    Fully Functional Dependent : C D E –> A B

    Partial Functional dependency : C –> A, D E –> B

    Hope that helps!

  • What is a “trigger”?
    A trigger is a database object directly associated with a particular table. Itfires whenever a specific statement/type of statement is issued against thattable. The types of statements are insert, update, delete and query statements.Basically, trigger is a set of SQL statements that execute in response to adata modification/retrieval event on a table.
  • Other than table triggers there are also schema anddatabase triggers. These can be made to fire when new objects are created, whena user logs in, when the database shutdown etc. Table level triggers can beclassified into row and statement level triggers and those can be furtherbroken down into before and after triggers. Before triggers can modify data.

  • What is “index covering” of a query?
    A nonclustered index that includes (or covers) all columns used in a query iscalled a covering index. When SQL server can use a nonclustered index toresolve the query, it will prefer to scan the index rather than the table,which typically takes fewer data pages. If your query uses only columnsincluded in the index, then SQL server may scan this index to produce thedesired output.

  • What is a SQL view?
    View is a precomplied SQL query which is used to select data from one or moretables. A view is like a table but it doesn’t physically take any space. Viewis a good way to present data in a particular format if you use that queryquite often.

  • View can also be used to restrict users from accessing thetables directly.

    A view otherwise known as a virtual table is a mere windowover the base tables in the database. This helps us gain a couple ofadvantages:

  • Inherent security exposing only the data that is neededto be shown to the end user

  • Views are updateable based on certain conditions. Forexample, updates can only be directed to one underlying table of the view.After modification if the rows or columns don’t comply with the conditions thatthe view was created with, those rows disappear from the view. You could usethe CHECK OPTION with the view definition, to make sure that any updates tomake the rows invalid will not be permitted to run.

  • Views are not materialized (given a physical structure)in a database. Each time a view is queried the definition stored in thedatabase is run against the base tables to retrieve the data. One exception tothis is to create a clustered index on the view to make it persistent in thedatabase. Once you create a clustered index on the view, you can create anynumber of non-clustered indexes on the view.

  • 存儲(chǔ)過程和函數(shù)的區(qū)別
    存儲(chǔ)過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對(duì)象的任務(wù),用戶可以調(diào)用存儲(chǔ)過程,而函數(shù)通常是數(shù)據(jù)庫已定義的方法,它接收參數(shù)并返回某種類型的值并且不涉及特定用戶表。

  • 事務(wù)是什么?
    事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作,一個(gè)邏輯工作單元必須有四個(gè)屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個(gè)事務(wù):

  • 原子性:事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。

    一致性:事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。

    隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是 另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。

    持久性:事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。

  • 游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
    游標(biāo)用于定位結(jié)果集的行,通過判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯(cuò)或到了最后。

  • 觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語句級(jí)觸發(fā)和行級(jí)觸發(fā)有何區(qū)別。
    事前觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)行于觸發(fā)事件發(fā)生之后。通常事前觸發(fā)器可以獲取事件之前和新的字段值。

  • 語句級(jí)觸發(fā)器可以在語句執(zhí)行前或后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所影響的每一行觸發(fā)一次。

  • SQL Server常用測(cè)試題(1)
    問題描述:
  • 為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表:

    S (S#,SN,SD,SA) S#,SN,SD,SA 分別代表學(xué)號(hào)、學(xué)員姓名、所屬單位、學(xué)員年齡

    C (C#,CN ) C#,CN 分別代表課程編號(hào)、課程名稱

    SC ( S#,C#,G ) S#,C#,G 分別代表學(xué)號(hào)、所選修的課程編號(hào)、學(xué)習(xí)成績(jī)

  • 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號(hào)和姓名
  • –實(shí)現(xiàn)代碼:

    SELECT SN,SD FROM S

    WHERE [S#] IN(SELECT [S#] FROM C,SC WHERE C.[C#]=SC.[C#]AND CN=N’稅收基礎(chǔ)’)

  • 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號(hào)為’C2’的學(xué)員姓名和所屬單位
  • –實(shí)現(xiàn)代碼:

    SELECT S.SN,S.SD FROM S,SC

    WHERE S.[S#]=SC.[S#] AND SC.[C#]=’C2′

  • 使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號(hào)為’C5’的學(xué)員姓名和所屬單位
  • –實(shí)現(xiàn)代碼:

    SELECT SN,SD FROM S

    WHERE [S#] NOT IN(SELECT [S#] FROM SC WHERE [C#]=’C5′)

  • 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修全部課程的學(xué)員姓名和所屬單位
  • –實(shí)現(xiàn)代碼:

    SELECT SN,SD FROM S

    WHERE [S#] IN( SELECT [S#] FROM SC RIGHT JOIN

    C ON SC.[C#]=C.[C#] GROUP BY [S#]

    HAVING COUNT(*)=COUNT([S#]))

  • 查詢選修了課程的學(xué)員人數(shù)
  • –實(shí)現(xiàn)代碼:

    SELECT 學(xué)員人數(shù)=COUNT(DISTINCT [S#])FROM SC

  • 查詢選修課程超過5門的學(xué)員學(xué)號(hào)和所屬單位
  • –實(shí)現(xiàn)代碼:

    SELECT SN,SD FROM S

    WHERE [S#] IN(

    SELECT [S#] FROM SC

    GROUP BY [S#]

    HAVING COUNT(DISTINCT [C#])>5)

  • SQL Server常用測(cè)試題(2)
    問題描述:
  • 已知關(guān)系模式:

    S (SNO,SNAME) 學(xué)生關(guān)系。SNO 為學(xué)號(hào),SNAME 為姓名

    C (CNO,CNAME,CTEACHER) 課程關(guān)系。CNO 為課程號(hào),CNAME 為課程名,CTEACHER 為任課教師

    SC(SNO,CNO,SCGRADE) 選課關(guān)系。SCGRADE 為成績(jī)

  • 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名
  • –實(shí)現(xiàn)代碼:

    SELECT SNAME FROM S

    WHERE NOT EXISTS(

    SELECT * FROM SC,C WHERE SC.CNO=C.CNO AND CNAME=’李明’ AND SC.SNO=S.SNO)

  • 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績(jī)
  • –實(shí)現(xiàn)代碼:

    SELECT S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

    FROM S,SC,(

    SELECT SNO FROM SC WHERE SCGRADE=2)A WHERE S.SNO=A.SNO ANDSC.SNO=A.SNO

    GROUP BY S.SNO,S.SNAME

  • 列出既學(xué)過“1”號(hào)課程,又學(xué)過“2”號(hào)課程的所有學(xué)生姓名
  • –實(shí)現(xiàn)代碼:

    SELECT S.SNO,S.SNAME

    FROM S,(SELECT SC.SNO FROM SC,C

    WHERE SC.CNO=C.CNO AND C.CNAME IN(’1′,’2′)

    GROUP BY SNO

    HAVING COUNT(DISTINCT CNO)=2

    )SC WHERE S.SNO=SC.SNO

  • 列出“1”號(hào)課成績(jī)比“2”號(hào)同學(xué)該門課成績(jī)高的所有學(xué)生的學(xué)號(hào)
  • –實(shí)現(xiàn)代碼:

    SELECT S.SNO,S.SNAME

    FROM S,(

    SELECT SC1.SNO

    FROM SC SC1,C C1,SC SC2,C C2

    WHERE SC1.CNO=C1.CNO AND C1.NAME=’1′

    AND SC2.CNO=C2.CNO AND C2.NAME=’2′

    AND SC1.SCGRADE>SC2.SCGRADE

    )SC WHERE S.SNO=SC.SNO

  • 列出“1”號(hào)課成績(jī)比“2”號(hào)課成績(jī)高的所有學(xué)生的學(xué)號(hào)及其“1”號(hào)課和“2”號(hào)課的成績(jī)
  • –實(shí)現(xiàn)代碼:

    SELECT S.SNO,S.SNAME,SC.[1號(hào)課成績(jī)],SC.[2號(hào)課成績(jī)]

    FROM S,(

    SELECT SC1.SNO,[1號(hào)課成績(jī)]=SC1.SCGRADE,[2號(hào)課成績(jī)]=SC2.SCGRADE

    FROM SC SC1,C C1,SC SC2,C C2

    WHERE SC1.CNO=C1.CNO AND C1.NAME=’1′

    AND SC2.CNO=C2.CNO AND C2.NAME=’2′

    AND SC1.SCGRADE>SC2.SCGRADE

    )SC WHERE S.SNO=SC.SNO

  • Question 1:Can you use a batchSQL or store procedure to calculating the Number of Days in a Month
    找出當(dāng)月的天數(shù)
    select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) asvarchar)+’-’+cast(month(getdate()) as varchar)+’-01′ as datetime))))

  • Question2:Can you use a SQLstatement to calculating it!
    How can I print “10 to 20″ for books that sell for between $10 and $20,”unknown” for books whose price is null, and “other” for all otherprices?

  • select bookid,bookname,price=case when price is null then‘unknown’

    when price between 10 and 20 then ’10 to 20′ else price end
    from books

  • Question3:Can you use a SQLstatement to finding duplicate values!
    How can I find authors with the same last name?
    You can use the table authors in datatabase pubs. I want to get the result asbelow:
    Output:
    au_lname number_dups
    —————————————- ———–
    Ringer 2
    (1 row(s) affected)
    Answer 3
    select au_lname,number_dups=count(1) from authors group by au_lname
  • Question4:Can you create a cross-tab report in mySQL Server!
    How can I get the report about sale quality for each store and each quarter andthe total sale quality for each quarter at year 1993?
    You can use the table sales and stores in datatabase pubs.
    Table Sales record all sale detail item for each store. Column store_id is theid of each store, ord_date is the order date of each sale item, and column qtyis the sale qulity. Table stores record all store information.
    I want to get the result look like as below:
    Output:
    stor_name Total Qtr1 Qtr2 Qtr3 Qtr4
    —————————————- ———– ———– ———– ———– ———–
    Barnum’s 50 0 50 0 0
    Bookbeat 55 25 30 0 0
    Doc-U-Mat: Quality Laundry and Books 85 0 85 0 0
    Fricative Bookshop 60 35 0 0 25
    Total 250 60 165 0 25
  • Answer 4:用動(dòng)態(tài)SQL實(shí)現(xiàn)

  • Question5: The Fastest Way to Recompile All StoredProcedures
    I have a problem with a database running in SQL Server 6.5 (Service Pack 4). Wemoved the database (object transfer) from one machine to another last night,and an error (specific to a stored procedure) is cropping up. However, I can’ttell which procedure is causing it. Permissions are granted in all of ourstored procedures; is there a way from the isql utility to force all storedprocedures to recompile?
    Tips: sp_recompile can recomplie a store procedure each time
    Answer 5:在執(zhí)行存儲(chǔ)過程時(shí),使用 withrecompile 選項(xiàng)強(qiáng)制編譯新的計(jì)劃;使用sp_recompile系統(tǒng)存儲(chǔ)過程強(qiáng)制在下次運(yùn)行時(shí)進(jìn)行重新編譯

  • Question6: How can I add row numbers to my result set?
    In database pubs, have a table titles , now I want the result shown asbelow,each row have a row number, how can you do that?
    Result:
    line-no title_id
    ———– ——–
    1 BU1032
    2 BU1111
    3 BU2075
    4 BU7832
    5 MC2222
    6 MC3021
    7 MC3026
    8 PC1035
    9 PC8888
    10 PC9999
    11 PS1372
    12 PS2091
    13 PS2106
    14 PS3333
    15 PS7777
    16 TC3218
    17 TC4203
    18 TC7777

  • Answer 6:
    –SQL 2005的寫法
    select row_number() as line_no ,title_id from titles
    –SQL 2000的寫法
    select line_no identity(int,1,1),title_id into #t from titles
    select * from #t
    drop table #t

  • Question 7: Can you tell me what the difference of twoSQL statements at performance of execution?
  • Statement 1:
    if NOT EXISTS ( select * from publishers where state = ‘NY’)
    begin
    SELECT ‘Sales force needs to penetrate New York market’
    end
    else
    begin
    SELECT ‘We have publishers in New York’
    end
    Statement 2:
    if EXISTS ( select * from publishers where state = ‘NY’)
    begin
    SELECT ‘We have publishers in New York’
    end
    else
    begin
    SELECT ‘Sales force needs to penetrate New York market’
    end
    Answer 7:不同點(diǎn):執(zhí)行時(shí)的事務(wù)數(shù),處理時(shí)間,從客戶端到服務(wù)器端傳送的數(shù)據(jù)量大小

  • Question8: How can I list all California authorsregardless of whether they have written a book?
    In database pubs, have a table authors and titleauthor , table authors has acolumn state, and titleauhtor have books each author written.
    CA behalf of california in table authors.
    Answer 8:
    select * from authors where state=’CA’

  • Question9: How can I get a list of the stores that have bought both‘bussiness’ and ‘mod_cook’ type books?
    In database pubs, use three table stores,sales and titles to implement thisrequestment. Now I want to get the result as below:
    stor_id stor_name
    ——- —————————————-

    7896 Fricative Bookshop



    Answer 9:
    select distinct a.stor_id, a.stor_name from stores a,sales b,titles c
    where a.stor_id=b.stor_id and b.title_id=c.title_id and c.type=’business’ and
    exists(select 1 from sales k,titles g where stor_id=b.stor_id
    and k.title_id=g.title_id and g.type=’mod_cook’)

  • Question10: How can I list non-contignous data?
    In database pubs, I create a table test using statement as below, and I insertseveral row as below
    create table test
    ( id int primary key )
    go

  • insert into test values (1 )
    insert into test values (2 )
    insert into test values (3 )
    insert into test values (4 )
    insert into test values (5 )
    insert into test values (6 )
    insert into test values (8 )
    insert into test values (9 )
    insert into test values (11)
    insert into test values (12)
    insert into test values (13)
    insert into test values (14)
    insert into test values (18)
    insert into test values (19)
    go

    Now I want to list the result of the non-contignous row asbelow,how can I do it?
    Missing after Missing before
    ————- ————–
    6 8
    9 11

    Answer 10:
    select id from test t where not exists(select 1 from test where id=t.id+1)
    or not exists(select 1 from test where id=t.id-1)

  • Question11: How can I list all book with pricesgreather than the average price of books of the same type?
    In database pubs, have a table named titles , its column named price mean theprice of the book, and another named type mean the type of books.
    Now I want to get the result as below:
    type title price
    ———— ——————————————————————————– ———————
    business The Busy Executive’s Database Guide 19.9900



  • Answer 11:
    select a.type,a.title,a.price from titles a,
    (select type,price=avg(price) from titles group by type)b
    where a.type=b.type and a.price>b.price

    試題點(diǎn)評(píng):通覽整個(gè)試題,我們不難發(fā)現(xiàn),這份試題是針對(duì)SQL Server數(shù)據(jù)庫人員的。而從難度分析上來看,這份試題也屬于同類試題中比較難的了。之所以說它難,首先是限定時(shí)間的全英文試題;其次,盡管這份試題主要是考核開發(fā)能力,但卻涉及到了算法的選擇和性能的調(diào)優(yōu);最后,這份試題還夾進(jìn)了SQL Server數(shù)據(jù)庫的升級(jí)問題。因此,綜上所述,我們估計(jì)這是一家從事程序外包工作的外企招聘后臺(tái)開發(fā)或與后臺(tái)開發(fā)相關(guān)的SQL Server高級(jí)程序員的試題。

    總結(jié)

    以上是生活随笔為你收集整理的数据库习题高阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    久久图| 欧美性成人 | 久久撸在线视频 | 岛国一区在线 | 亚洲精品456在线播放 | 亚洲伊人色 | 成人中文字幕在线 | 最近日本韩国中文字幕 | 亚洲综合色激情五月 | 成人av网站在线 | 国产精品欧美日韩在线观看 | 亚洲综合在线视频 | 欧美五月婷婷 | 一区电影 | 天天射天天射 | 亚洲成aⅴ人在线观看 | 99热精品久久 | 国产成人中文字幕 | 在线观看黄色大片 | 很黄很污的视频网站 | 91久久精品一区二区三区 | 1000部国产精品成人观看 | 亚洲国产成人在线 | 欧美日韩一区二区三区视频 | 国产色中涩| 91久久黄色| 一区二区三区韩国免费中文网站 | 97麻豆视频| 国产精品久久久久毛片大屁完整版 | av在线进入 | 99视 | 婷婷九月丁香 | sesese图片| 91黄视频在线观看 | 久久深夜福利免费观看 | 91福利国产在线观看 | 亚洲黄网站 | 狠狠狠色丁香综合久久天下网 | 激情婷婷综合网 | 久久这里只有精品9 | 中文字幕在线视频国产 | 国产亚洲精品成人 | 国产一区二区视频在线播放 | 麻豆视频免费在线 | 亚洲天天干| 中文字幕综合在线 | 中字幕视频在线永久在线观看免费 | 伊人中文在线 | 玖草在线观看 | 久久理论电影 | 久久99久久99免费视频 | 婷婷丁香导航 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国内三级在线观看 | 免费看黄在线 | 国产视频精选 | 国内揄拍国产精品 | 久久久免费看片 | 天堂av网站 | 久久香蕉国产精品麻豆粉嫩av | 伊人一级| 九九免费精品 | 77国产精品| 久草网站在线观看 | 成人av.com| 涩涩在线| 麻豆视频免费版 | 国产第一二区 | 中文字幕乱偷在线 | 999视频网站 | 国产精品免费观看国产网曝瓜 | 蜜臀av性久久久久av蜜臀妖精 | 在线v片免费观看视频 | 在线观看资源 | 婷婷网在线 | 国产精品九九九九九 | 久久久久久久网站 | 一区二区三区在线观看免费视频 | 久久久久久高清 | 在线观看深夜视频 | 国产美女搞久久 | 国产精品不卡在线 | 婷婷综合激情 | 亚洲成av人影片在线观看 | 在线国产一区二区三区 | 97视频在线看 | 日本乱视频 | 亚洲午夜小视频 | 九九九九九九精品任你躁 | 亚洲永久免费av | 欧美激情综合五月色丁香小说 | 国产999精品视频 | 午夜av影院 | 五月天六月婷婷 | 久久国产精品免费看 | 综合精品久久 | 99超碰在线观看 | 久久国产a| 色综合久久五月天 | 欧美一区中文字幕 | 日日干天天操 | 在线电影日韩 | 久久久久免费精品视频 | 欧美成人亚洲 | 精品国产色 | 97视频在线观看成人 | 欧洲色吧| 91精品国产成人www | 欧美a级在线播放 | 欧美美女一级片 | 91黄色小视频 | 久久综合久久久久88 | 成人国产精品久久久 | 久久午夜色播影院免费高清 | 午夜视频欧美 | 国产国产人免费人成免费视频 | 少妇bbr搡bbb搡bbb | 国产一区二区在线免费播放 | 亚洲综合婷婷 | av在线播放观看 | 国产字幕av | 91久久久国产精品 | 网址你懂的在线观看 | 亚洲精品视频在线 | 国产亚洲永久域名 | 久久久国产在线视频 | 国产精品精品久久久久久 | 日日麻批40分钟视频免费观看 | 久久在线免费观看 | 久久精品久久精品久久 | 久草在线高清视频 | 日韩网站免费观看 | 日韩午夜大片 | 欧美激情视频一区二区三区 | 久久精品综合网 | 久久精品国产v日韩v亚洲 | www.久久婷婷 | 国产999视频 | 欧美成人h版在线观看 | 久草网视频 | 成年人免费看av | 国产高清中文字幕 | 国产对白av | 国产成人一区二区精品非洲 | 天堂在线成人 | 亚洲波多野结衣 | 国产精品video爽爽爽爽 | 亚洲综合在线视频 | 91麻豆精品国产91久久久无限制版 | 在线v片| 日韩一区二区三区在线观看 | 激情导航| 91伊人久久大香线蕉蜜芽人口 | 天天婷婷| 日本一区二区三区视频在线播放 | 九色自拍视频 | 色综合久久久久久久 | 在线免费观看黄 | 人人艹人人 | 黄网站色视频免费观看 | 黄色av网站在线观看免费 | 久久精品专区 | 久久久久久网站 | 天堂在线一区二区三区 | 日日夜夜天天久久 | 麻豆超碰 | 国产精品对白一区二区三区 | 特级xxxxx欧美 | 69av久久| 91av亚洲 | 美女免费网站 | 国产视频久久久久 | 黄网站色成年免费观看 | 精品一区二区免费视频 | 日日夜夜噜噜噜 | 久久av免费观看 | www.超碰97.com| 人人要人人澡人人爽人人dvd | 国产91精品高清一区二区三区 | 国产精品久久久久久久毛片 | 日韩中文免费视频 | 日本最新中文字幕 | 91在线国内视频 | 美女久久视频 | 天天舔天天射天天操 | 国产无套一区二区三区久久 | av在线中文| 在线观看视频国产一区 | 在线观看视频一区二区三区 | 精品久久久久国产免费第一页 | 在线成人短视频 | 亚洲深爱激情 | 五月色婷 | 夜夜夜精品 | 亚洲精品国产成人 | 精品久久影院 | av韩国在线 | 91精品国产亚洲 | 久久精品久久久久久久 | 2019天天干天天色 | 一本一本久久a久久精品综合小说 | 四虎永久精品在线 | 日本久久中文 | 黄av在线| 中文字幕免费中文 | 婷婷狠狠操 | 日韩网站免费观看 | 日韩有码在线观看视频 | 久爱精品在线 | 免费性网站 | 日韩精品视频在线观看免费 | 99国产精品一区 | 亚洲韩国一区二区三区 | 日韩网站在线免费观看 | 久久影院中文字幕 | 日韩毛片在线免费观看 | 久草国产在线 | www久久国产 | 成人亚洲网| 91亚州| 热久久最新地址 | 日日夜夜天天操 | 精品国产色| 精品久久久久久久久久久久 | 欧美精品免费视频 | 亚洲日b视频 | 国产成人精品一区二 | 不卡av在线| 久久久久99精品成人片三人毛片 | 中文字幕第一页在线视频 | 人人干在线| 激情网站| 日韩精品短视频 | 日本69hd| 9999毛片| 91视频免费国产 | 色婷婷激婷婷情综天天 | 亚洲精品女 | 久久艹久久 | 久久66热这里只有精品 | 久久国产91| 色婷婷激情四射 | 久久无码av一区二区三区电影网 | 色综合天天色综合 | 美女久久一区 | 天天曰夜夜操 | www久| 黄色字幕网 | 在线影视 一区 二区 三区 | 日韩久久久久久 | 国产精品视频一二三 | 国语黄色片 | 91最新在线视频 | 综合久久一本 | 欧美日韩国产在线一区 | 成人在线观看网址 | 91高清免费 | 久久成人国产精品一区二区 | 偷拍福利视频一区二区三区 | 99精品系列 | 国产69精品久久久久99 | 又大又硬又黄又爽视频在线观看 | 国产视频 亚洲精品 | 人人射人人射 | 色综合在 | 亚洲视频综合 | 97精品视频在线 | 婷婷在线观看视频 | 日日躁你夜夜躁你av蜜 | 久一网站| 成人精品国产 | 国产中文字幕在线免费观看 | 高清一区二区三区av | 黄色一级性片 | av片子在线观看 | 中文字幕在线中文 | 久久精品精品电影网 | 成人av一区二区在线观看 | 国产精品va在线 | 精品一二| 精品久久久免费 | 久久免费a | 在线成人国产 | 欧美日韩性 | 91九色视频在线播放 | 欧美成年网站 | 国产一区不卡在线 | 久久天堂亚洲 | 黄色大全视频 | 超碰在线最新 | 久久影视网 | 亚洲精品在线观看的 | www.69xx| 97精品国产97久久久久久春色 | 欧美日韩免费看 | 黄色毛片网站在线观看 | 亚洲作爱视频 | www国产精品com | 九色视频网 | 在线视频日韩一区 | 欧美一二三专区 | 中文字幕激情 | 色中色综合 | av电影一区二区三区 | 深夜成人av | 99亚洲天堂 | 91高清在线| 久久99精品国产一区二区三区 | 天天摸天天操天天舔 | 一区二区精品久久 | 午夜免费在线观看 | 91精品日韩 | 在线国产激情视频 | 国产精品第三页 | 亚洲区精品视频 | 天天干,天天插 | 视频在线观看入口黄最新永久免费国产 | 免费观看丰满少妇做爰 | 亚洲一区动漫 | 狠狠婷婷| 欧美三级免费 | 成年人毛片在线观看 | 精品国产成人av | 久久久久免费看 | 亚洲天天综合网 | 三级在线视频观看 | 日韩高清不卡在线 | 国产最新视频在线 | 久久国产精彩视频 | 亚洲午夜不卡 | 黄色网在线播放 | 天天色天天射综合网 | 久久久国产99久久国产一 | 91精品国产自产老师啪 | 天天躁日日躁狠狠躁av麻豆 | 最近日本韩国中文字幕 | 国产99久久久国产精品免费二区 | 色精品视频 | 黄色影院在线免费观看 | 国产一级二级三级视频 | 婷婷六月综合亚洲 | 久久成人国产精品免费软件 | 欧美精品在线视频 | 欧美国产大片 | 婷婷久久综合九色综合 | 韩国av一区二区三区在线观看 | 操天天操 | 欧美aa一级| 伊人久久国产 | 91大神在线观看视频 | 午夜电影中文字幕 | 91精品国产一区二区三区 | 国产黄a三级 | 在线中文字幕网站 | 久久久99国产精品免费 | 成年人在线看片 | 丁香花中文在线免费观看 | 最新日韩视频在线观看 | 国产一区免费视频 | 在线观看免费成人 | 九九久久婷婷 | 久久精品激情 | 日韩中文久久 | 中文av在线免费观看 | 中文字幕在线高清 | 久久久99精品免费观看乱色 | 日本护士三级少妇三级999 | 麻豆久久精品 | av综合av| 九九热在线视频免费观看 | 视频在线观看日韩 | 成人免费在线观看av | 999色视频| 久久久久区| 午夜精品一区二区三区在线 | 看毛片的网址 | 久久久精品国产一区二区电影四季 | 亚洲视频在线免费看 | 欧美日韩裸体免费视频 | 一区 二区 精品 | 国产精品va在线播放 | 国产视频二区三区 | 国产精品美女久久久久久久网站 | 奇米7777狠狠狠琪琪视频 | 中文字幕在线观看你懂的 | 小草av在线播放 | 国产福利一区二区三区视频 | 24小时日本在线www免费的 | 伊人成人精品 | 九九精品无码 | 天天综合网 天天综合色 | 久久久精品免费观看 | 97香蕉久久国产在线观看 | 播五月综合 | 久久久久国产精品一区二区 | 九九有精品 | .国产精品成人自产拍在线观看6 | a一片一级| 在线观看精品黄av片免费 | 日韩在线色视频 | 亚洲综合日韩在线 | av 一区二区三区 | 精品国产一区二区三区久久久 | 日韩天堂网 | 国产亚洲在线 | av中文电影 | 欧美成人按摩 | 在线小视频国产 | 国产成人综 | 国产精品久久久久久a | 国产福利资源 | 丁香花在线观看视频在线 | 91超在线| 国产黄色av影视 | 日韩a级黄色 | 婷婷丁香激情网 | 久久艹国产视频 | 国产一级不卡毛片 | 精品国产欧美 | 久久只有精品 | 韩国精品福利一区二区三区 | 99热九九这里只有精品10 | 成人小视频在线 | 欧美一区免费在线观看 | av大片网址| 欧美日韩精品在线播放 | 99久久精品国 | 亚洲一级片在线观看 | 成人精品国产 | 美腿丝袜一区二区三区 | 欧洲精品亚洲精品 | 久久免费视频6 | 午夜999| 中文字幕在线观看的网站 | 少妇高潮冒白浆 | 成片视频在线观看 | 999超碰| 国产成人一二三 | 国产不卡一二三区 | 久久成人免费电影 | 色六月婷婷 | 9在线观看免费高清完整版 玖玖爱免费视频 | www欧美色 | 2018亚洲男人天堂 | 99精品成人 | 91成人在线观看喷潮 | 国产精品久久人 | 中文字幕五区 | 欧美日韩国产色综合一二三四 | 国产精品免费观看在线 | 韩国视频一区二区三区 | 成人av在线影视 | 日韩女同av | 91中文视频 | 五月天中文字幕mv在线 | 精品亚洲国产视频 | 国产精品视频不卡 | 三级在线视频播放 | 天天色天天综合 | 国产成人一区二区三区电影 | 婷婷去俺也去六月色 | 天天摸天天弄 | 91精品久 | av亚洲产国偷v产偷v自拍小说 | 久久精品视频在线看 | 欧美日韩一区二区三区视频 | 在线亚州 | av高清一区 | 国产精品国产亚洲精品看不卡 | 免费精品在线 | 992tv在线| 天天操网站 | 国产香蕉在线 | 九九视频免费在线观看 | 国产视频97 | 亚洲欧美精品一区 | 亚洲一区二区视频在线 | av一级在线观看 | 国产成人av免费在线观看 | 国产一二三在线视频 | 日韩精品一区二区三区免费观看视频 | 99热精品国产一区二区在线观看 | 91九色最新地址 | 日本中文字幕在线电影 | 在线观看视频免费播放 | 日韩系列在线 | 91成人免费电影 | 免费又黄又爽的视频 | 久精品视频在线观看 | 五月天亚洲婷婷 | 亚洲日本精品 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久免费精品国产一区二区 | 国产日韩在线视频 | 黄色国产大片 | 99久久电影 | 亚洲一区二区精品视频 | 久久电影国产免费久久电影 | 在线欧美小视频 | www黄| 中文字幕日韩高清 | 亚洲免费高清视频 | 97成人在线视频 | av免费在线观看1 | 又色又爽又激情的59视频 | 国产在线传媒 | 午夜色大片在线观看 | 午夜免费视频网站 | 69精品视频 | japanesexxxxfreehd乱熟 | 精品国产三级a∨在线欧美 免费一级片在线观看 | www.色五月.com | 九九九九色| 精品黄色在线 | 91久久久久久久一区二区 | 国产亚洲精品久久久久动 | 美女视频黄免费网站 | 国产午夜精品av一区二区 | 夜色资源站wwwcom | 国产在线欧美 | 波多在线视频 | 欧美激情第一页xxx 午夜性福利 | 久久激情日本aⅴ | 精品国产一区二 | 国产a网站 | 99久免费精品视频在线观看 | 欧美日韩国产三级 | 亚洲在线| 欧美日本国产在线观看 | 69久久夜色精品国产69 | 中文字幕在线观看资源 | 91精品国产欧美一区二区成人 | 在线观看韩日电影免费 | 狠狠色丁香久久婷婷综合五月 | 99操视频 | 九色免费视频 | 天天操夜夜操夜夜操 | 亚洲国产操 | 国产原厂视频在线观看 | 欧美巨乳网 | 男女全黄一级一级高潮免费看 | 国产一区欧美在线 | 在线视频1卡二卡三卡 | 国产亚洲精品无 | 一本一本久久a久久精品综合小说 | 三级性生活视频 | 黄色大全免费网站 | 欧美日韩不卡一区二区三区 | av免费观看高清 | 日韩精品一区二区不卡 | 日韩精品一区二区免费视频 | 亚洲狠狠婷婷综合久久久 | 亚洲黄色成人 | 国产午夜精品久久 | av免费电影在线 | 黄色精品久久久 | 国产精品久久久久久久久毛片 | 午夜精品久久久久久久99 | 最近更新的中文字幕 | 免费一级黄色 | 视频在线国产 | 亚洲欧洲中文日韩久久av乱码 | av网站免费在线 | 热99在线视频 | 六月天综合网 | 中文字幕在线观看免费观看 | 久久免费一级片 | 国产精品久久久久久久电影 | 欧美日韩在线观看一区二区三区 | 欧美另类网站 | 伊人狠狠操 | 色播五月激情五月 | 精品综合久久 | 国产人成一区二区三区影院 | 久久激情视频 久久 | 91成人网在线播放 | 亚洲一级黄色大片 | 天天爽人人爽 | 特级aaa毛片 | 五月婷婷综 | 精品视频免费在线 | av免费网页 | 东方av在 | 在线亚洲人成电影网站色www | 成年人视频在线免费观看 | 91成人在线观看高潮 | 激情久久五月 | 在线性视频日韩欧美 | 日韩一二三区不卡 | 国产一二区视频 | 综合激情婷婷 | 久久五月天婷婷 | 亚洲国产精品99久久久久久久久 | 免费在线电影网址大全 | 久久精品一区二区三区视频 | 超级碰碰碰免费视频 | 亚洲专区视频在线观看 | 人人揉人人揉人人揉人人揉97 | 色a在线观看 | 蜜桃视频日本 | 激情视频网页 | 91最新在线观看 | 黄污视频网站大全 | 日批视频国产 | 日韩视频免费 | 99久久网站 | 久久视频在线视频 | 久久久久久久久久久久久久av | 九月婷婷人人澡人人添人人爽 | 天天操天天摸天天射 | 视频在线观看99 | 狠狠干成人 | 久草视频免费看 | 91麻豆精品 | 97视频免费看| 亚洲精品国产精品乱码不99热 | av看片在线观看 | 国产午夜精品福利视频 | 一二三区在线 | 99在线视频观看 | 欧美日韩在线观看一区二区三区 | 最新日韩在线观看 | 丁香婷婷社区 | 波多野结衣一区二区三区中文字幕 | 亚洲成av人影片在线观看 | 在线直播av | 亚洲日本在线视频观看 | 国产精品一区二区三区电影 | 日本精品久久久一区二区三区 | 久久色视频 | 天天干夜夜擦 | 免费日韩在线 | 免费看久久 | 一本一道久久a久久精品蜜桃 | 亚洲乱码精品久久久久 | 欧美一级激情 | 91精品专区 | 日韩精品久久久久 | 91九色自拍 | 亚洲深夜影院 | 免费在线观看视频a | 国产小视频福利在线 | 久久不射电影院 | av不卡中文字幕 | 一区二区三区 中文字幕 | 午夜少妇av| 亚洲欧美国产精品va在线观看 | 国产精品久久久久一区二区国产 | 欧美色黄| 人人射人人插 | 日韩高清精品免费观看 | 国产亚洲精品日韩在线tv黄 | 久久久成人精品 | 日日夜夜天天久久 | 亚洲人在线7777777精品 | 国产成人精品区 | 日本韩国精品在线 | 国产精品资源 | 久久久久久久久毛片精品 | 国产精品av免费观看 | 国产不卡一区二区视频 | 在线99视频| 日韩a免费 | 在线国产视频一区 | 91在线观看黄 | 日日夜夜网站 | 91福利国产在线观看 | 五月婷婷综合在线视频 | 日韩激情小视频 | 玖玖视频国产 | 国产黄色一级片在线 | 亚洲黄色影院 | 黄色h在线观看 | 精品免费视频. | 亚洲高清网站 | 国产精品女 | 草樱av| 涩涩网站在线播放 | 久久人人爽爽人人爽人人片av | av电影亚洲 | av蜜桃在线 | 国产精品成人一区二区三区 | 日韩av看片| 久久久久久久久久久福利 | 久久激情综合网 | 狠狠插狠狠操 | 国产视频1 | 免费精品人在线二线三线 | 国产第一页福利影院 | 最近最新mv字幕免费观看 | 97操操操 | 亚洲欧美怡红院 | 亚洲精品国产综合久久 | 亚洲视频久久久 | 成人午夜精品福利免费 | 中国一 片免费观看 | 久久精品—区二区三区 | 久久一区二区三区日韩 | 国产精品久久久久影视 | 日韩中文字幕免费视频 | 久久嗨| 二区三区在线观看 | 中文字幕 在线看 | 欧美久久久久久久久中文字幕 | 日韩在线免费 | 日韩高清不卡在线 | 99草视频 | 色婷婷国产 | 综合久久精品 | 欧美大香线蕉线伊人久久 | 国产精品久久久久久高潮 | avhd高清在线谜片 | 一本大道久久精品懂色aⅴ 五月婷社区 | 狠狠色狠狠色综合日日小说 | 亚洲香蕉视频 | 久久99精品久久久久久三级 | 欧美久久影院 | 永久免费精品视频 | 天天操天天舔天天干 | 成人黄色小视频 | 88av网站 | 久久国产一区二区三区 | www.99在线观看 | 天天干国产 | 欧美大片在线看免费观看 | 国产一级不卡毛片 | 亚洲精品视频一二三 | 在线韩国电影免费观影完整版 | 日韩免费小视频 | 九九视频免费在线观看 | 色就色,综合激情 | 99这里只有久久精品视频 | 高清不卡一区二区三区 | www.久草视频 | 国产精品岛国久久久久久久久红粉 | www91在线| 国产精品久久久久久久久久尿 | 亚洲精品视频在线 | av网站手机在线观看 | 精品国产一区二区三区四区vr | 视频国产 | 国产一区二区网址 | 精品国产一区二区三区久久久蜜臀 | 色资源网免费观看视频 | 国产在线不卡一区 | 中文字幕激情 | 国产精品久久久一区二区三区网站 | 国产精品18毛片一区二区 | 九九视频精品在线 | 国产成人免费观看久久久 | 狠狠插狠狠干 | 色妞色视频一区二区三区四区 | www.97色.com| 园产精品久久久久久久7电影 | 日韩午夜一级片 | 国产黄a三级三级 | 亚洲天堂网站 | 日日夜夜91| www.久久com| 99精品国产99久久久久久福利 | 一区二区三区久久 | 欧美精品一区二区在线观看 | 一区二区伦理电影 | 亚州欧美视频 | 亚洲精品高清视频 | 黄色免费大全 | 日韩精品91偷拍在线观看 | 精品久久五月天 | 国产欧美精品一区二区三区四区 | 日韩在线观看高清 | 在线观看视频一区二区 | 国产欧美日韩视频 | 亚洲尺码电影av久久 | 天天干,天天射,天天操,天天摸 | 九九九九九国产 | 九九三级毛片 | 91激情| 国产亚洲91 | 久久精品久久99精品久久 | 青春草免费在线视频 | 五月天婷婷狠狠 | 欧美精品一区二区在线观看 | 热九九精品 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲五月花 | 国产午夜精品一区二区三区在线观看 | 99国产一区 | 欧美日韩久久不卡 | 在线影视 一区 二区 三区 | 特级黄录像视频 | 中文视频一区二区 | 九色91福利| 欧美亚洲三级 | 在线观看va | www日韩欧美 | www.成人久久| 欧美一级视频免费看 | 国产在线观看免费av | 久草av在线播放 | 日韩精品免费一区 | 99精品久久久久 | 久久综合9988久久爱 | 日本久久片 | 午夜久久福利影院 | 国产精品久久久av | 欧美日韩3p| 亚洲日韩欧美一区二区在线 | 国产精品美女久久久久久 | 久久久久久久久久久影院 | 在线免费观看不卡av | 色婷婷视频 | 婷婷色伊人 | 亚洲国产美女精品久久久久∴ | 免费十分钟 | 91精品秘密在线观看 | 久久99久国产精品黄毛片入口 | 99色网站| 欧美日韩另类在线观看 | 色综合天天视频在线观看 | 久久精品—区二区三区 | 国产高清视频在线免费观看 | 狠狠色丁香久久婷婷综合五月 | 日韩在线观看电影 | 91av视频免费在线观看 | 丁香五月缴情综合网 | 首页av在线 | 人人狠狠 | 成人av片免费观看app下载 | 在线观看完整版 | 久久狠狠一本精品综合网 | 国内精品久久久久久久影视简单 | 午夜精品成人一区二区三区 | 九色激情网 | 欧美精品免费在线观看 | 51久久成人国产精品麻豆 | 人人爽人人射 | 欧美另类巨大 | 久久99久国产精品黄毛片入口 | 黄www在线观看| 成年一级片 | 人人插人人射 | 啪啪免费视频网站 | 日本中文字幕在线电影 | 伊人久久一区 | 一区二区三区国产欧美 | 久久精品91久久久久久再现 | 国语黄色片| 国产99黄 | 国产在线欧美在线 | 亚洲视频2| 亚洲国产欧美在线人成大黄瓜 | 中文字幕免费国产精品 | 天天操天天吃 | 欧美日韩高清免费 | 2021久久 | 激情深爱 | 精品999久久久 | 精品国产aⅴ一区二区三区 在线直播av | 日韩理论在线播放 | 欧美日韩午夜在线 | 人人爱人人射 | 三级在线视频观看 | 成年人黄色免费网站 | 国产精品二区在线 | 麻豆91在线| 人人看人人艹 | 99色婷婷| 久久国产区 | 国产只有精品 | 婷婷av网站 | 少妇视频一区 | 成人在线视频观看 | 欧美激情综合五月 | 亚洲国产成人在线观看 | 日韩欧美大片免费观看 | 九九综合九九 | 激情视频免费在线 | 91tv国产成人福利 | 亚洲天堂免费视频 | 午夜aaaa | 日韩电影中文,亚洲精品乱码 | 国产色资源| 97韩国电影 | 久久久精品欧美一区二区免费 | 久久久久久久久影院 | 一 级 黄 色 片免费看的 | 国产欧美中文字幕 | av在线免费观看不卡 | 亚洲人人射| 国产精品亚洲成人 | www亚洲国产 | 欧美三级免费 | 中文字幕久久网 | 久久成人一区 | 日韩视频中文字幕在线观看 | 日一日操一操 | 日日夜夜天天射 | 国产亚洲在线视频 | 一区二区三区四区五区在线 | 久久深夜 | 日本久久久久久久久久久 | 婷婷激情综合五月天 | 久久国产精品99国产精 | 久久a v视频 | 干狠狠| 色综合咪咪久久网 | 九草在线视频 | 91成人免费观看视频 | 香蕉久草在线 | 成人av网站在线观看 | 一级黄色片在线免费观看 | 特级大胆西西4444www | 午夜久久久久久久 | 免费大片黄在线 | 国产精品色婷婷 | 香蕉视频18 | 国产无遮挡猛进猛出免费软件 | 国产免费不卡 | 日韩激情免费视频 | 日韩精品中文字幕在线不卡尤物 | 色欲综合视频天天天 | 成人小视频在线播放 | 丁香综合av| 国产日韩精品在线 | 国产日韩精品一区二区三区 | 亚洲免费婷婷 | 在线观看亚洲国产 | 伊人看片 | 日韩av一卡二卡三卡 | 日韩毛片在线播放 | 丁香六月天婷婷 | 日日夜夜狠狠干 | 亚洲国产理论片 | 免费看三片 | 天天干天天看 | 91福利视频在线 | 免费中文字幕 | 肉色欧美久久久久久久免费看 | 成人午夜电影在线观看 | 91av在线视频免费观看 | 国产精品九九九九九九 | 精品99免费视频 | 国产99色| 中文字幕成人一区 | 国产破处在线播放 | 狠狠色丁香婷婷综合久小说久 | 国产精品国产三级国产aⅴ入口 | 人人舔人人舔 | 成人影片在线播放 | 中文字幕一区二 | 91综合久久一区二区 | 久久免费久久 | 超碰97中文 | 在线观看涩涩 | www.天天综合 | 欧美成年人在线观看 | 国产99久久九九精品免费 | 久久黄色小说视频 | 精品国自产在线观看 | 麻豆视频国产精品 | 伊人电影天堂 | 99视频精品 | 国产欧美日韩视频 | 久久久精品久久 | 少妇视频在线播放 | 天天操网站 | 96看片 | 在线v片| 丰满少妇在线观看资源站 | 国产精品午夜免费福利视频 | 五月天综合色激情 | 超碰国产在线观看 | 日韩一区二区三免费高清在线观看 | 免费视频成人 | freejavvideo日本免费 | 国产一二区免费视频 | 中文字幕在线网 | 不卡国产在线 | av三级在线免费观看 | 美国人与动物xxxx | 欧美日韩久久 | 国产精品高清免费在线观看 | 日本久久久久久 | 99久久99久久精品国产片果冰 | 亚洲另类人人澡 | 午夜久久久久久久 | 首页中文字幕 | 免费成人av电影 | 天天操夜 | 国色综合 | 日韩,中文字幕 | 午夜视频免费在线观看 | avove黑丝 | 日本久久免费视频 | 日韩大片在线播放 | 久久成人麻豆午夜电影 | 亚洲成人精品 | 国产馆在线播放 |