oracle(5)

一、 單選題

1.下列選項哪一個能夠完成給空表(STUDENTS)的STUDENT_ID列添加主鍵的任務

A:

ALTER TABLE students ADD PRIMARY KEY student_id;

B:

ALTER TABLE students ADD CONSTRAINT PRIMARY KEY (student_id);

C:

ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY student_id;

D:

ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY (student_id);

E:

ALTER TABLE students MODIFY CONSTRAINT stud_id_pk PRIMARY KEY (student_id);

參考答案:D

解析:
給已存在的表添加主鍵的語法:
ALTER TABLE table_name ADD CONSTRAINT 約束名 PRIMARY KEY (字段名);
注:字段名必須用括號括起來

2.下列解鎖hr賬戶的命令正確的是()
A:update user hr account unlock;
B:alter user hr account unlock;
C:alter user hr unlock;
D:update user hr unlock;

參考答案:B

解析:
固定語法。

3.關於下列SQL語句,說法正確的是?

  CREATE TABLE dept
  (deptno NUMBER(2),
  dname VARCHAR2(14),
  loc VARCHAR2(13));
  ROLLBACK;
  DESCRIBE DEPT;

A:執行DESCRIBE DEPT 顯示錶DEPT的結構
B:執行ROLLBACK 能夠釋放被表DEPT 佔用的存儲空間
C:執行 DESCRIBE DEPT 會返回一個 ORA-04043錯誤: 因爲表DEPT已經不存在
D:只有當在執行ROLLBACK之前執行COMMIT才能正確用DESCRIBE DEPT來顯示錶DEPT的表結構

參考答案:A

解析:
1、DDL會被隱式提交,而rollback回退到沒有被提交的地方,所以DDL不會受到rollback的影響;
2、DESCRIBE DEP 的作用是顯示錶DEPT的表結構 ;
當然建表語句是DDL
結合以上兩點不難得出正確結論是A。

4.要求有下列表結構
1.an ORDER_ID column of number data type
2.a CUSTOMER_ID column of number data type
3.an ORDER_STATUS column that contains a character data type
4.a DATE_ORDERED column to contain the date the order was placed

並且要求在插入數據時,假如ORDER_STATUS 沒有數據,則用默認值’PENDING’代替下列SQL語句正確的是()

A:

  CREATE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status NUMBER(10) DEFAULT 'PENDING',
  date_ordered DATE );

B:

  CREATE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status VARCHAR2(10) = 'PENDING',
  date_ordered DATE );

C:

  CREATE OR REPLACE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status VARCHAR2(10) DEFAULT 'PENDING',
  date_ordered DATE );

D:

  CREATE OR REPLACE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status VARCHAR2(10) = 'PENDING',
  date_ordered DATE );

E:

  CREATE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status VARCHAR2(10) DEFAULT 'PENDING',
  date_ordered DATE );

F:

  CREATE TABLE orders (
  order_id NUMBER(10),
  customer_id NUMBER(8),
  order_status VARCHAR2(10) DEFAULT 'PENDING',
  date_ordered VARCHAR2 );

參考答案:E

解析:
A:order_status數據類型不正確;
B:默認值的定義是用DEFAULT ‘默認值’
C:創建表沒有OR REPLACE子句;
D:同BC;
F:date_ordered數據類型不正確;

5.爲了成功查詢視圖,下列選項什麼是必須的()

A:基礎表必須具有數據。
B:您需要對視圖具有SELECT特權。
C:基礎表必須在同一模式中。
D:您只需要對基礎表具有SELECT特權。

參考答案:B

6.關於數據庫語言下列選項依次是DDL、DML、DCL、TCL的是()

A:CREATE、INSERT、COMMIT、GRANT
B:ALTER、GRANT、SAVEPOINT、UPDATE
C:DROP、DELETE、REVOKE、ROLLBACK
D:TRUNCATE、UPDATE、REVOKE、COMMIT
E:COMMENT、SELECT、REVOKE、RENAME

參考答案:D

解析:
SQL語言共分爲四大類:數據查詢語言DQL,數據操縱語言DML,數據定義語言DDL,數據控制語言DCL。

1、數據查詢語言DQL
數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE
子句組成的查詢塊:
SELECT <字段名錶>
FROM <表或視圖名>
WHERE <查詢條件>

2、數據操縱語言DML
數據操縱語言DML主要有三種形式:
1)插入:INSERT
2)更新:UPDATE
3)刪除:DELETE

3、數據定義語言(DDL Data Definition):create創建、alter更改、truncate截斷、drop刪除

4、DCL(Data Control Language,數據控制語言):
用來授予或回收訪問數據庫的某種特權,並控制數據庫操縱事務發生的時間及效果。如:
grant:授權;
revoke:取消權限;

TCL(Transaction Control Language,事物控制語言):
用來對事務進行管理。 如:
COMMIT : 保存已完成事務動作結果
SAVEPOINT : 保存事務相關數據和狀態用以可能的回滾操作
ROLLBACK : 恢復事務相關數據至上一次COMMIT操作之後

7.哪個SQL語句定義了在EMP表的DEPTNO字段上定義了FOREIGN KEY約束

A:

  CREATE TABLE EMP(
  empno NUMBER(4),
  ename VARCHAR2(35),
  deptno NUMBER(7,2) NOT NULL,
  CONSTRAINT emp_deptno_fk FOREIGN KEY deptno
  REFERENCES dept deptno
  );

B:

  CREATE TABLE EMP(
  empno NUMBER(4),
  ename VARCHAR2(35),
  deptno NUMBER(7,2)
  CONSTRAINT emp_deptno_fk REFERENCES dept (deptno)
  );

C:

  CREATE TABLE EMP(
  empno NUMBER(4),
  ename VARCHAR2(35),
  deptno NUMBER(7,2) NOT NULL,
  CONSTRAINT emp_deptno_fk REFERENCES dept (deptno)
  FOREIGN KEY (deptno)
  );

D:

CREATE TABLE EMP(
  empno NUMBER(4),
  ename VARCHAR2(35),
  deptno NUMBER(7,2) FOREIGN KEY
  CONSTRAINT emp_deptno_fk REFERENCES dept (deptno)
  );

參考答案:B

解析:
外鍵約束可以定義在表級,也可以定義在列級,本題正確選項B就是把外鍵約束定義在了列級,外鍵約束關聯的其他表的列必須被小括號括起來;

二、 多選題

1.下列選項哪些是單行函數的屬性()
A:不能嵌套
B:操縱每一條數據
C:作用於返回的每一行
D:每行返回一個結果
E:只接受一個參數,並只返回一個值
F:接受的參數可以是列或表達式

參考答案:BCDF

解析:
A:單行函數可以嵌套;
E:可以接受不止一行數據,然後返回每行處理後的數據。

2.在哪種情況下,會用到外連接查詢?(請選出兩項)

A:要連接的表具有NOT NULL列。
B:要連接的表只有匹配的數據
C:要連接的列具有NULL值。
D:要連接的表只有不匹配的數據。
E:要連接的表具有匹配和不匹配的數據。
F:僅當表具有主鍵 - 外鍵關係時

參考答案:CE

解析:
外連接是在一個表的基礎上,匹配另一個表,當另一張表沒有與之匹配的數據時以空值代替。

3.檢查下面創建order表的SQL語句,在執行上述SQL語句時,哪些列將自動創建索引?(請選出兩項)

CREATE TABLE orders(
  SER_NO NUMBER UNIQUE,
  ORDER_ID NUMBER,
  ORDER_DATE DATE NOT NULL,
  STATUS VARCHAR2(10)
  CHECK (status IN ('CREDIT', 'CASH')),
  PROD_ID NUMBER
  REFERENCES PRODUCTS(PRODUCT_ID),
  ORD_TOTAL NUMBER,
  PRIMARY KEY (order_id, order_date)
  );

A:SER_NO
B:ORDER_ID
C:STATUS
D:PROD_ID
E:ORD_TOTAL
F:composite index on ORDER_ID and ORDER_DATE

參考答案:AF

解析:
數據庫會對UNIQUE約束和PRIMARY KEY約束自動創建索引。

4.查看Marks表的表結構
在這裏插入圖片描述
SUBJ1 、SUBJ12、SUBJ13是學生三門課的成績,下列選項正確的有?(請選出兩項)

A:

SELECT SUM(subj1, subj2, subj3) FROM marks;

B:

SELECT SUM(subj1 + subj2 + subj3) FROM marks;

C:

SELECT SUM(subj1), SUM(subj2), SUM(subj3) FROM marks;

D:

SELECT MAX(subj1, subj2, subj3) FROM marks;

E:

SELECT MINIMUM(subj1) FROM marks;

F:

SELECT COUNT(std_id) FROM marks WHERE subj1 >= AVG(subj1);

參考答案:BC

解析:
聚合函數,也叫組函數,處理的是多行數據,依據此原則來分析題目,
A:SUM(subj1, subj2, subj3)聚合函數裏包含的是多行多列,沒辦法處理;
BC聚合函數裏明顯是多行數據;
D的錯誤原因與A相同;EMINIMUM不是組函數;Fwhere後不能用組函數,因爲系統在處理時先處理where再處理select,若想達到選項的需求,可以用having替代where,having在select後執行。

5.根據下面的建表語句,選項中的SQL語句依次執行,哪些能被正確執行?(選出正確的兩項)

CREATE TABLE STUDENT (
    stuId NUMBER(11) primary key,
    stuName nvarchar2(10),
    stuAge NUMBER(4),
    stuSex NUMBER(1) CHECK (stuSex IN(0,1))
  );

A:

INSERT INTO STUDENT (stuId,stuName,stuAge,stuSex) VALUES(1,'Rick',48,0);

B:

INSERT INTO STUDENT (stuId,stuName,stuAge,stuSex) VALUES(1,'Rick',48,0);

C:

INSERT INTO STUDENT (stuId,stuName,stuAge,stuSex) VALUES(2,'Rick',48,1);

D:

INSERT INTO STUDENT (stuId,stuName,stuAge,stuSex) VALUES(3,'Rick',48,2);

參考答案:AC

解析:
stuId是主鍵約束,主鍵約束要求其值不能爲空(這點區別唯一約束),也不能重複;B錯
stuSex爲檢查約束,要求stuSex的值只能取0和1。D錯

6.下列SQL語句正確的是?(請選出兩項)
A:describle view_name;
B:describle table_name;
C:describle column_name;
D:describle sequence_name;

參考答案:AB

解析:
describle 只可以顯示錶或者視圖的結構

三、 簡答

1.請說明你有哪些辦法提高SQL執行效率?
掌握影響sql性能的關鍵要素:
1、複用的SQL解析結果(SGA緩衝區)——因此要用動態查詢並遵循保證書寫格式相同,包括大小寫,空格位置,表別名等一致的原則
2、FROM從右至左解析表——因此將記錄數最少的表作爲基礎表(放在最右)
3、ORACLE採用自下而上的順序解析WHERE子句——因此將篩選力度最大的條件寫在最後
4、盡最大可能利用索引:
用IN將啓用全表掃描,使用EXISTS將利用索引
用NOT IN將啓用全表掃描,使用NOT
EXISTS將利用索引
用EXISTS替換DISTINCT
用表連接替換EXISTS
避免在索引列上使用IS NULL和IS NOT NULL
5、Where優先於having,因爲可以儘早限定原始數據集

2.請簡介數據庫事務的四個特性。
事務的原子性(Atomicity)是指一個事務要麼全部執行,要麼不執行.也就是說一個事務不可能只執行了一半就停止了.比如你從取款機取錢,這個事務可以分成兩個步驟:1劃卡,2出錢.不可能劃了卡,而錢卻沒出來.這兩步必須同時完成.要麼就不完成.

事務的一致性(Consistency)是指事務的運行並不改變數據庫中數據的一致性.例如,完整性約束了a+b=10,一個事務改變了a,那麼b也應該隨之改變.

獨立性(Isolation):事務的獨立性也有稱作隔離性,是指兩個以上的事務不會出現交錯執行的狀態.因爲這樣可能會導致數據不一致.

持久性(Durability):事務的持久性是指事務執行成功以後,該事務所對數據庫所作的更改便是持久的保存在數據庫之中,不會無緣無故的回滾.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章