Oracle數據庫對象題庫


一、    填空題

  1. 在用 create 語句創建基本表時,最初只是一個空的框架,用戶可以使用insert命令把數據插入表中。
  2. 在基本表不需要時,可以使用 drop table 語句撤消。在一個基本表撤消后,所有的數據都丟棄。所有相關的索引被刪除。
  3. 可以使用 rename 語句改變表名(視圖),要求必須是表(視圖)的所有者。
  4. 根據約束的作用域,約束可以分為表級約束和列級約束兩種。     列級約束   是字段定義的一部分,只能夠應用在一個列上;而另外一種約束的定義獨立於列的定義,它可以應用於一個表中的多個列。
  5. 完整性約束分類:域完整性約束、實體完整性約束、  參照完整性約束   
  6.   主鍵約束  是數據庫中最重要的一種約束。在關系中,主鍵值不可為空,也不允許出現重復,即關系要滿足實體完整性規則。
  7.  唯一性約束確保所在的字段或者字段組合不出現重復值。
  8.   索引類似字典的和課本目錄,是為了加快對數據的搜索速度而設立的。
  9. 索引類型默認采用  B數據結構,數據全部集中在葉子節點。
  10.   視圖  是從若干基本表和(或)其他視圖構造出來的表。
  11. 在用戶使用視圖時才去求相對應的數據。所以視圖被稱作  虛表 
  12. 如果視圖對應多個表,一般不允許添加操作,可以通過  觸發器解決。
  13. 使用   with read only  定義只讀視圖。
  14.  事務(Transaction是一個操作序列。這些操作要么都做,要么都不做,是一個不可分割的工作單位,是數據庫環境中的邏輯工作單位。
  15.   commit  表示事務成功地結束,此時告訴系統,數據庫要進入一個新的正確狀態,該事務對數據庫的所有更新都以交付實施。
  16. 一旦執行了commit語句,將目前對數據庫的操作提交給數據庫(實際寫入DB),以后就不能用  rollback   進行撤銷。
  17. 為保證數據庫設計水平,必須遵循一定的規則,在關系型數據庫中這種規則就稱為   范式   
  18. 第一范式:簡單說就是要確保每列保持   原子性 
  19. Oralce數據庫在進行物理備份有聯機備份和  脫機備份  兩種方式可供選擇。
  20. 在多進程Oracle實例系統中,進程分為用戶進程、后台進程和   服務進程   

 

二、    選擇題

 

1.

從數據庫中刪除表的命令是)。(選擇一項)

 

 

 

 

A.

DROP TABLE

 

B.

ALTER TABLE

 

C.

DELETE TABLE

 

D.

USE

 

2.

Oracle中要生成數據庫表,下列哪個選項是無效表生成的語句(  D  )。(選擇一項)

 

 

 

 

A.

create table cats(c_name varchar2(10), c_weight number, c_owner varchar2(10));

 

B.

create table my_cats as select * from cats where owner = ‘ME’;

 

C.

create global temporary table temp_cats(c_name varchar2(10), c_weight number, c_owner varchar2(10));

 

D.

create table 51cats as select c_name, c_weight from cats where c_weight > 5;

 

3.

如果在一個關系中,存在某個屬性(或屬性組),雖然不是該關系的主碼或只是主碼的一部分,但卻是另一個關系的主碼時,稱該屬性(或屬性組)為這個關系的  C  )(選擇一項)

 

 

 

 

A.

候選碼

 

B.

主碼

 

C.

外碼

 

D.

連接碼

 

4.

SQL語句中修改表結構的命令是  C  )。(選擇一項)

 

 

 

 

A.

MODIFY TABLE

 

B.

MODIFY STRUCTURE

 

C.

ALTER TABLE 

 

D.

ALTER STRUCTURE

 

5.

關系模型有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。定義外鍵實現的是哪一(些)類完整性(  B  )。(選擇一項)

 

 

 

 

A.

實體完整性

 

B.

參照完整性

 

C.

用戶定義的完整性

 

D.

實體完整性、參照完整性和用戶定義的完整性

 

6.

在關系數據庫中,建立數據庫表時,將年齡字段值限制在12~40歲之間的這種約束屬於  B  )。(選擇一項)

 

 

 

 

A.

視圖完整性約束

 

B.

域完整性約束

 

C.

參照完整性約束

 

D.

實體完整性約束

 

7.

用於刪除約束的命令是哪一個(  C  。(選擇一項)

 

 

 

 

A.

ALTER TABLE MODIFY CONSTRAINT

 

B.

DROP CONSTRAINT

 

C.

ALTER TABLE DROP CONSTRAINT

 

D.

ALTER CONSTRAINT DROP

 

8.

 

現有如下關系:職工(職工號,姓名,性別,職務)
部門(部門編號,部門名稱,職工號,姓名,部門地址,電話)
其中,部門關系中的外碼是  C  )。(選擇一項)

 

 

 

 

A.

部門編號

 

B.

姓名

 

C.

職工號

 

D.

職工號,姓名

 

9.

要控制兩個表中數據的完整性和一致性可以設置"參照完整性",要求這兩個表  A  )。(選擇一項)

 

 

 

 

A.

是同一個數據庫中的兩個表

 

B.

不同數據庫中的兩個表

 

C.

兩個自由表

 

D.

一個是數據庫表另一個是自由表

 

10.

刪除Oracle數據庫中父/子關系中的父表。在刪除父表時下列哪個對象不會刪除(  B  )。(選擇一項)

 

 

 

 

A.

相關約束

 

B.

子表

 

C.

相關觸發器

 

D.

相關索引

 

11.

假定USER表的PRIMARY KEY約束名為USER_ID_PK,下面哪一個語句將刪除這個約束  C  )。(選擇一項)

 

 

 

 

A.

DROP CONSTRAINT USER_ID_PK;

 

B.

ALTER TABLE USER DROP USER_ID_PK;

 

C.

ALTER TABLE USER DROP CONSTRAINT USER_ID_PK;

 

D.

ALTER TABLE USER DROP PRIMARY KEY;

 

12.

對於索引以下不正確的描述是(  D  )。(選擇一項)

 

 

 

 

A.

索引可以加快查詢效率

 

B.

索引與DML速度無關

 

C.

索引創建后會自動被Oracle使用

 

D.

索引不占用存儲空間

 

13.

索引字段值不唯一,應該選擇的索引類型為  B  )。(選擇一項)

 

 

 

 

A.

主索引

 

B.

普通索引

 

C.

候選索引

 

D.

唯一索引

 

 

14.

對於學生—選課—課程的三個關系
S(S#,SNAME,SEX,AGE) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER)
為了提高查詢速度,對SC表創建唯一索引,應建哪個組上 A   )。(選擇一項)

 

 

 

 

A.

(S#,C#)

 

B.

S#

 

C.

C#

 

D.

GRADE

 

15.

如果要創建一個數據組分組報表,第一個分組表達式是"部門",第二個分組表達式是"性別",第三個分組表達式是"基本工資",當前索引的索引表達式應當是  B  )。(選擇一項)

 

 

 

 

A.

部門+性別+基本工資

 

B.

部門+性別+STR(基本工資)

 

C.

STR(基本工資)+性別+部門

 

D.

性別+部門+STR(基本工資)

 

16.

哪個約束會自動建立索引(  AC  )。(選擇二項)

 

 

 

 

A.

主碼

 

B.

外碼

 

C.

唯一

 

D

CHECK

 

17.

在SQL中,刪除視圖用  C  )。(選擇一項)

 

 

 

 

A.

DROP SCHEMA命令

 

B.

CREATE TABLE命令

 

C.

DROP VIEW命令

 

D.

DROP INDEX命令

 

18.

對於學生—選課—課程的三個關系S(S#,SNAME,SEX,AGE) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 為了考慮安全性,每個教師只能存取自己講授的課程的學生成績,應創建  A  )。(選擇一項)

 

 

 

 

A.

視圖

 

B.

索引

 

C.

游標

 

D.

 

19.

下列關於關系數據庫視圖的說法中,哪些是錯誤的(  A  )(選擇一項)

 

 

 

 

A.

視圖是關系數據庫三級模式中的內模式。

 

B.

視圖能夠對機密數據庫提供一定的安全保護。

 

C.

視圖對重構數據庫提供了一定程度的邏輯獨立性

 

D.

對視圖的一切操作最終都要轉換為對基本表的操作

 

 

20.

數據庫的並發操作可能帶來的問題包括 B   )。(選擇一項)

 

 

 

 

A.

非法用戶的使用

 

B.

丟失更新

 

C.

數據獨立性會提高

 

D.

增加數據冗余度

 

21.

oracle中獲取前10條的關鍵字是(  D  )。(選擇一項)

 

 

 

 

A.

Top

 

B.

Limit       

 

C.

First

 

D.

Rownum

 

22.

 

Oracle中,有一個名為seq的序列對象,以下語句能返回序列值但不會引起序列值增加的是(  C  )。(選擇一項)

 

 

 

 

A.

select seq.ROWNUM from dual;

 

B.

select seq.ROWID from dual;

 

C.

select seq.CURRVAL from dual;

 

D.

select seq.NEXTVAL from dual;

 

23.

下面對序列venseq修改的語句,錯誤的是(  A  )。(選擇一項)

 

 

 

 

A.

ALTER SEQUENCE venseq START WITH 1

 

B.

ALTER SEQUENCE venseq MAXVALUE 90

 

C.

ALTER SEQUENCE venseq NOMINVALUE

 

D.

ALTER SEQUENCE venseq NOCACHE

 

三、    判斷題

  1. 唯一性約束條件的字段允許出現空值,但是最多只能是一個空值。(  F  )
  2. 可增加或刪除約束,也可以直接修改。(  F  )
  3. 序列是oracle專有的對象,它用來產生一個自動遞增的數列。(  T  )
  4. 索引的作用:在數據庫中用來加速對表的查詢,通過使用快速路徑訪問方法快速定位數據,減少了磁盤的I/O。(  T  )
  5. 索引數據不會占用存儲空間。(  F  )
  6. 索引改善檢索操作的性能,但降低數據插入、修改和刪除的性能。在執行這些操作時,DBMS必須動態地更新索引。(  T  )
  7. 刪掉視圖不會導致數據丟失,因為視圖是基於數據庫表的一個查詢。(  T  )
  8. 改變基本表的數據,不會反應到基於該表的視圖上。(  F  )
  9. 視圖可以基於一個表、多個表,甚至是基於其他的視圖。(  T  )
  10. Rollback表示事務不成功的結束,此時告訴系統,已發生錯誤,數據庫可能處在不正確的狀態,該事務對數據庫的更新必須被撤銷,數據庫應恢復該事務到初始狀態。每個Rollback語句同時也是另一個事務的開始。(  T  )
  11. 范式是符合某一種設計要求的總結。要想設計一個結構合理的關系型數據庫,必須滿足一定的范式。(  T  )
  12. 范式越高,設計質量越高,在現實設計中也越難實現。一般數據庫設計,只要達到第二范式,即可避免異常的出現。( F  )
  13. 第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關。(  T  )
  14. 范式的優點有:結構合理、冗余較小、盡量避免插入刪除修改異常、執行效率非常高。( F  )
  15. 特定表的的設計可以違反第三范式,增加冗余提高性能。(  T  )
  16. 數據庫表之間的關系包括:一對一、一對多、多對多。(  T  )

 

四、    編碼題

  1. 某教學數據庫有三個表:

學生表S:SNO (學生編號),SNAME(學生姓名),SAGE(年齡),SSEX(性別),SDEPT(院系));

學習表SC:SNO(學生編號),CNO(課程編號),GRADE(年級));

課程關系C:CNO(課程編號),CNAME(課程名稱),CDEPT(院系);

1)  用SQL語句完成下列查詢(比較):

a)  查所有年齡在20歲以下的學生姓名及年齡:

    SELECT Sname,Sage FROMWHERE Sage<20;

b)  查考試成績有不及格的學生的學號:

SELECT DISTINCT  Sno  FROM SC  WHERE grade<60;

 

2)  用SQL語句完成下列查詢(確定范圍):

查所年齡在20至23歲之間的學生姓名、系別及年齡:

SELECT SnameSdeptSage  FROM S

WHERE  Sage  BETWEEN  20  AND  23;

 

3)  用SQL語句完成下列查詢(確定集合  ):

a)  查計算機系、數學系、信息系的學生姓名、性別:

SELECT SnameSsex  FROM S

WHERE  Sdept IN (’CS’,‘IS’,‘MATH’);

b)  查既不是計算機系、數學系、又不是信息系的學生姓名、性別:

SELECT SnameSsex  FROM S

WHERE  Sdept  NOT IN (’CS’, ‘IS’, ‘MATH’);

 

4)  用SQL語句完成下列查詢(字符匹配):

a)  查所有姓“劉”的學生的姓名、學號和性別:

SELECT SnameSnoSsex FROM S WHERE  Sname  LIKE ‘%’;

b)  查姓“上官”且全名為3個漢字的學生姓名:

SELECT Sname  FROM S WHERE  Sname  LIKE ‘上官_’;

c)  查所有不姓“張”的學生的姓名:

SELECT SnameSnoSsex  FROM S WHERE  Sname  NOT  LIKE ‘%’;

d)  查DB_Design課程的課程號:

SELECT Cno FROM CWHERE  Cname  LIKE ‘DB\_Design’ ESCAPE ‘\’;

 

5)  用SQL語句完成下列查詢(涉及空值的查詢):

a)  查缺考的學生的學號和課程號:

SELECT SnoCno FROM SC WHERE  Grade  IS NULL;

b)  查年齡為空值的學生的學號和姓名:

SELECT SnoSname FROM S WHERE  Sage  IS  NULL;

 

6)  用SQL語句完成下列查詢(多重條件查詢):

a)  查計算機系20歲以下的學生的學號和姓名:

  SELECT SnoSname FROM S WHERE  Sdept=‘CS’ AND Sage<20;

b)  查計算機系、數學系、信息系的學生姓名、性別:

SELECT SnameSsex FROM S WHERE  Sdept =’CS’ OR Sdept =‘IS’ OR Sdept =’MATH’;

 

7)  用SQL語句完成下列查詢(對查詢結果排序):

a)  查詢選修了C3課程的學生的學號和成績,其結果按分數的降序排列:

SELECT SnoGrade FROM SC WHERE  Cno=‘C3’ORDER BY Grade  DESC;

b)  查詢全體學生的情況,查詢結果按所在系升序排列,對同一系中的學生按年齡降序排列:

SELECT  * FROM S ORDER BY  SdepSage  DESC;

 

8)  用SQL語句完成下列查詢(聚合函數的使用):

a)  查詢學生總人數:

SELECT  COUNT(*) FROM S;

b)  查詢選修了課程的學生人數:

SELECT  COUNT(DISTINCT Sno) FROM SC;

c)  計算選修了C1課程的學生平均成績:

SELECT  AVG(Grade) FROM SC WHERE Cno=‘C1’;

d)  查詢學習C3課程的學生最高分數:

SELECT  MAX(Grade) FROM SC WHERE Cno=‘C3’;

 

9)  用SQL語句完成下列查詢(對查詢結果分組):

a)  查詢各個課程號與相應的選課人數:

 SELECT  Cno,COUNT(Sno)FROM SC GROUP BY Cno;

b)  查詢計算機系選修了3門以上課程的學生的學號:

  SELECT  Sno FROM SC WHERE Sdept=‘CS’ GROUP BY Sno  HAVING COUNT(*)>3;

c)  求基本表S中男同學的每一年級組(超過50人)有多少人?要求查詢結果按人數升序排列,人數相同按年齡降序排列:

SELECT Sage,COUNT(Sno)FROM S WHERE Ssex='M'GROUP BY Sage HAVING COUNT(*)> 50 ORDER BY 2,Sage DESC;

 

10) 用SQL語句完成下列查詢(多表聯接查詢):

a)  查詢每個學生及其選修課程的情況:

   SELECT S.Sno,Sname,Sage,Ssex,Sdept,Cno,Grade FROM S, SC WHERE S.Sno=SC.Sno;

b)  查詢選修了C2課程且成績在90分以上的所有學生:

    SELECT  S.SnoSname FROM SSC WHERE S.Sno=SC.Sno AND   SC.Cno=‘C2’  AND   SC.Grade > 90;

 

c)  查詢每個學生選修的課程名及其成績:

    SELECT  S.SnoSnameCnameSC.Grade FROM SSCC WHERE S.Sno=SC.Sno  AND SC.Cno=C.Cno;

d)  統計每一年齡選修課程的學生人數:

  SELECT Sage,COUNT(DISTINCT S.Sno)FROM SSC WHERE S.Sno=SC.Sno GROUP BY Sage;

 

11) 用SQL語句完成下列查詢(多表嵌套查詢-帶有IN謂詞的子查詢):

a)  查詢選修了C2課程的學生姓名:

SELECT  Sname FROM  S WHERE Sno  IN ( SELECT  Sno FROM  SC WHERE Cno=‘C2’);

b)  查詢與“張三”在同一個系學習的學生學號、姓名和系別:

SELECT SnoSnameSdept FROM S WHERE  Sdept  IN (SELECT Sdept FROM S WHERE Sname=‘張三’);

c)  查詢選修課程名為“數據庫”的學生學號和姓名:

SELECT SnoSname FROM S WHERE  Sno  IN (SELECT Sno FROM SC WHERE Cno  IN(SELECT Cno FROM C WHERE  Cname='DB'));

 

  1. 2.  (可選題)訂貨管理數據庫,有四個表:

倉庫表:倉庫號,面積,城市;

供應商表:供應商號,地址;

訂購單表:訂貨單號,供應商號,職工號,訂貨日期, 總金額;

職工表:職工號,倉庫號,工資;

        用SQL語句完成下列操作:

1)  查詢訂貨管理數據庫中數據的倉庫號、城市、供應商名和地址信息

方法一:使用簡單連接格式。

SELECT 倉庫.倉庫號,城市,供應商名,地址 FROM 供應商,訂購單,職工,倉庫

WHERE 供應商.供應商號=訂購單.供應商號 AND訂購單.職工號=職工.職工號

AND 職工.倉庫號=倉庫.倉庫號;

方法二:使用超連接的內部連接格式(注意連接條件的順序)。

SELECT 倉庫.倉庫號,城市,供應商名,地址 FROM 供應商

JOIN 訂購單 ON  供應商.供應商號=訂購單.供應商號

JOIN 職工  ON  訂購單.職工號=職工.職工號

JOIN 倉庫 ON 職工.倉庫號=倉庫.倉庫號 ;

 

2)  檢索在北京的供應商的名稱:

SELECT 供應商名 FROM 供應商 WHERE 地址 LIKE ‘%北京%’;

 

3)  檢索出向供應商S3發過訂購單的職工的職工號和倉庫號:

方法一(嵌套查詢):

SELECT 職工號,倉庫號 FROM 職工 WHERE 職工號 IN

(SELECT 職工號 FROM 訂購單 WHERE 供應商號='S3');

方法二(連接查詢):

SELECT 職工.職工號,倉庫號 FROM 職工,訂購單

WHERE 職工.職工號=訂購單.職工號 AND 供應商號='S3';

 

4)  檢索出和職工E1、E3都有聯系的北京的供應商信息:

SELECT * FROM 供應商 WHERE 地址 LIKE ‘%北京%’ AND 供應商號 IN

(SELECT 供應商號 FROM 訂購單 WHERE 職工號=’E1’) AND 供應商號 IN

(SELECT 供應商號 FROM 訂購單 WHERE 職工號=’E3’);

 

5)  檢索出向S4供應商發出訂購單的倉庫所在的城市:

SELECT 城市 FROM 倉庫,職工,訂購單 WHERE 倉庫.倉庫號=職工.倉庫號

AND 職工.職工號=訂購單.職工號 AND 供應商號=’S4’;

 

6)  檢索出由工資多於1230元的職工向北京的供應商發出的訂購單號:

SELECT 訂貨單號 FROM 職工,訂購單,供應商 WHERE 職工.職工號=訂購單.職工號AND 訂購單.供應商號=供應商.供應商號 AND 工資>1230 AND 地址 LIKE ‘%北京%’;

 

7)  檢索出所有倉庫的平均面積:

SELECT AVG(面積) AS 面積 FROM 倉庫;

 

8)  檢索出每個倉庫中工資多於1220元的職工個數:

SELECT 倉庫號,COUNT(*) 職工個數 FROM 職工 WHERE 工資>1220 GROUP BY 倉庫號;

 

9)  檢索工資低於本倉庫平均工資的職工信息:

SELECT * FROM 職工 AA WHERE 工資<(SELECT AVG(工資) FROM 職工 BB GROUP BY BB.倉庫號);

 

10) 列出表訂購單中每個職工經手的具有最高總金額的訂購單信息:

SELECT 職工號,供應商號,訂貨單號,總金額 FROM 訂購單 WHERE 總金額=(SELECT MAX(總金額) FROM 訂購單 GROUP BY 職工號);

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM