一、 單選題
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):事務的持久性是指事務執行成功以後,該事務所對數據庫所作的更改便是持久的保存在數據庫之中,不會無緣無故的回滾.