【DB笔试面试1-100】
【DB筆試面試1】下列不屬于Oracle的邏輯結構的是()
A、區 B、段 C、數據文件 D、表空間
答案:C。
Oracle中邏輯結構包括表空間、段、區和塊。其中,數據庫由表空間構成,而表空間又是由段構成,而段又是由區構成,而區又是由Oracle塊構成。使用這種“塊 → 區 → 段 → 表空間 → 數據庫”的結構為了提高數據庫的效率。邏輯結構圖如下圖所示:
本題中,對于選項A、B、D都屬于數據庫的邏輯結構,對于C選項的數據文件是屬于數據庫的物理結構,是實實在在可以看得見的。
所以,本題的答案為C。
【DB筆試面試2】下面哪個用戶不是Oracle缺省安裝后就存在的用戶()
A、SYSDBA B、SYSTEM
C、SCOTT D、SYS
SYSDBA和SYSOPER屬于系統權限,也稱為管理權限,擁有例如數據庫開啟、關閉等一些系統管理級別的權限。SYSDBA擁有最高的系統權限,SYS用戶必須以SYSDBA的權限來登錄,而普通用戶以SYSOPER登陸后用戶是PUBLIC。
[oracle@orcltest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 6 14:39:19 2016
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SYS@lhrdb> show user
USER is “SYS”
SYS@lhrdb> grant sysoper to lhr;
Grant succeeded.
SYS@lhrdb> conn lhr/lhr as sysoper
Connected.
PUBLIC@lhrdb> show user
USER is “PUBLIC”
PUBLIC@lhrdb> conn lhr/lhr
Connected.
LHR@lhrdb> show user
USER is “LHR”
SYSDBA和SYSOPER具體的權限如下表所示:
本題中,對于選項A,SYSDBA屬于系統特殊權限,不屬于用戶,選項A的描述錯誤。所以,選項A正確。
對于選項B,SYSTEM是系統默認用戶,擁有DBA角色。所以,選項B錯誤。
對于選項C,SCOTT用戶屬于測試用戶。所以,選項C錯誤。
對于選項D,SYS用戶具有管理系統的最高權限,必須以SYSDBA來登錄。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試3】下面哪種情況會讓普通用戶連接到Oracle數據庫,但不能創建表()
A、授予了CONNECT的角色,但沒有授予RESOURCE的角色
B、沒有授予用戶系統管理員的角色
C、數據庫實例沒有啟動
D、數據庫監聽沒有啟動
CONNECT角色只具有最簡單的登錄權限,登錄后不能做任何操作,只有賦予了CREATE TABLE權限后才能創建表。
本題中,對于選項A,只有CONNECT角色只能登錄,登錄后不能做其它操作。所以,選項A正確。
對于選項B,沒有系統管理員權限,但是有CREATE TABLE權限也可以創建表。所以,選項B錯誤。
對于選項C,數據庫實例如果沒有啟動,普通用戶不能連接數據庫。所以,選項C錯誤。
對于選項D,數據庫監聽如果沒有啟動,普通用戶也不能連接到數據庫。所以,選項D錯誤。
所以,本題的答案為A
【DB筆試面試4】在Oracle中,關于PL/SQL下列描述正確的是()
A、PL/SQL代表Power Language/SQL
B、PL/SQL不支持面向對象編程
C、PL/SQL塊包括聲明部分、可執行部分和異常處理部分
D、PL/SQL提供的四種內置數據類型是CHARACTER、INTEGER、FLOAT、BOOLEAN
PL/SQL(Procedure Language & Structured Query Language)是Oracle在標準的SQL語言上的擴展。PL/SQL不僅允許嵌入SQL語言,還可以定義變量和常量,允許使用條件語句和循環語句,允許使用異常處理各種錯誤,這樣使得它的功能變得更加強大。
一個基本的PL/SQL塊由三部分組成:定義部分,可執行部分以及異常部分。
定義部分:定義將在可執行部分中用到的所有變量、常量、游標和用戶自定義的異常處理,這部分是可選的。
可執行部分:包括對數據進行操作的SQL語句。這部分必須存在。
異常處理部分:對可執行部分中的語句,在執行過程中出錯或出現非正常現象時所做出的處理。這部分也是可選的。
本題中,對于選項A,PL/SQL代表Procedure Language & Structured Query Language。所以,選項A錯誤。
對于選項B,PL/SQL支持面向對象編程。所以,選項B錯誤。
對于選項C,PL/SQL塊包括聲明部分、可執行部分和異常處理部分。所以,選項C正確。
對于選項D,PL/SQL提供的內置數據類型不包括CHARACTER。所以,選項D錯誤。
所以,本題的答案為C。
【DB筆試面試5】在Oracle數據庫中,下面關于函數的描述正確的是()
A、SYSDATE函數返回Oracle服務器的日期和時間
B、ROUND數字函數按四舍五入原則返回與指定十進制數最靠近的整數
C、ADD_MONTHS日期函數返回指定兩個月份天數的和
D、SUBSTR函數從字符串指定的位置返回剩余的子串
Oracle有很多系統函數,像SYSDATE,TRUNCATE,ROUND,NVL等都是常用的也是必須掌握的函數。
本題中,對于選項A,SYSDATE返回系統的時間。所以,選項A正確。
對于選項B,ROUND函數按照四舍五入的原則進行取舍,并非取整。所以,選項B錯誤。
對于選項C,ADD_MONTHS函數是加上指定的月份數。所以,選項C錯誤。
對于選項D,SUBSTR為字符截取函數,表示從字符串指定的位置返回指定長度的子串。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試6】適合建立索引的字段是()(多選題)
A、在SELECT子句中的字段 B、外鍵字段
C、主鍵字段 D、在WHERE子句中的字段
以下列上適合建立索引:
(1) 表的主鍵、外鍵必須有索引。
(2) 經常與其它表進行連接的表,在連接字段上應該建立索引。
(3) 經常出現在WHERE子句中的字段,特別是大表的字段,應該建立索引。
(4) 索引應該建在選擇性高的字段上。
(5) 索引應該建在小字段上,對于大的文本字段甚至超長字段,不適合建索引。
(6) 復合索引的建立需要進行仔細分析。
(7) 正確選擇復合索引中的主列字段,一般是選擇性較好的字段。
(8) 如果單字段查詢很少甚至沒有,那么可以建立復合索引;否則考慮單字段索引。
(9) 如果復合索引中包含的字段經常單獨出現在WHERE子句中,那么分解為多個單字段索引。
(10) 如果復合索引所包含的字段超過3個,那么仔細考慮其必要性,考慮減少復合的字段。
(11) 如果既有單字段索引,又有這幾個字段上的復合索引,那么一般可以刪除復合索引。
(12) 頻繁進行DML操作的表,不要建立太多的索引。
(13) 刪除無用的索引,避免對執行計劃造成負面影響。
本題中,對于選項A,SELECT子句中的字段若作為連接條件,則可以建立索引。所以,選項A錯誤。
對于選項B,外鍵字段應該建立索引。所以,選項B正確。
對于選項C,主鍵字段應該建立索引。所以,選項C正確。
對于選項D,在WHERE子句中的字段常作為連接條件或過濾條件,可以建立索引。所以,選項D正確。
所以,本題的答案為B、C、D。
【DB筆試面試7】運行上面的程序,下面選項中哪幾個更改永久保存到數據庫()
BEGIN
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,’WANG’,’FRED’);
SAVEPOINT SAVE_A;
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,’WOO’,’DAVID’);
SAVEPOINT SAVE_B;
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,’LDD’,’FRIK’);
SAVEPOINT SAVE_C;
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(45000,’LHR’,’DAVID’);
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(25000,’LEE’,’BERT’);
ROLLBACK TO SAVEPOINT SAVE_C;
INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,’CHUNG’,’MIKE’);
ROLLBACK TO SAVEPOINT SAVE_B;
COMMIT;
END;
運行上面的程序,下面選項中哪幾個更改永久保存到數據庫()(多選題)
A、INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,’LDD’,’FRIK’);
B、INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,’CHUNG’,’MIKE’);
C、INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,’WANG’,’FRED’);
D、INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,’WOO’,’DAVID’);
保存點(SAVEPOINT)是事務處理過程中的一個標志,與回滾命令(ROLLBACK)結合使用。其主要用途是允許用戶將某一段處理進行回滾而不必回滾整個事務。
1)執行SAVEPOINT SAVE_A的時候創建了一個保存點SAVE_A;
2)執行SAVEPOINT SAVE_B的時候創建了一個保存點SAVE_B;
3)執行SAVEPOINT SAVE_C的時候創建了一個保存點SAVE_C;
4)在執行ROLLBACK TO SAVEPOINT SAVE_C后,SAVEPOINT SAVE_C到當前語句之間所有的操作都被回滾;也就是說回滾到了3)的狀態;
5)在執行ROLLBACK TO SAVEPOINT SAVE_B后,SAVEPOINT SAVE_B到當前語句之間所有的操作都被回滾;也就是說回滾到了2)的狀態;
6)在執行COMMIT后,只有SAVEPOINT SAVE_B之前的操作會被提交從而永久保存到數據庫。
綜上分析,題目中的程序塊在執行完畢后,只有SAVEPOINT SAVE_B之前的操作會被提交從而永久保存到數據庫,顯然,C和D選項正確。
所以,本題的答案為C、D。
【DB筆試面試8】小明設計了如下的學籍管理系統,已知關系:
學籍(學號,學生姓名) PK=學號
成績(科目號,成績,學號) PK=科目代碼,FK=學號
已有表記錄如下,能夠插入成績記錄的是()
A、(1,99,5) B、(5,68,1) C、(3,70,7) D、(7,45,NULL)
主鍵用來唯一地標識一條記錄,不能有重復的記錄,不允許為空,主鍵只能有一個,用來保證數據完整;表的外鍵是另一表的主鍵,外鍵可以有重復的,可以是空值,一個表可以有多個外鍵,用來和其它表建立聯系用的。
對于本題主要看外鍵列是否在主表中存在,若不存在,則報錯:ORA-02291: integrity constraint (SYS.FK_XX) violated - parent key not found
本題中,對于選項A,學號5在學籍表中不存在。所以,選項A錯誤。
對于選項B,學號1在學籍表中存在。所以,選項B正確。
對于選項C,學號7在學籍表中不存在。所以,選項C錯誤。
對于選項D,外鍵列可以為空。所以,選項D正確。
所以,本題的答案為B、D。
【DB筆試面試9】對數據庫第二范式的理解,正確的是()
對數據庫第二范式的理解,正確的是()
A、數據庫表的每一列都是不可分割的原子數據項
B、在1NF基礎上,任何非主屬性不依賴于其它非主屬性
C、在1NF基礎上,非碼屬性必須完全依賴于碼
D、以上說法都不正確
1NF:原子性,字段不可再分,否則就不是關系型數據庫。
2NF:唯一性,一個表只說明一個事物。
3NF:每列都與主鍵有直接關系,不存在傳遞依賴。
本題中,對于選項A,屬于第一范式。所以,選項A錯誤。
對于選項B,在1NF基礎上消除非主屬性對主鍵的部分函數依賴才是2NF。所以,選項B錯誤。
對于選項C,在1NF基礎上,非碼屬性必須完全依賴于碼。所以,選項C正確。
對于選項D,自然錯誤。
所以,本題的答案為C。
【DB筆試面試10】下列選項中,不屬于SQL約束的是()
下列選項中,不屬于SQL約束的是()
A、UNIQUE
B、PRIMARY KEY
C、FOREIGN KEY
D、BETWEEN
約束主要有以下幾種:
NOT NULL:用于控制字段的內容一定不能為空(NULL)。
UNIQUE:控制字段內容不能重復,一個表允許有多個UNIQUE約束。
PRIMARY KEY:也是用于控制字段內容不能重復,但它在一個表只允許出現一個。
FOREIGN KEY:FOREIGN KEY約束用于防止非法數據插入外鍵列,因為外鍵列的值必須在主表中存在。
CHECK:用于控制字段的值范圍。
DEFAULT:用于設置新記錄的默認值。
本題中,對于選項A,UNIQUE屬于唯一約束。所以,選項A錯誤。
對于選項B,PRIMARY KEY屬于主鍵約束。所以,選項B錯誤。
對于選項C,FOREIGN KEY屬于外鍵約束。所以,選項C錯誤。
對于選項D,BETWEEN屬于連接操作符,不屬于約束,所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試11】根據題目要求寫出以下50道SQL語句(1)
已知有如下4張表:
學生表:STUDENT(S#,SNAME,SAGE,SSEX)
課程表:COURSE(C#,CNAME,T#)
成績表:SC(S#,C#,SCORE)
教師表:TEACHER(T#,TNAME)
其中,S#代表學號,SNAME代表學生姓名,SAGE代表學生年齡,SSEX代表學生性別,C#代表課程編號,CNAME代表課程名字,T#代表教師編號,TNAME代表教師名字,SCORE代表成績。
根據以上信息按照下面要求寫出對應的SQL語句。
本題考察SQL的編寫能力,對于這類型的題目,只要把4張表之間的關聯關系搞清楚了,編寫對應的SQL語句就比較容易了,本題給出的四張表之間的關系如下圖所示:
1、查詢課程編號為“001”的課程比“002”的課程成績高的所有學生的學號
答案:首先查詢課程編號分別為001和002的所有學生的學號及其分數作為內嵌視圖A和B,然后將A和B通過學號關聯,過濾條件就是A的分數大于B的分數,最終SQL如下:
SELECT A.S#
FROM (SELECT S#, SCORE FROM SC WHERE C# = ‘001’) A,
(SELECT S#, SCORE FROM SC WHERE C# = ‘002’) B
WHERE A.SCORE > B.SCORE
AND A.S# = B.S#;
2、查詢平均成績大于60分的學生的學號和平均成績
答案:該內容通過SC表即可獲取,按照SC表的S#分組后即可求出平均成績,最后通過HAVING子句來過濾平均分大于60的學生,最終SQL如下:
SELECT S#, AVG(SCORE)
FROM SC
GROUP BY S#
HAVING AVG(SCORE) > 60;
3、查詢所有學生的學號、姓名、選課數、總成績
答案:學生姓名通過STUDENT表獲取,成績通過SC表獲取,考察的是COUNT和GROUP BY函數,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME, COUNT(SC.C#), SUM(SCORE)
FROM STUDENT
LEFT OUTER JOIN SC
ON STUDENT.S# = SC.S#
GROUP BY STUDENT.S#, SNAME;
4、查詢姓“李”的老師的個數
答案:老師通過TEACHER表即可查詢,考察模糊查詢,最終SQL如下:
SELECT COUNT(DISTINCT(TNAME))
FROM TEACHER
WHERE TNAME LIKE ‘李%’;
5、查詢沒學過“李美玲”老師課的學生的學號、姓名
答案:首先查詢學習過“李美玲”老師課的學生的學號作為子查詢,而“李美玲”老師涉及到TEACHER表,TEACHER表要和學生有關聯必須通過課程和成績表,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT
WHERE S# NOT IN (SELECT DISTINCT (SC.S#)
FROM SC, COURSE, TEACHER
WHERE SC.C# = COURSE.C#
AND TEACHER.T# = COURSE.T#
AND TEACHER.TNAME = ‘李美玲’);
6、查詢學過編號為“001”的課程并且也學過編號為“002”的課程的學生的學號、姓名
答案:這道題需要注意的是“且”這個關鍵詞,說明查詢出來的學生即學習過001也學習過002的課程,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
ANDSC.C# = ‘001’
AND EXISTS (SELECT *
FROM SC AS SC_2
WHERE SC_2.S# = SC.S#
AND SC_2.C# = ‘002’);
錯誤答案:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
AND SC.C# IN (‘001’ ,’002’);
7、查詢學過“李多多”老師所教的所有課的學生的學號、姓名
答案:這道題和第6題比較相似,需要理解題意,題目說的是查詢學過“李多多”老師所教的所有課的同學的學號、姓名,舉個例子,比如“李多多”老師教過語文和數學,那么就得找出哪些同學同時學習了語文和數學這2門課程,最終SQL如下:
SELECT S#, SNAME
FROM STUDENT
WHERE S# IN (SELECT S#
FROM SC, COURSE, TEACHER
WHERE SC.C# = COURSE.C#
AND TEACHER.T# = COURSE.T#
AND TEACHER.TNAME = ‘李多多’
GROUP BY S#
HAVING COUNT(SC.C#) = (SELECT COUNT(C#)
FROM COURSE, TEACHER
WHERE TEACHER.T# = COURSE.T#
AND TNAME = ‘李多多’));
錯誤答案:
SELECT S#, SNAME
FROM STUDENT
WHERE S# IN (SELECT S# FROM SC, COURSE, TEACHER
WHERESC.C# = COURSE.C#
AND TEACHER.T# = COURSE.T#
AND TEACHER.TNAME = ‘李多多’);
8、查詢課程編號為“002”的總成績
答案:本題考查SUM函數,最終SQL如下所示:
SELECT SUM(SCORE) FROM SC SC_2 WHERE SC_2.C# = ‘002’;
9、查詢所有課程成績小于60分的學生的學號、姓名
答案:涉及到學生表和成績表,比較簡單,最終SQL如下:
SELECT S#, SNAME
FROM STUDENT
WHERE S# NOT IN (SELECT STUDENT.S#
FROM SC
WHERE SCORE >= 60);
10、查詢沒有學全所有課的學生的學號、姓名
答案:沒有學全所有課,翻譯一下就是學生學習的課程數小于總的課程數,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
GROUP BY STUDENT.S#, STUDENT.SNAME
HAVING COUNT(C#) < (SELECT COUNT(C#) FROM COURSE);
11、查詢至少有一門課與學號為“1001”的學生所學課程相同的學生的學號和姓名
答案:首先找出學號為1001的學生學習過的課程,然后根據這些課程號就可以找到有哪些學生學習過部分1001學生學習過的課程,最終SQL如下:
SELECT S#, SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
AND C# IN (SELECT C# FROM SC WHERE S# = ‘1001’);
SELECT SC.S#, SNAME;
12、查詢所學課程和學號為“001”的學生所有課程一樣的其他學生的學號和姓名
答案:首先找出學號為1001的學生學習過的課程,然后根據這些課程號和所學課程總數就可以找到有哪些同學學習過和他一樣的課程,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
AND C# IN (SELECT C# FROM SC WHERE S# = ‘001’)
GROUP BY STUDENT.S#, STUDENT.SNAME
HAVING COUNT(C#) = (SELECT COUNT(C#) FROM SC WHERE S# = ‘001’);
13、把“SC”表中“李多多”老師教的課的成績都更改為此課程的平均成績
答案:首先找到李多多老師教過哪些課程及其課程的平均成績,然后根據課程號關聯成績表進行更新,最終SQL如下:
UPDATE SC
SET SCORE =
(SELECT AVG(SC_2.SCORE)
FROM COURSE, TEACHER, SC SC_2
WHERE COURSE.T# = TEACHER.T#
AND COURSE.C# = SC_2.C#
AND SC_2.C# =SC.C#
AND TEACHER.TNAME = ‘李多多’
GROUP BY COURSE.C#)
WHERE EXISTS(SELEC 1 FROM COURSE,
TEACHER,
SC SC_2 WHERE COURSE.T# = TEACHER.T#
AND COURSE.C# = SC_2.C#
AND SC_2.C# =SC.C#
AND TEACHER.TNAME = ‘李多多’
GROUP BY COURSE.C#
);
14、查詢沒有學習過“1002”號課程的的學生的學號和姓名
答案:本題比較簡答,最終SQL如下:
SELECT STUDENT.S#, STUDENT.SNAME
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
AND C# NOT IN (SELECT C# FROM SC WHERE S# = ‘1002’);
15、刪除學習“李多多”老師課的SC表記錄
答案:本題比較簡答,最終SQL如下:
DELETE FROM SC
WHERE SC.C# IN
(SELECT COURSE.C# FROM COURSE C, TEACHER T WHERE C.T# = T.T# AND T.TNAME=’李多多’);
16、向SC表中插入一些記錄這些記錄要求符合以下條件:沒有上過編號為“003”課程的學生的學號、編號為002的課程的平均成績
答案:2個點,002課程的平均成績和沒有學習過003課程的學生,最終SQL如下:
INSERT INTO SC(S#,C#,SCORE)
SELECT S#, ‘002’, (SELECT AVG(SCORE) FROM SC WHERE C# = ‘002’)
FROM STUDENT
WHERE S# NOT IN (SELECT S# FROM SC WHERE C# = ‘003’);
17、按平均成績從高到低顯示所有學生的“數據庫”、“企業管理”、“英語”三門的課程成績,其中數據庫的c#為004,企業管理的c#為001,英語的c#為006,按如下形式顯示:
學生ID 數據庫 企業管理 英語 有效課程數 有效平均成績
答案:查看標量子查詢,最終SQL如下:
SELECT S# AS 學生ID,
(SELECT SCORE FROM SC WHERE SC.S# = T.S# AND C# = ‘004’) AS 數據庫,
(SELECT SCORE FROM SC WHERE SC.S# = T.S# AND C# = ‘001’) AS 企業管理,
(SELECT SCORE FROM SC WHERE SC.S# = T.S# AND C# = ‘006’) AS 英語,
COUNT(*) AS 有效課程數,
AVG(T.SCORE) AS 平均成績
FROM SC AS T
GROUP BY S#
ORDER BY AVG(T.SCORE) DESC;
18、查詢各科成績最高和最低的分,以如下形式顯示課程ID最高分最低分
答案:最終SQL如下:
SELECT C# AS 課程ID, MAX(SCORE) AS 最高分, MIN(SCORE) AS 最低分
FROM SC
GROUP BY C#;
19、按各科平均成績從低到高和及格率的百分數從高到低排列,以如下形式顯示:
課程號 課程名 平均成績 及格百分數
答案:最終SQL如下:
SELECT T.C# AS 課程號,
MAX(COURSE.CNAME) AS 課程名,
NVL(AVG(SCORE), 0) AS 平均成績,
((100 * SUM(CASE
WHEN NVL(SCORE, 0) >= 60 THEN
1
ELSE
0
END)) / COUNT(*)) AS 及格百分數
FROM SC T, COURSE C
WHERE T.C# = C.C#
GROUP BY T.C#
ORDER BY 平均成績,
((100 * SUM(CASE
WHEN NVL(SCORE, 0) >= 60 THEN
1
ELSE
0
END)) / COUNT(*));
20、查詢如下課程平均成績和及格率的百分數(用1行顯示),其中企業管理為001,馬克思為002,UML為003,數據庫為004
答案:最終SQL如下:
SELECT SUM(CASE WHEN C#=’001’ THEN SCORE ELSE 0 END)/SUM(CASE C# WHEN ‘001’ THEN 1 ELSE 0 END) AS 企業管理平均分,
100*SUM(CASE WHEN C#=’001’ AND SCORE>=60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C#=’001’ THEN 1 ELSE 0 END) AS 企業管理及格百分數,
SUM(CASE WHEN C#=’002’ THEN SCORE ELSE 0 END)/SUM(CASE C# WHEN’002’ THEN 1 ELSE 0 END) AS 馬克思平均分,
100*SUM(CASE WHEN C#=’002’ AND SCORE>=60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C#=’002’ THEN 1 ELSE 0 END) AS 馬克思及格百分數,
SUM(CASE WHEN C#=’003’ THEN SCORE ELSE 0 END)/SUM(CASE C# WHEN’003’ THEN 1 ELSE 0 END) AS UML平均分 ,
100*SUM(CASE WHEN C#=’003’ AND SCORE>=60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C#=’003’ THEN 1 ELSE 0 END) AS UML及格百分數,
SUM(CASE WHEN C#=’004’ THEN SCORE ELSE 0 END)/SUM(CASE C# WHEN ‘004’ THEN 1 ELSE 0 END) AS數據庫平均分,
100*SUM(CASE WHEN C#=’004’AND SCORE>=60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C#=’004’THEN 1 ELSE 0 END) AS 數據庫及格百分數
FROM SC;
21、查詢不同老師所教不同課程平均分從高到低顯示
答案:最終SQL如下:
SELECT Z.T# AS 教師ID,
Z.TNAME AS 教師姓名,
C.C# AS 課程,
C.CNAME AS 課程名稱,
AVG(SCORE) AS 平均成績
FROM SC AS T, COURSE AS C, TEACHER AS Z
WHERE T.C# = C.C#
AND C.T# = Z.T#
GROUP BY C.C#,Z.T#,Z.TNAME,C.CNAME
ORDER BY AVG(SCORE) DESC;
22、查詢如下課程成績第3名到第6名的學生成績單,其中企業管理為001,馬克思為002,UML為003,數據庫為004,以如下形式顯示:
學生ID 學生姓名 企業管理 馬克思 UML 數據庫 平均成績
答案:最終SQL如下:
SELECT SC.S# AS 學生學號,
STUDENT.SNAME AS 學生姓名,
T1.SCORE AS 企業管理,
T2.SCORE AS 馬克思,
T3.SCORE AS UML,
T4.SCORE AS 數據庫,
NVL(T1.SCORE, 0) + NVL(T2.SCORE, 0) + NVL(T3.SCORE, 0) +
NVL(T4.SCORE, 0) AS 總分
FROM STUDENT, SC
LEFT JOIN (SELECT *
FROM (SELECT NB.S#,
NB.SCORE,
(RANK() OVER(PARTITION BY NB.S# ORDER BY NB.SCORE)) RK
FROM SC NB
WHERE NB.C# = ‘001’)
WHERE RK <= 6
AND RK >= 3) AS T1
ON SC.S# = T1.S#
LEFT JOIN (SELECT *
FROM (SELECT NB.S#,
NB.SCORE,
(RANK() OVER(PARTITION BY NB.S# ORDER BY NB.SCORE)) RK
FROM SC NB
WHERE NB.C# = ‘002’)
WHERE RK <= 6
AND RK >= 3) AS T2
ON SC.S# = T2.S#
LEFT JOIN (SELECT *
FROM (SELECT NB.S#,
NB.SCORE,
(RANK() OVER(PARTITION BY NB.S# ORDER BY NB.SCORE)) RK
FROM SC NB
WHERE NB.C# = ‘003’)
WHERE RK <= 6
AND RK >= 3) AS T3
ON SC.S# = T3.S#
LEFT JOIN (SELECT *
FROM (SELECT NB.S#,
NB.SCORE,
(RANK() OVER(PARTITION BY NB.S# ORDER BY NB.SCORE)) RK
FROM SC NB
WHERE NB.C# = ‘004’)
WHERE RK <= 6
AND RK >= 3) AS T4
ON SC.S# = T4.S#
WHERE STUDENT.S# = SC.S#;
23、使用分段[100-85],[85-70],[70-60],[<60]來統計各科成績,分別統計各分數段人數:課程ID和課程名稱
答案:最終SQL如下:
SELECTSC.C# AS 課程ID,
CNAME AS 課程名稱,
SUM(CASE WHEN SCORE BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS “[100-85]” ,
SUM(CASE WHEN SCORE BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS “[85-70]” ,
SUM(CASE WHEN SCORE BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS “[70-60]” ,
SUM(CASE WHEN SCORE<60 THEN 1 ELSE 0 END) AS “[60-]”
FROM SC,COURSE
WHERE SC.C#=COURSE.C#
GROUP BY SC.C#,CNAME;
24、查詢學生平均成績及其名次
答案:最終SQL如下:
SELECT S# AS 學生學號, RK AS 名次, 平均成績
FROM (SELECT S#,
AVG(SCORE) 平均成績,
SUM(SCORE) 總成績,
(RANK() OVER(PARTITION BY S# ORDER BY SUM(SCORE) DESC)) RK
FROM SC
GROUP BY S#) AS T2
ORDER BY 名次 DESC;
25、查詢各科成績前三名的記錄(不考慮成績并列情況)
答案:最終SQL如下:
SELECT T1.S# AS 學生ID, T1.C# AS 課程ID, SCORE AS 分數
FROM SC T1
WHERE SCORE IN
(SELECT TOP 3 SCORE FROM SC WHERE T1.C# = C# ORDER BY SCORE DESC)
ORDER BY T1.C#;
【DB筆試面試12】根據題目要求寫出以下50道SQL語句(26-50)
26、查詢每門課程被選修的學生數
答案:最終SQL如下:
SELECT C#, COUNT(S#) FROM SC GROUP BY C#;
27、查詢出只選修了一門課程的全部學生的學號和姓名
答案:最終SQL如下:
SELECT SC.S#, STUDENT.SNAME
FROM SC, STUDENT
WHERE SC.S# = STUDENT.S#
GROUP BY SC.S#, STUDENT.SNAME
HAVING COUNT(C#) = 1;
28、查詢男生、女生人數
答案:最終SQL如下:
SELECT SUM(CASE WHEN SSEX = ‘男’ THEN 1 ELSE 0) AS 男生人數,
SUM(CASE WHEN SSEX = ‘女’ THEN 1 ELSE 0) AS 女生人數
FROM STUDENT
GROUP BY SSEX;
29、查詢姓“張”的學生名單
答案:最終SQL如下:
SELECT SNAME FROM STUDENT WHERE SNAME LIKE ‘張%’;
30、查詢同名同性學生名單并統計同名人數
答案:最終SQL如下:
SELECT SNAME, COUNT() FROM STUDENT GROUP BY SNAME HAVING COUNT() > 1;
31、1981年出生的學生名單(注:STUDENT表中SAGE列的類型是DATE)
答案:最終SQL如下:
SELECT SNAME
FROM STUDENT
WHERE TO_CHAR(STUDENT.SAGE,’YYYY’)=’1981’;
32、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時按課程號降序排列
答案:最終SQL如下:
SELECT C#, AVG(SCORE) FROM SC GROUP BY C# ORDER BY AVG(SCORE), C# DESC;
33、查詢平均成績大于85的所有學生的學號、姓名和平均成績
答案:最終SQL如下:
SELECT SNAME, SC.S#, AVG(SCORE)
FROM STUDENT, SC
WHERE STUDENT.S# = SC.S#
GROUP BY SC.S#, SNAME
HAVING AVG(SCORE) > 85;
34、查詢課程名稱為“數據庫”且分數低于60的學生姓名和分數
答案:最終SQL如下:
SELECT SNAME, NVL(SCORE, 0)
FROM STUDENT, SC, COURSE
WHERE SC.S# = STUDENT.S#
ANDSC.C# = COURSE.C#
AND COURSE.CNAME = ‘數據庫’
AND SCORE < 60;
35、查詢所有學生的選課情況
答案:最終SQL如下:
SELECT SC.S#,SC.C#, SNAME, CNAME
FROM SC, STUDENT, COURSE
WHERE SC.S# = STUDENT.S#
ANDSC.C# = COURSE.C#;
36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數
答案:最終SQL如下:
SELECT DISTINCT STUDENT.S#, STUDENT.SNAME,SC.C#, SC.SCORE
FROM STUDENT, SC
WHERE SC.SCORE >= 70
AND SC.S# = STUDENT.S#;
37、查詢不及格的課程并按課程號從大到小排列
答案:最終SQL如下:
SELECT C# FROM SC WHERE SCORE < 60 ORDER BY C#;
38、查詢課程編號為003且課程成績在80分以上的學生的學號和姓名
答案:最終SQL如下:
SELECT SC.S#, STUDENT.SNAME
FROM SC, STUDENT
WHERE SC.S# = STUDENT.S#
AND SCORE > 80
AND C# = ‘003’;
39、查詢選了課程的學生人數
答案:最終SQL如下:
SELECT COUNT(DISTINCT S#) FROM SC GROUP BY S#;
40、查詢選修“李多多”老師所授課程的學生中成績最高的學生姓名及其成績
答案:最終SQL如下:
SELECT STUDENT.SNAME, SCORE
FROM STUDENT, SC, COURSE C, TEACHER
WHERE STUDENT.S# = SC.S#
AND SC.C# = C.C#
AND C.T# = TEACHER.T#
AND TEACHER.TNAME = ‘李多多’
AND SC.SCORE = (SELECT MAX(SCORE) FROM SC WHERE C# = C.C#);
41、查詢各個課程及相應的選修人數
答案:最終SQL如下:
SELECT C#, COUNT(*) FROM SC GROUP BY C#;
42、查詢有2門不同課程成績相同的學生的學號、課程號、學生成績
答案:最終SQL如下:
SELECT DISTINCT A.S#, A.C#, B.SCORE
FROM SC A, SC B
WHERE A.SCORE = B.SCORE
AND A.S# = B.S#
AND A.C# <> B.C#;
43、查詢每門課程成績最好的前兩名
答案:最終SQL如下:
SELECT T1.S# AS 學生ID, T1.C# AS 課程ID, SCORE AS 分數
FROM (SELECT S#, C#, (RANK() OVER(PARTITION BY C# ORDER BY SCORE DESC)) RK
FROM SC) T1
WHERE RK <= 2;
44、查詢每門課程的學生選修人數,超過10人的課程才統計。要求輸出課程
號和選修人數,查詢結果按人數降序排列,若人數相同按課程號升序排列
答案:最終SQL如下:
SELECT C# AS 課程號, COUNT(*) AS 人數
FROM SC
GROUP BY C#
HAVING COUNT(*)>10
ORDER BY COUNT(*) DESC, C#;
45、查詢至少選修兩門課程的學生學號
答案:最終SQL如下:
SELECT S# FROM SC GROUP BY S# HAVING COUNT(*) >= 2;
46、查詢全部學生都選修的課程的課程號和課程名
答案:最終SQL如下:
SELECT C#, CNAME
FROM COURSE
WHERE C# IN (SELECT C#
FROM (SELECT C#, COUNT(DISTINCT S#) CS# FROM SC GROUP BY C#)
WHERE CS# = (SELECT COUNT(*) FROM STUDENT));
47、查詢沒學過“李多多”老師講授的任一門課程的學生姓名
答案:最終SQL如下:
SELECT SNAME
FROM STUDENT
WHERE S# NOT IN (SELECT S#
FROM COURSE, TEACHER, SC
WHERE COURSE.T# = TEACHER.T#
AND SC.C# = COURSE.C#
AND TNAME = ‘李多多’);
48、查詢兩門以上不及格課程的同學的學號及其平均成績
答案:最終SQL如下:
SELECT S#, AVG(NVL(SCORE, 0))
FROM SC
WHERE S# IN
(SELECT S# FROM SC WHERE SCORE < 60 GROUP BY S# HAVING COUNT(*) > 2)
GROUP BY S#;
49、檢索課程編號為“004”且分數小于60的學生學號,結果按按分數降序排列
答案:最終SQL如下:
SELECT S#
FROM SC
WHERE C# = ‘004’
AND SCORE < 60
ORDER BY SCORE DESC;
50、刪除學生編號為“002”的課程編號為“001”的課程的成績
答案:最終SQL如下:
DELETE FROM SC
WHERE S# = ‘002’
AND C# = ‘001’;
【DB筆試面試13】下列關于NULL的描述中,不正確的是()
下列關于NULL的描述中,不正確的是()
A、當實際值是未知或沒有任何意義時,可以使用NULL來表示它
B、不要使用NULL來代表0,兩者是不同的
C、不要使用NULL來代替空格,兩個是不同的
D、算術表達式2000 + null結果等于2000
NULL代表未知的,無意義,參與運算的結果為NULL。
本題中,對于選項A,NULL表示未知,無意義。所以,選項A錯誤。
對于選項B,NULL不代表0。所以,選項B錯誤。
對于選項C,NULL不代表空格。所以,選項C錯誤。
對于選項D,2000+NULL的結果為NULL。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試14】PL/SQL中的注釋符有()(兩個選項)
PL/SQL中的注釋符有()(兩個選項)
A、–
B、 % %
C、/* */
D、 <– –>
E、#
PL/SQL的注釋有2種,分別為–和/* */。
本題中,對于選項B,%%不能表示注釋。所以,選項B錯誤。
對于選項D,<– –>是Java語言中的注釋。所以,選項D錯誤。
所以,本題的答案為A、C。
【DB筆試面試15】?下列語句中使用了列別名,會導致錯誤的有()(兩個選項)
下列語句中使用了列別名,會導致錯誤的有()(兩個選項)
A、SELECT EMPNO, ENAME, SAL*12 “Annual Salary” FROM EMP;
B、SELECT EMPNO, ENAME, SAL*12 “AnnualSalary” FROM EMP;
C、SELECT EMPNO, ENAME, SAL*12 ‘Annual Salary’ FROM EMP;
D、SELECT EMPNO, ENAME, SAL*12 ‘AnnualSalary’ FROM EMP;
E、SELECT EMPNO, ENAME, SAL*12 AnnualSalary FROM EMP;
若列的別名中含有空格,則用雙引號括起來,不能使用單引號。
本題中,對于選項A,別名中有空格,可以使用雙引號。
對于選項B,別名中沒有有空格,也可以使用雙引號。
對于選項C和選項D,別名不能使用單引號括起來。所以,選項C、選項D錯誤。
對于選項E,別名可以不加雙引號。
所以,本題的答案為C、D。
【DB筆試面試16】下列情況中,會導致Oracle事務結束的有()(兩個選項)
A、PL/SQL塊結束
B、發出savepoint語句
C、用戶強行退出SQL*Plus
D、發出SELECT語句
E、發出commit或rollback語句
事務結束可以采用COMMIT或ROLLBACK,若強行退出SQL*Plus,事務將自動回滾。
本題中,對于選項A,PL/SQL塊結束和事務是否結束沒有關系。所以,選項A錯誤。
對于選項B,SAVEPOINT不能結束事務。所以,選項B錯誤。
對于選項C,用戶強行退出SQL*Plus未提交的事務自動回滾。所以,選項C正確。
對于選項D,SELECT語句不能結束事務。所以,選項D錯誤。
對于選項E,COMMIT或ROLLBACK屬于正常提交或回滾事務。所以,選項E正確。
所以,本題的答案為C、E。
【DB筆試面試17】下列對于視圖的描述中,錯誤的是()
下列對于視圖的描述中,錯誤的是()
A、視圖可以限制對數據庫的訪問,因為視圖可以選擇性的顯示數據庫的一部分數據
B、視圖可以簡化用戶的查詢,允許用戶從多個表中檢索數據而不需要知道基表是如何連接的
C、可以通過視圖實現對基表的DML操作
D、在對視圖執行DML操作時,可以不受基表的約束的限制
本題中,對于選項A,視圖可以有訪問權限,但可以對基表沒有訪問權限,從而限制了數據庫的訪問。所以,選項A錯誤。
對于選項B,由于視圖可以是基于多個表的鏈接查詢,所以,視圖可以簡化用戶的查詢,允許用戶從多個表中檢索數據而不需要知道基表是如何連接的。所以,選項B錯誤。
對于選項C,簡單的視圖可以實現對基表的DML操作。所以,選項C錯誤。
對于選項D,當視圖執行DML操作時,同樣受基于表上的約束的限制。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試18】約束可以防止無效數據進入表中,維護數據一致性,Oracle提供了若干種約束,下列描述正確的是()
A、主鍵約束、唯一約束、外鍵約束、條件約束、非空約束
B、唯一性索引、非唯一性索引、位圖索引、位圖連接索引、HASH索引
C、列級約束、表級約束、單項約束、組合約束、連接約束
D、主鍵約束、唯一約束、外鍵約束、缺省值約束、非空約束
Oracle中的約束包含主鍵約束、唯一約束、外鍵約束、條件約束、非空約束。
本題中,對于選項B,非唯一性索引、位圖索引、位圖連接索引、HASH索引都不屬于約束。所以,選項B錯誤。
對于選項C,列級約束、表級約束、單項約束、組合約束、連接約束多不屬于約束。所以,選項C錯誤。
對于選項D,缺省值約束不屬于約束。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試19】下列關于TO_CHAR()、TO_DATE()函數使用過程中不會出錯的有()(兩個選項)
下列關于TO_CHAR()、TO_DATE()函數使用過程中不會出錯的有()(兩個選項)
A、SELECT TO_CHAR(SYSDATE,’YYYYMMDDHH24MISS’) FROM DUAL;
B、SELECT TO_CHAR(SYSDATE,’YYYY年MM月DD日 HH24:MI:SS’) FROM DUAL;
C、SELECT TO_CHAR(SYSDATE,’YYYY’年’MM’月’DD’日’ HH24:MI:SS’) FROM DUAL;
D、SELECT TO_DATE(‘20070605113430’,’YYYY###MM###DD##HH24##MISS’) FROM DUAL;
TO_CHAR將日期轉換為字符,TO_DATE將字符轉換為日期格式。
本題中,對于選項A,可以正常轉換。所以,選項A正確。
對于選項B,不能轉換,因為會報ORA-01821: date format not recognized錯誤,有中文的時候需要用雙引號括起來。所以,選項B錯誤。
對于選項C,報錯,ORA-00907: 缺失右括號,有中文的時候需要用雙引號括起來,正確的寫法應該為:“SELECT TO_CHAR(SYSDATE, ‘YYYY”年”MM”月”DD”日”HH24:MI:SS’) FROM DUAL;”。所以,選項C錯誤。
對于選項D,可以轉換,結果為2007-6-5 11:34:30。所以,選項D正確。
所以,本題的答案為A、D。
【DB筆試面試20】?下列比較為真的有()
下列比較為真的有()
A、TRUNC(123.56) = 123
B、TRUNC(123.56,1) = 123.6
C、ROUND(123.56) = 123
D、ROUND(123.56,1) = 123.5
本題考察的是TRUNC函數和ROUND函數的知識。其中,TRUNC函數的作用是舍去,不存在四舍五入的情況,ROUND函數截取的時候四舍五入。
本題中,對于選項A,計算結果為123。所以,選項A正確。
對于選項B,保留一位小數,計算結果為123.5。所以,選項B錯誤。
對于選項C,計算結果為124。所以,選項C錯誤。
對于選項D,保留一位小數,計算結果為123.6。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試21】?一般數據庫若出現日志滿了,會出現()
一般數據庫若出現日志滿了,會出現()
A、不能執行任何操作
B、只能執行查詢等讀操作,不能執行更改,備份等寫操作
C、查詢,更新等讀寫操作正常運行
D、只能執行更改,備份等寫操作,不能進行查詢等讀操作
若數據庫日志滿了的話,則只能執行查詢等讀操作,不能執行更改、備份等寫操作,原因是任何寫操作都要記錄日志。也就是說,基本上處于不能使用的狀態。
本題中,對于選項A,可以查詢。所以,選項A錯誤。
對于選項B,只能執行查詢等讀操作,不能執行更改、備份等寫操作。所以,選項B正確。
對于選項C,更新不能執行。所以,選項C錯誤。
對于選項D,更改不能執行。所以,選項D錯誤。
所以,本題的答案為B。
–個人覺得此題出的不嚴謹,要分為歸檔模式和非歸檔模式。
【DB筆試面試22】? SQL語言集數據查詢、數據操縱、數據定義和數據控制功能于一體,其中,CREATE、DROP、ALTER
SQL語言集數據查詢、數據操縱、數據定義和數據控制功能于一體,其中,CREATE、DROP、ALTER語句實現的是()功能
A、數據查詢 DQL
B、數據操縱 DML
C、數據定義 DDL
D、數據控制 DCL
數據操縱語言(DML,Data Manipulation Language):包括INSERT、UPDATE和DELETE,它們分別用于添加、修改和刪除表中的行。
事務處理語言(TCL,Transaction Control Language):其語句能確保被DML語句影響的表的所有行及時得以更新,包括BEGIN TRANSACTION、COMMIT和ROLLBACK。
數據控制語言(DCL,Data Control Language):其語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。CREATE、DROP、ALTER屬于數據定義語言。
本題中,對于選項A,數據查詢是SELECT語句。所以,選項A錯誤。
對于選項B,數據操縱是DML語句。所以,選項B錯誤。
對于選項C,數據定義包括CREATE、DROP和ALTER。所以,選項C正確。
對于選項D,數據控制包括GRANT和REVOKE。所以,選項D錯誤。
所以,本題的答案為C。
【DB筆試面試23】? SQL語言集數據定義功能、數據操縱功能和數據控制功能于一體。如下所列語句中,屬于數據控制功能的是()
SQL語言集數據定義功能、數據操縱功能和數據控制功能于一體。如下所列語句中,屬于數據控制功能的是()
A、GRANT
B、CREATE
C、INSERT
D、SELECT
本題中,對于選項A,GRANT是數據控制語句。所以,選項A正確。
對于選項B,CREATE是數據定義語句。所以,選項B錯誤。
對于選項C,INSERT是數據操縱語句。所以,選項C錯誤。
對于選項D,SELECT是數據查詢語句。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試24】? Oracle實例啟動和關閉的信息記載到()中
Oracle實例啟動和關閉的信息記載到()中
A、告警文件
B、后臺進程跟蹤文件
C、服務器進程跟蹤文件
D、參數文件
數據庫啟動和關閉的信息記錄在告警日志里。
本題中,對于選項A,告警日志是正確的。所以,選項A正確。
對于選項B,后臺跟蹤文件記錄的是數據庫后臺進程信息。所以,選項B錯誤。
對于選項C,服務器進程跟蹤的是用戶的進程信息。所以,選項C錯誤。
對于選項D,參數文件記錄的是數據庫的參數。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試25】下列有關InnoDB和MyISAM的說法中,正確的是()(多選題)
下列有關InnoDB和MyISAM的說法中,正確的是()(多選題)
A、InnoDB不支持FULLTEXT類型的索引
B、InnoDB執行DELETE FROM TABLE 命令時,不會重新建表
C、MyISAM的索引和數據是分開保存的
D、MyISAM支持主外鍵,索引及事務的存儲
MySQL有多種存儲引擎,每種存儲引擎有各自的優缺點。MySQL存儲引擎包括處理事務安全表的引擎和處理非事務安全表的引擎。MyISAM引擎管理非事務表。它提供高速存儲和檢索,以及全文搜索能力。InnoDB引擎支持行鎖,支持事務,CRASH后具有RECOVE機制,有較好的讀寫并發能力。物理文件主要包括日志文件、數據文件和索引文件,索引文件和數據文件是放在一個目錄下,可以設置共享文件與獨享文件兩種格式。
本題中,對于選項A,InnoDB不支持FULLTEXT類型的索引。所以,選項A正確。
對于選項B,當InnoDB執行DELETE FROM TABLE命令時,不會重新建表。所以,選項B正確。
對于選項C,MyISAM的索引和數據是分開保存的。所以,選項C正確。
對于選項D,MyISAM不支持事務。所以,選項D錯誤。
所以,本題的答案為A、B、C。
【DB筆試面試26】從客戶端通過SQL*Plus登陸Oracle某個特定用戶,必須要提供的信息有()
從客戶端通過SQL*Plus登陸Oracle某個特定用戶,必須要提供的信息有()
A、用戶名、口令、監聽
B、用戶名、監聽、端口號
C、用戶名、口令、本地服務名
D、用戶名、口令、目錄方法名配置
SQL*Plus連接Oracle服務器的命令形如sqlplus user/password@tns_name。
本題中,對于選項A,監聽不需要。所以,選項A錯誤。
對于選項B,監聽不需要。所以,選項B錯誤。
對于選項C,用戶名、口令和本地服務名都是需要的。所以,選項C正確。
對于選項D,目錄方法名配置不需要。所以,選項D錯誤。
所以,本題的答案為C。
【DB筆試面試27】下列選項中,不屬于SQL語句的是()
下列選項中,不屬于SQL語句的是()
A、DESC
B、SELECT
C、ALTER TABLE
D、TRUNCATE
常用的SQL語句有SELECT、DELETE、UPDATE、ALTER、TRUNCATE等。
本題中,對于選項A,DESC是SQL*Plus命令,不屬于SQL語句。所以,選項A正確。
對于選項B,SELECT是SQL語句。所以,選項B錯誤。
對于選項C,ALTER是SQL語句。所以,選項C錯誤。
對于選項D,TRUNCATE是SQL語句。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試28】下列關于SQL語句書寫規則的描述中,正確的是()
下列關于SQL語句書寫規則的描述中,正確的是()
A、SQL語句區分大小寫,要求關鍵字必須大寫,對象名小寫
B、SQL語句必須在一行書寫完畢,并且用分號結尾
C、SQL語句的縮進可以提高語句的可讀性,并且可以提高語句的執行性能
D、SQL語句中為了提高可讀性,通常會把一些復雜的語句中每個子句寫在單獨的行上
SQL語句大小寫不敏感,最后以分號結尾,可以書寫多行。
本題中,對于選項A,SQL語句不區分大小寫。所以,選項A錯誤。
對于選項B,SQL語句可以書寫多行。所以,選項B錯誤。
對于選項C,SQL語句縮進可以提高可讀性,但不能提高其執行效率。所以,選項C錯誤。
對于選項D,為了提高SQL的可讀性,會把一些復雜語句中每個子句寫在單獨的行上。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試29】在客戶端配置本地服務名時,下列信息中,不需要提供的是()
在客戶端配置本地服務名時,下列信息中,不需要提供的是()
A、服務器地址
B、服務器監聽的端口號
C、網絡協議
D、服務器端目錄配置
E、ORACLE_SID或數據庫服務名
配置TNS的時候需要提供服務器地址,監聽的端口號,網絡協議一般是TCP/IP,還有數據庫的SERVICE_NAME,其一般形式如下所示:
**orclasm =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclasm.lhr.com)
)
)**
本題中,對于選項A,服務器地址是需要的。所以,選項A錯誤。
對于選項B,監聽端口號是需要的。所以,選項B錯誤。
對于選項C,網絡協議是需要的。所以,選項C錯誤。
對于選項D,目錄配置不需要。所以,選項D正確。
對于選項E,ORACLE_SID或數據庫服務名是需要的。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試30】下列SQL命令中,能夠在SQL*PLUS環境下執行特定的腳本文件的是()(兩個選項)
下列SQL命令中,能夠在SQL*PLUS環境下執行特定的腳本文件的是()(兩個選項)
A、@
B、START
C、RUN
D、/
E、EXECUTE
SQL命令行中能執行特定腳本的命令只有@和start。
本題中,對于選項A,@是可以執行腳本的。所以,選項A正確。
對于選項B,START是可以執行腳本的。所以,選項B正確。
對于選項C,RUN只能執行SQL命令。所以,選項C錯誤。
對于選項D,/不能執行腳本。所以,選項D錯誤。
對于選項E,EXECUTE只能執行存儲過程。所以,選項D正確。
所以,本題的答案為A、B。
【DB筆試面試31】下面是EMP雇員表的信息,依靠這些信息完成下面的試題:
下面是EMP雇員表的信息,依靠這些信息完成下面的試題:
EMP雇員表的結構如下所示:
EMPNO 數值型 – 雇員ID
ENAME 字符型 – 雇員姓名
JOB 字符型 – 工作崗位
MGR 數值型 – 上級領導ID
HIREDATE 日期型 – 雇用日期
SAL 數值型 – 薪水
COMM 數值型 – 獎金
DEPTNO 數值型 – 部門編號
EMP雇員表的數據如下所示:
1、下面的語句能執行成功嗎?
SELECT ENAME, JOB, SAL SALARY FROM EMP;
2、下面語句選取雇員編號、雇員姓名、年薪水總合,其中有3處錯誤,請找出并糾正它們:
SELECT EMPNO,ENAME
SAL X 12 ANNUAL SALARY
FROM EMP;
3、用一個查詢語句顯示EMP 表中總共有哪些工作?
4、用一個查詢語句顯示工作崗位為CLERK或者ANALYST并且工資不等于1000、3000、5000的雇員的姓名、工作崗位、工資?
5、用一個查詢語句顯示工資最高的前3位雇員的姓名、工作崗位、工資?
1、答案:可以執行。
2、答案:列的別名若含有空格應該用雙引號括起來,乘號應該為*,所以,正確的語句如下所示:
SELECT EMPNO,ENAME,SAL *12 “Annual Salary” FROM EMP;
3、答案:SELECT DISTINCT A.JOB FROM EMP A;。
4、答案: SELECT A.ENAME,A.JOB,A.SAL FROM EMP A WHERE A.JOB IN (‘CLERK’,’ANALYST’) AND A.SAL NOT IN (1000,3000,5000);。
5、答案:SELECT * FROM (
SELECT A.ENAME,A.JOB,A.SAL FROM SCOTT.EMP A ORDER BY A.SAL DESC ) WHERE ROWNUM<=3;。
【DB筆試面試32】Which of the following are valid program types for a lightweight job?
Which of the following are valid program types for a lightweight job? (Choose all that apply)
A、PLSQL_BLOCK
B、EXECUTABLE
C、JAVA_STORED_PROCEDURE
D、STORED_PROCEDURE
E、EXTERNAL
題目問的是JOB中的程序類型可以有哪些,只能包含PLSQL_BLOCK和STORED_PROCEDURE這2類。
本題中,對于選項A,PLSQL_BLOCK是JOB中可以使用的程序類型。所以,選項A正確。
對于選項B,EXECUTABLE不能用于JOB的程序。所以,選項B錯誤。
對于選項C,JAVA_STORED_PROCEDURE不能用于JOB的程序。所以,選項C錯誤。
對于選項D,STORED_PROCEDURE 存儲過程是JOB中可以使用的程序類型。所以,選項D正確。
對于選項E,EXTERNAL不能用于JOB的程序。所以,選項E錯誤。
所以,本題的答案為A、D。
【DB筆試面試33】Which three components does the Scheduler use for managing tasks within the Oracle environment? (Choose three)
A、a job
B、a program
C、a schedule
D、a PL/SQL procedure
本題翻譯為中文如下:在Oracle環境調度程序為管理任務使用哪三個組件()
A、A JOB作業B、A PROGRAM程序C、A SCHEDULE調度D、A PL/SQL程序
核心組件和主要步驟:
一個作業包含兩個必需組件:需要執行的操作,操作的發生時間或調度。“操作”是由命令區域和作業屬性中的JOB_TYPE和JOB_ACTION參數表示的。“時間”是在調度中表示的,調度可以基于時間或事件,或者從屬于其它作業的結果。
調度程序使用以下基本組件:
(1)“作業”指定要執行的操作。它可以是PL/SQL過程、純二進制可執行文件、Java應用程序或SHELL腳本。可以將程序(內容)和調度(時間)指定為作業定義的一部分,也可以改用現有的程序或調度。
(2)“調度”指定作業的執行時間和次數。調度可以基于時間或事件,可以為作業定義調度,方法是使用一系列日期、一個事件,或兩者相結合,以及表示重復間隔的附加說明。可以單獨存儲作業的調度,然后對多個作業使用同一個調度。
(3)“程序”是有關特定可執行文件、腳本或過程的元數據集合。自動作業將執行某個任務。使用程序,無需修改作業本身即可修改作業任務或者“內容”。
本題中,對于選項A,A JOB作業是調度程序的組件。所以,選項A正確。
對于選項B,A PROGRAM程序是調度程序的組件。所以,選項B正確。
對于選項C,A SCHEDULE調度是調度程序的組件。所以,選項C正確。
對于選項D,A PL/SQL程序不是調度程序的組件。所以,選項D錯誤。
所以,本題的答案為A、B、C。
【DB筆試面試34】Oracle系統進程和作用的描述,說法正確的有()(多選題)
Oracle系統進程和作用的描述,說法正確的有()(多選題)
A、數據寫進程(dbwr):負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件
B、進程監控(pmon):負責在一個Oracle進程失敗時清理資源
C、歸檔進程(arcn):在每次日志切換時把已滿的日志組進行備份或歸檔
D、系統監控(smon):檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復
Oracle的進程比較多,常用的有如下幾類:
(1)數據寫進程(dbwr):負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件。
(2)監控進程(pmon):負責在一個Oracle進程失敗時清理資源。
(3)歸檔進程(arcn):在每次日志切換時把已滿的日志組進行備份或歸檔。
(4)系統監控(smon):檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復。
除此之外,Oracle數據庫還有其它一些進程,作用如下所示:
(1)檢查點進程(ckpt):負責在每當緩沖區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。
(2)恢復進程(reco):保證分布式事務的一致性,在分布式事務中,要么同時COMMIT,要么同時ROLLBACK。
(3)作業調度器(cjq):負責將調度與執行系統中已定義好的JOB,完成一些預定義的工作。
(4)日志寫進程(lgwr):將REDO日志緩沖區中的更改寫入在線REDO日志文件。
本題中,對于選項A,數據寫進程負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件。所以,選項A正確。
對于選項B,監控進程負責在一個Oracle進程失敗時清理資源。所以,選項B正確。
對于選項C,歸檔進程在每次日志切換時把已滿的日志組進行備份或歸檔。所以,選項C正確。
對于選項D,系統監控進程檢查數據庫的一致性,如有必要,還會在數據庫打開時啟動數據庫的恢復。所以,選項D正確。
所以,本題的答案為A、B、C、D。
【DB筆試面試35】下列關于數據字典的敘述中,哪一條是錯誤的?()
下列關于數據字典的敘述中,哪一條是錯誤的?()
A、數據庫中的數據可分為用戶數據和系統數據
B、用戶數據是用戶使用的數據
C、系統數據包括數據描述信息、控制信息、存儲信息等
D、用戶數據和系統數據總稱為數據字典
數據庫中的數據通常可分為用戶數據和系統數據兩部分,其中系統數據就可以稱為數據字典。數據字典(Data dictionary)是一種用戶可以訪問的記錄數據庫和應用程序元數據的目錄。數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述。其目的是對數據流程圖中的各個元素做出詳細的說明。數據字典可以分為主動和被動數據字典。主動數據字典是指在對數據庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。數據字典包括對數據庫的描述信息、數據庫的存儲管理信息、數據庫的控制信息、用戶管理信息和系統事務管理信息等,所以數據字典也可以稱為系統目錄。
本題中,對于選項D,系統數據才可以稱為數據字典,而用戶數據不屬于數據字典的范疇,選項描述錯誤。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試36】?下列關于E-R模型和E-R圖的敘述中,哪一條是錯誤的?()
下列關于E-R模型和E-R圖的敘述中,哪一條是錯誤的?()
A、E-R模型是一種圖示化模型
B、實體和相應的屬性之間用有向邊連接起來
C、聯系型本身也是一種實體型
D、E-R模型可用以表示概念模型
E-R模型是一種用圖形表示數據及其聯系的方法,所使用的圖形構件包括矩形、菱形、橢圓形和連接線。其中,矩形表示實體,矩形框內寫上實體名。菱形表示聯系,菱形框內寫上聯系名。橢圓形表示屬性,橢圓形框內寫上屬性名。連接線表示實體,聯系與屬性之間的所屬關系,或實體與聯系之間的相連關系。
本題中,對于選項B,實體和相應的屬性之間用無向邊連接起來,而不是有向邊,選項描述錯誤。所以,選項B正確。
所以,本題的答案為B。
【DB筆試面試37】?下列關于關系模型的參照完整性規則的敘述中,哪一條是錯誤的?()
下列關于關系模型的參照完整性規則的敘述中,哪一條是錯誤的?()
A、外鍵和相應的主鍵需定義在相同值域上
B、外鍵和相應的主鍵可以不同名
C、參照關系模式和被參照關系模式可以是同一個關系模式
D、外鍵值不可以為空值
外鍵可以為空,其它選項說法正確。
答案:D。
【DB筆試面試38】? ?創建表T1,并使得表中EMPLOYID字段值非空且唯一的SQL語句是下列哪一個?
創建表T1,并使得表中EMPLOYID字段值非空且唯一的SQL語句是下列哪一個?()
A、CREATE TABLE T1 (EMPLOYID INTEGER);
B、CREATE TABLE T1 (EMPLOYID UNIQUE INTEGER);
C、CREATE TABLE T1 (EMPLOYID INTEGER NOT NULL);
D、CREATE TABLE T1 (EMPLOYID INTEGER, PRIMARY KEY(EMPLOYID);
非空且唯一就創建主鍵,其它選項均有誤。
答案:D。
【DB筆試面試39】 ?刪除STUDENT表的DEPT列,但是只有在沒有視圖或約束引用該列時才能執行刪除,否則拒絕刪除。正確表述上述需求的SQL語句是下列哪一個?()
A、ALTER TABLE STUDENT DROP DEPT RESTRICT;
B、ALTER TABLE STUDENT DELETE DEPT RESTRICT;
C、ALTER TABLE STUDENT DROP DEPT CASCADE;
D、ALTER TABLE STUDENT DELETE DEPT CASCADE;
刪除列使用DROP,排除B和D,有約束存在的時候使用RESTRICT,所以答案為A。
答案:A。
【DB筆試面試40】?請問正確實現“查詢張三同學沒有選修的課程的課程號”的SQL語句是下列哪一個?
設教學數據庫中有三個基本表:
學生表S(SNO,SNAME,AGE,SEX),其屬性分別表示學號、學生姓名、年齡、性別;
課程表C(CNO,CNAME,TEACHER),其屬性分別表示課程號、課程名、上課教師名;
選修表SC(SNO,CNO,GRADE),其屬性分別表示學號、課程號、成績。請問正確實現“查詢張三同學沒有選修的課程的課程號”的SQL語句是下列哪一個?()
A、SELECT CNO
FROM C, SC, S
WHERE C.CNO!= SC.CNO AND S.SNO=SC.SNO
AND SNAME=’張三’;
B、SELECT CNO
FROM C
WHERE CNO != (SELECT CNO
FROM S, SC
WHERE S.SNO=SC.SNO AND SNAME=’張三’);
C、SELECT CNO
FROM C
WHERE CNO NOT IN (SELECT CNO
FROM S, SC
WHERE S.SNO=SC.SNO AND SNAME=’張三’);
D、SELECT CNO
FROM C, SC, S
WHERE C.CNO NOT IN SC.CNO
AND S.SNO=SC.SNO AND SNAME=’張三’;
本題中,對于選項A,“!=”用在這里邏輯不正確。所以,選項A錯誤。
對于選項B,子查詢返回多行記錄,不能用“!=”。所以,選項B錯誤。
對于選項D,缺少連接條件。所以,選項D錯誤。
所以,本題的答案為C。
【DB筆試面試41】下列實現“將學生的學號和他的平均成績定義為一個視圖”功能的SQL語句中哪一個是正確的?()
有關系SC(S#,C#,GRADE),其中S#是學號,C#是課程號,GRADE是課程成績。下列實現“將學生的學號和他的平均成績定義為一個視圖”功能的SQL語句中哪一個是正確的?()
A、CREATE VIEW S_G(S#, AVGGRADE)
AS
SELECT S#, AVG(GRADE) FROM SC
GROUP BY S#;
B、CREATE VIEW S_G(S#, AVGGRADE)
SET
SELECT S#, AVG(GRADE) FROM SC
GROUP BY S#;
C、CREATE VIEW S_G(S#, AVGGRADE)
HAVING
SELECT S#, AVG(GRADE) FROM SC
ORDER BY S#;
D、CREATE VIEW S_G(S#, AVGGRADE)
AS
SELECT S#, AVG(GRADE) FROM SC
ORDER BY S#;
本題中,對于選項B,不能使用SET,應該為AS。所以,選項B錯誤。
對于選項C,不能使用HAVING,應該為AS,所以,選項C正確。
對于選項D,有分組函數必須使用GROUP BY。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試42】下面哪一個語句是SQL標準中用來調用存儲過程的()
因為存儲過程由DBMS持久地存儲,所以能夠使用各種SQL接口和程序設計進行調用。下面哪一個語句是SQL標準中用來調用存儲過程的()
A、CALL
B、FETCH
C、OPEN
D、EXEC SQL
SQL標準中用來調用存儲過程的命令是CALL。
【DB筆試面試43】事務的持久性是指()
A、事務中包括的所有操作要么都做,要么都不做
B、事務一旦提交,對數據庫的修改就是永遠的
C、一個事務內部的操作及使用的數據對并發執行的其他事務是隔離的
D、事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態
事務的持久性(也叫永久性)是指一旦事務提交成功,其對數據修改是持久性的。數據更新的結果已經從內存轉存到外部存儲器上,此后即使發生了系統故障,已提交事務所做的數據更新也不會丟失
【DB筆試面試44】根據數據庫應用系統生命周期模型,完成數據庫關系模式設計的階段是()
根據數據庫應用系統生命周期模型,完成數據庫關系模式設計的階段是()
A、需求分析
B、概念設計
C、邏輯設計
D、物理設計
數據庫應用系統生命周期分成七個階段:規劃、需求分析、概念設計、邏輯設計、物理設計、實現、運行和維護。其中,邏輯設計階段的主要任務是將現實世界的概念數據模型設計成數據庫的一種邏輯模式,即適應于某種特定數據庫管理系統所支持的邏輯數據模式。這一步設計的結果就是所謂“邏輯數據庫”。根據已經建立的概念數據模型,以及所采用的某個數據庫管理系統軟件的數據模型特性,按照一定的轉換規則,把概念模型轉換為這個數據庫管理系統所能夠接受的邏輯數據模型。不同的數據庫管理系統提供了不同的邏輯數據模型,例如層次模型、網狀模型、關系模型等。邏輯設計的目的是把概念設計階段設計好的基本E-R圖轉換為與選用的具體機器上的DBMS所支持的數據模型相符合的邏輯結構(包括數據庫模式和外模式)。所以,本題的答案為C。
【DB筆試面試45】?以下關于死鎖檢測和恢復敘述錯誤的是()
以下關于死鎖檢測和恢復敘述錯誤的是()
A、死鎖檢測,用于定期檢查系統是否發生死鎖
B、死鎖恢復,用于將系統從死鎖中解救出來
C、解開系統死鎖有效的方法是從后面向前REDO事務的部分操作
D、為了防止某些事務總是被選做被撤銷事務,可以限定每個事務被選為撤銷事務的次數
對于每個需要撤銷的死鎖事務,可以簡單地放棄該事務已經完成的全部操作,重新啟動該事務,更為有效的方法是從后面UNDO這個事務的部分操作,只要能夠解開系統死鎖即可。
【DB筆試面試46】存儲過程是存儲在數據庫中的代碼,具有很多優點。下列陳述中不屬于存儲過程優點的是()
存儲過程是存儲在數據庫中的代碼,具有很多優點。下列陳述中不屬于存儲過程優點的是()
A、可通過預編譯機制提高數據操作的性能
B、可方便地按用戶視圖表達數據
C、可減少客戶端和服務器端的網絡流量
D、可實現一定的安全控制
存儲過程的優點如下所示:
① 存儲過程增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的運算。
② 存儲過程可保證數據的安全性。
③ 通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數據庫,從而保證數據的安全。
④ 通過存儲過程可以使相關的動作在一起發生,從而可以維護數據庫的完整性。
⑤ 在運行存儲過程前,數據庫已對其進行了語法和句法分析,并給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。由于執行SQL語句的大部分工作已經完成,所以,存儲過程能以極快的速度執行。
⑥ 可以降低網絡的通信量,不需要通過網絡來傳送很多SQL語句到數據庫服務器了。
⑦ 把體現企業規則的運算程序放入數據庫服務器中,以便集中控制。
因此本題答案為B。
【DB筆試面試47】?事務的一致性是指()
事務的一致性是指()
A、事務中包括的所有操作要么都做,要么都不做
B、事務必須是數據庫從一個一致性狀態變到另一個一致性狀態
C、事務一旦提交,對數據庫的改變是永久的
D、一個事務內部的操作及使用的數據對并發的其他事務是隔離的
事務的特征有四個,即原子性,一致性,隔離性,持久性。事務是一種邏輯上的工作單元。一個事務就是一系列在邏輯上相關的操作指令的集合,用于完成一項任務,其本質是將數據庫中的數據從一種一致狀態轉換到另一種一致狀態,以體現現實世界中的狀況變化。至于數據處于什么樣的狀態算是一致狀態,這取決于現實生活中的業務邏輯以及具體的數據庫內部實現。所以,一致性是為了讓數據庫不會因事務執行而遭到破壞,事務應使數據庫從一個一致性狀態轉到另一個一致性狀態。
【DB筆試面試48】下面哪個選項中的內容填入SQL語句中是正確的()
設有圖書管理數據庫:
圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))
讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))
借閱(借書證號C(4),總編號C(6),借書日期D(8))
有SQL語句如下:SELECT 單位,__ FROM 借閱,讀者 WHERE
借閱.借書證號=讀者.借書證號 __;
對于圖書管理數據庫,分別求出各個單位當前借閱圖書的讀者人次。下面哪個選項中的內容填入SQL語句中是正確的()
A、COUNT(借閱.借書證號) GROUP BY 單位
B、SUM(借閱.借書證號) GROUP BY 單位
C、COUNT(借閱.借書證號) ORDER BY 單位
D、COUNT(借閱.借書證號) HAVING 單位
分組用GROUP BY,計算個數用COUNT函數。
【DB筆試面試49】在Oracle中,你需要創建索引提高薪水審查的性能,該審查要對員工薪水提高12個百分點后進行分析處理
在Oracle中,你需要創建索引提高薪水審查的性能,該審查要對員工薪水提高12個百分點后進行分析處理,下面哪個CREATE INDEX命令能解決此問題()
A、CREATE INDEX MY_IDX_1 ON EMPLOYEE(SALARY*1.12);
B、CREATE UNIQUE INDEX MY_IDX_1 ON EMPLOYEE(SALARY);
C、CREATE BITMAP INDEX MY_IDX_1 ON EMPLOYEE(SALARY);
D、CREATE INDEX MY_IDX_1 ON EMPLOYEE(SALARY) REVERSE;
對員工薪水提高12個百分點后進行分析處理,則只能創建函數索引。
顯然,本題的答案為A。
【DB筆試面試50】哪個函數的返回值不等于-97()
在Oracle中,執行下面的語句:
SELECT ceil(-97.342),
floor(-97.342),
round(-97.342),
trunc(-97.342)
FROM dual;
哪個函數的返回值不等于-97()
A、ceil()
B、floor()
C、round()
D、trunc()
考察對基本函數的理解。
本題中,對于選項A,CEIL函數返回大于或等于指定表達式的最小整數,大于-97.342的最小整數為-97。所以,選項A錯誤。
對于選項B,FLOOR函數返回不大于指定表達式的最大整數,這里不大于-97.342的最大整數為-98。所以,選項B正確。
對于選項C,ROUND函數根據四舍五入原則進行取舍,結果為-97。所以,選項C錯誤。
對于選項D,TRUNC函數根據直接舍去的原則進行取舍,結果為-97,選項D錯誤。
所以,本題的答案為B。
【DB筆試面試51】請問序列MY_SEQ的當前值是()
在Oracle中,用以下SQL命令創建了一個序列:
CREATE SEQUENCE MY_SEQ
START WITH 394
INCREMENT BY 12
NOMINVALUE
NOMAXVALUE
NOCYCLE
NOCACHE;
用戶執行包含MY_SEQ.NEXTVAL的SQL語句三次,然后執行包含MY_SEQ.CURRVAL的SQL語句四次,請問序列MY_SEQ的當前值是()
A、406 B、418 C、430 D、442
MY_SEQ序列創建后的初始化值是394,第一次執行SELECT MY_SEQ.NEXTVAL FROM DUAL后,MY_SEQ的值其實還是394,從第二次開始增加,而MY_SEQ.CURRVAL并不增加序列的值,所以最終結果為394+12*2=418,所以,本題的答案為B。
實驗過程如下所示:
SYS@oralhr> CREATE SEQUENCE MY_SEQ
2 START WITH 394
3 INCREMENT BY 12
4 NOMINVALUE
5 NOMAXVALUE
6 NOCYCLE
7 NOCACHE;
Sequence created.
SYS@oralhr> select MY_SEQ.NEXTVAL from dual;
NEXTVAL
394SYS@oralhr> select MY_SEQ.NEXTVAL from dual;
NEXTVAL
406SYS@oralhr> select MY_SEQ.NEXTVAL from dual;
NEXTVAL
418SYS@oralhr> select MY_SEQ.CURRVAL from dual;
CURRVAL
418SYS@oralhr> select MY_SEQ.CURRVAL from dual;
CURRVAL
418SYS@oralhr> select MY_SEQ.CURRVAL from dual;
CURRVAL
418SYS@oralhr> select MY_SEQ.CURRVAL from dual;
CURRVAL
418【DB筆試面試52】?在Oracle中,下列哪種標量類型不能保存到數據庫表中()
在Oracle中,下列哪種標量類型不能保存到數據庫表中()
A、CHAR B、RAW C、DATE D、BOOLEAN
數據類型的作用在于指明存儲數值時需要占據的內存空間大小和進行運算的依據。
1) CHAR(n)數據類型用于定義固定長度的字符串,其中,n用于指定字符串的最大長度,n的值必須是正整數且不超過32767。
2) VARCHAR2(n)數據類型用于定義可變長度的字符串,其中,n用于指定字符串的最大長度,n的值必須是正整數且不超過32767。
3) NUMBER(precision,scale)數據類型用于定義固定長度的整數和浮點數,其中,precision表示精度,用于指定數字的總位數;scale表示標度,用于指定小數點后的數字位數,默認值為0,即沒有小數位數。
4) DATE該數據類型用于定義日期時間類型的數據,其數據長度為固定7個字節,分別描述年、月、日、時、分、秒。
5) TIMESTAMP該數據類型也用于定義日期時間數據,但與DATE僅顯示日期不同,TIMESTAMP類型數據還可以顯示時間和上下午標記,如“11-9月-2007 11:09:32.213 AM”。
6) BOOLEAN數據類型用于定義布爾型(邏輯型)變量,其值只能為TRUE(真)、FALSE(假)或NULL(空)。需要注意的是,該數據類型是PL/SQL數據類型,不能應用于表列。
7) LONG數據類型在其它的數據庫系統中常被稱為備注類型,它主要用于存儲大量的可以在稍后返回的文本內容。
8) LONG RAW數據類型在其它數據庫系統中常被稱為大二進制類型(BLOB),它可以用來存儲圖形、聲音視頻數據,盡管關系型數據庫管理系統最初不是為它們而設計的,但是多媒體數據可以存儲在BLOB或LONG RAW類型的字段內。
9) ROWID數據類型常用在可以將表中的每一條記錄都加以唯一標識的場合許多關系型。
對于D選項的BOOLEAN是布爾類型,屬于PL/SQL的數據類型,不能保存到數據庫表中,所以本題的答案為D。
【DB筆試面試53】?在Oracle中,不屬于游標屬性的是()
在Oracle中,不屬于游標屬性的是()
A、%NOTFOUND B、%FOUND C、%ISCLOSE D、%ISOPEN
考察對游標屬性的理解。
游標是維護查詢結果的內存中的一個區域,運行DML時打開,完成時關閉,用SQL%ISOPEN檢查是否打開,游標有如下4個屬性:
當執行一條DML語句后,DML語句的結果保存在四個游標屬性中,這些屬性用于控制程序流程或者了解程序的狀態。當運行DML語句時,PL/SQL打開一個內建游標并處理結果,游標是維護查詢結果的內存中的一個區域,游標在運行DML語句時打開,完成后關閉。隱式游標只使SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三個屬性.SQL%FOUND,SQL%NOTFOUND是布爾值,SQL%ROWCOUNT是整數值。
顯然,本題的答案為C。
【DB筆試面試54】 把對表STUDENT的INSERT權限授予用戶user4,并允許其將此權限再授予其他用戶。正確表達了這一要求的SQL語句是下列哪一個?()
A、GRANT TABLE STUDENT WITH INSERT TO user4
B、GRANT TABLE STUDENT HAVING INSERT TO user4 WITH GRANT OPTION
C、GRANT INSERT ON TABLE STUDENT TO user4 WITH GRANT OPTION
D、GRANT INSERT ON TABLE STUDENT TO user4
賦權操作為GRANT權限ON TABLE xxx TO USER_XX。若允許其將此權限再授予其他用戶則需要帶WITH GRANT OPTION子句,所以很顯然本題的答案為C。
【DB筆試面試55】在數據庫設計的概念結構設計階段,表示概念結構的常用方法和描述工具是()
在數據庫設計的概念結構設計階段,表示概念結構的常用方法和描述工具是()
A、層次分析法和層次結構圖 B、實體-聯系方法和E-R圖
C、結構分析法和模塊結構圖 D、數據流程分析法和數據流圖
表示概念結構的常用方法是實體-聯系方法,即E-R圖,所以很顯然本題的答案為B。
【DB筆試面試56】 ?下列關于數據庫三級模式結構的敘述中,哪些是正確的?()(多選題)
下列關于數據庫三級模式結構的敘述中,哪些是正確的?()(多選題)
A、三級模式指的外模式、模式和內模式
B、外模式是唯一的,但是數據庫用戶視圖可以有多個
C、內模式稱為物理模式,一個數據庫只有一個內模式
D、模式是數據庫的邏輯視圖,一個數據庫可以有多個模式
E、數據庫的三級模式以及模式之間的映像可以保證數據具有較高的數據獨立性
數據庫系統的三級模式結構是指數據庫系統是由外模式、模式和內模式三部分構成。
(1)外模式(External Schema)
外模式也稱子模式(Subschema)或用戶模式,它是數據庫用戶(包括應用程序員和最終用戶)最終能夠看見的和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。外模式面向具體的應用程序,它定義在模式之上,但獨立于存儲模式和存儲設備。設計外模式時應充分考慮到應用的擴充性。外模式通常是模式的子集。一個數據庫可以有多個外模式。外模式是保證數據庫安全性的一個有力措施。
(2)模式(Schema)
模式也稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。它是數據庫系統模式結構的中間層,既不涉及數據的物理存儲細節和硬件環境,也與具體的應用程序、所使用的應用開發工具以及高級程序設計語言無關。模式是數據庫的中心與關鍵,它獨立于數據庫的其他層次。設計數據庫模式結構時應首先確定數據庫的模式。模式實際上是數據庫數據在邏輯級上的視圖。一個數據庫只有一個模式。數據庫模式以某一種數據模型為基礎,統一綜合地考慮了所有用戶的需求,并將這些需求有機地結合成一個邏輯整體。模式定義包括數據的邏輯結構定義、數據之間的聯系定義以及安全性、完整性要求的定義。
(3)內模式(Internal Schema)
內模式也稱存儲模式(Storage Schema),一個數據庫只有一個內模式,它是數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式。內模式依賴于它的全局邏輯結構,但獨立于數據庫的用戶視圖即外模式,也獨立于具體的存儲設備。例如,記錄的存儲方式是順序存儲、按照B樹結構存儲還是按HASH方法存儲;索引按照什么方式組織;數據是否壓縮存儲,是否加密;數據的存儲記錄結構有何規定等。
數據庫系統的三級模式是對數據的三個抽象級別,它把數據的具體組織留給DBMS管理,使用戶能邏輯抽象地處理數據,而不必關心數據在計算機中的表示和存儲。為了能夠在內部實現這三個抽象層次的聯系和轉換,數據庫系統在這三級模式之間提供了二級映象:外模式/模式映象和模式/內模式映象。正是這兩層映象保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。
【DB筆試面試57】下列關于SQL語言特點的描述中,哪些是正確的?()(多選題)
關系數據庫標準語言SQL是一個綜合的、通用的、功能極強同時又簡潔易學的語言。下列關于SQL語言特點的描述中,哪些是正確的?()(多選題)
A、分為模式數據定義語言、外模式數據定義語言、與存儲有關的描述語言以及數據操縱語言
B、它可以定義關系模式、錄入數據、查詢、更新、維護、數據庫重構、數據庫安全控制等一系列操作要求
C、是一種采用面向記錄的操作方式的語言
D、既是自含式語言,又是嵌入式語言
E、具有數據查詢、數據定義、數據操縱和數據控制功能
SQL(Structure Query Language,結構化查詢語言)是一種在關系型數據庫中定義和操縱數據的標準語言。
關系型數據庫采用結構化查詢語言即SQL作為客戶端程序與數據庫服務器間溝通的標準接口——客戶端發送SQL指令到服務器端,服務器端執行相關的指令并返回其查詢的結果。在數據庫服務器端執行的SQL指令可以實現各種數據庫操作和管理功能,例如:數據的查詢和更新(包括添加、修改和刪除數據)操作;創建、修改和刪除各種數據庫對象(如數據表、視圖、索引等);數據庫用戶賬戶管理、權限管理等。
關系數據語言的共同特點是:語言具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高級語言中使用。
【DB筆試面試58】SQL Server 2000 提供了完全備份、差異備份和日志備份等幾種備份方法,其中差異備份的內容是()
【DB筆試面試59】?以下關于視圖敘述不正確的是()
以下關于視圖敘述不正確的是()
A、視圖是由從數據庫的基本表中選擇出來的數據組成的邏輯窗口
B、視圖是一個虛表
C、數據庫中不僅存放視圖的定義,還存放視圖包含的數據
D、基本表中的數據庫如果發生了變化,從視圖中選取出來的數據也隨之變化
視圖是由從數據庫的基本表中選取出來的數據組成的邏輯窗口,數據庫中只存放視圖的定義,而不存放視圖查詢出來的數據。
【DB筆試面試60】 關于E-R圖的敘述正確的是()
關于E-R圖的敘述正確的是()
A、E-R圖是建立在關系數據庫的假設上
B、E-R圖可將現實世界中的信息抽象地表示為實體以及實體間的聯系
C、E-R圖使應用過程和數據的關系清晰
D、E-R圖能表示數據生命周期
【DB筆試面試61】?以下關于數據模型要求錯誤的是()
以下關于數據模型要求錯誤的是()
A、能夠比較真實的模擬現實世界
B、容易為人們所理解
C、便于在計算機上實現
D、目前大部分數據庫模型能很好的同時滿足這三方面的要求
目前還沒有一種數據庫模型能夠很好的同時滿足能夠比較真實的模擬現實世界、容易為人們所了解、便于在計算機上實現這三個方面的要求。
【DB筆試面試62】下列哪個選項是數據庫技術與并行處理技術相結合的產 物,是為了處理大型復雜數據庫管理應用領域中的海量數據而提出的,該DBS的硬件平臺式并行計算機系統,使用多個CPU和多個磁盤進行并行數據處理和磁盤訪問操作,以提高數據庫系統的素具處理和I/O速度。()
A、集中式數據庫系統 B、并行數據庫系統
C、分布式數據庫系統 D、客戶/服務器數據庫系統
數據庫技術與并行處理技術相結合的產物是并行數據庫系統。并行數據庫系統通過并行實現各種數據操作,例如數據載入、索引建立、數據查詢等,它可以提升系統的性能。
【DB筆試面試63】要以NAME’s address is ADDR格式返回數據,以下SQL語句正確的是
在Oracle中,表EMP包含以下列:
……
NAME VARCHAR2(20)
ADDR VARCHAR2(60)
……
要以NAME’s address is ADDR格式返回數據,以下SQL語句正確的是()
A、SELECT NAME + ”’s address is ’ + ADDR FROM EMP;
B、SELECT NAME || ”’s address is ’ || ADDR FROM EMP;
C、SELECT NAME + ‘\’s address is ’ + ADDR FROM EMP;
D、SELECT NAME || ‘\’s address is ”|| ADDR FROM EMP;
連接字符串用||,排除A和C。若要輸出一個單引號,則只需要輸入2個連續的單引號即可,所以,本題的答案為B。
【DB筆試面試64】在Oracle中,以下不屬于集合操作符的是()
在Oracle中,以下不屬于集合操作符的是()
A、UNION B、SUM C、MINUS D、INTERSECT
有時在實際應用中,為了合并多個SELECT語句的結果,可以使用集合操作符UNION、UNION ALL、INTERSECT、MINUS。這些操作符多用于數據量比較大的數據庫,運行速度快,稱為合并查詢,也叫集合查詢。
顯然,本題的答案為B。
【DB筆試面試65】
在Oracle中,哪一種表分區方式建議的分區數是2的冪(2、4、8等),以獲得最平均的數據發布()
A、范圍分區 B、列表分區 C、散列分區 D、復合分區
【DB筆試面試66】在Oracle中,關于鎖,下列描述不正確的是()
在Oracle中,關于鎖,下列描述不正確的是()
A、鎖用于在用戶之間控制對數據的并發訪問
B、DML產生的鎖可以將鎖歸類為行級鎖和表級鎖
C、INSERT、UPDATE、DELETE語句自動獲得行級鎖
D、同一時間只能有一個用戶鎖定一個特定的表
鎖(lock)機制用于管理對共享資源的并發訪問,用于多用戶的環境下,可以保證數據庫的完整性和一致性。
根據保護的對象不同,Oracle數據庫鎖可以分為以下幾大類:
(1)DML鎖(data locks,數據鎖),用于保護數據的完整性;
(2)DDL鎖(dictionary locks,字典鎖),用于保護數據庫對象的結構,如表、索引等的結構定義;
(3)內部鎖和閂(internal locks and latches),保護數據庫的內部結構。
DML鎖的目的在于保證并發情況下的數據完整性。在Oracle數據庫中,DML鎖主要包括TM鎖和TX鎖,其中TM鎖稱為表級鎖,TX鎖稱為事務鎖或行級鎖。
本題中,對于選項A,鎖用于在用戶之間控制對數據的并發訪問,選項說法正確。所以,選項A錯誤。
對于選項B,DML語句產生的鎖可以分為TM鎖和TX鎖,說法正確。所以,選項B錯誤。
對于選項C,INSERT、UPDATE、DELETE語句自動獲得行級鎖,說法正確。所以,選項C錯誤。
對于選項D,同一時間可以有多個用戶鎖定一個特定的表,選項說法錯誤。所以,選項D正確。
所以,本題的答案為D。
【DB筆試面試67】?在Oracle中,關于表分區下列描述不正確的是()
在Oracle中,關于表分區下列描述不正確的是()
A、分區允許對選定的分區執行維護操作,而其他分區對于用戶仍然可用
B、不可以對包含LONG或LONG RAW列的表進行分區
C、不可以對包含任何LOB列的表進行分區
D、如果分區鍵包含DATE數據類型的列,那么必須使用TO_DATE函數完整的指定年份
當表中的數據量不斷增大時,查詢數據的速度就會變慢,應用程序的性能就會下降,這時就應該考慮對表進行分區。當對表進行分區后,在邏輯上,表仍然是一張完整的表,只是將表中的數據在物理上存放到多個表空間(物理文件上),當查詢數據時,不至于每次都掃描整張表。Oracle可以將大表或索引分成若干個更小更方便管理的部分,每一部分稱為一個分區,這樣的表稱為分區表。SQL語句使用分區表比全表或全表索引能提供更好的訪問和處理數據。即使某些分區不可用,其他分區仍然可用,這叫做分區獨立性。
分區表的一些限制條件:
① 不能分割是簇一部分的表。
② 不能分割含有LONG或LONG RAW列的表。
③ 索引組織表IOT不能進行范圍分區。
本題中,對于選項A的說法體現了分區的獨立性,選項說法正確。所以,選項A錯誤。
對于選項B的說法體現了分區的特殊性,說法正確。所以,選項B錯誤。
對于選項C,可以對包含有LOB列的表進行分區,選項說法錯誤。所以,選項C正確。
對于選項D,如果分區鍵包含DATE數據類型的列,則必須使用TO_DATE函數完整的指定年份,選項說法正確。所以,選項D錯誤。
所以,本題的答案為C。
【DB筆試面試68】 ?下列關于數據庫數據字典的敘述中,哪一條是錯誤的?()
下列關于數據庫數據字典的敘述中,哪一條是錯誤的?()
A、數據字典中保存關于數據庫的描述信息
B、數據字典與元數據是不同的概念
C、程序訪問數據庫數據時,由DBMS通過查詢數據字典確定被訪問的數據
D、數據獨立性是指存儲在數據庫的數據字典中的數據文件結構,與訪問它的程序之間是相互分離的
數據字典(Data dictionary)是一種用戶可以訪問的記錄數據庫和應用程序元數據的目錄。數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明,可以分為主動和被動數據字典。主動數據字典是指在對數據庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。數據字典包括對數據庫的描述信息、數據庫的存儲管理信息、數據庫的控制信息、用戶管理信息和系統事務管理信息等,所以數據字典也可以稱為系統目錄。
數據獨立性是數據庫系統的一個最重要的目標之一。它能使數據獨立于應用程序。數據獨立性表示應用程序與數據庫中存儲的數據不存在依賴關系,包括數據的物理獨立性和數據的邏輯獨立性。數據庫管理系統的模式結構和二級映像功能保證了數據庫中的數據具有很高的物理獨立性和邏輯獨立性。物理獨立性是指用戶的應用程序與存儲在磁盤上的數據庫中數據是相互獨立的。即,數據在磁盤上怎樣存儲由DBMS管理,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構,這樣當數據的物理存儲改變了,應用程序不用改變。邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的,即,當數據的邏輯結構改變時,用戶程序也可以不變。所以,本題的答案為D。
【DB筆試面試69】下列關于數據模型的數據約束的敘述中,哪一條是錯誤的?()
下列關于數據模型的數據約束的敘述中,哪一條是錯誤的?()
A、數據約束描述數據結構中數據間的語法和語義關聯
B、數據約束用以保證數據的正確性、有效性和相容性
C、數據完整性約束是數據約束的一種
D、數據約束指的是數據的靜態特征,不包括數據的動態行為規則
在數據庫表的開發中,約束是必不可少的支持,使用約束可以更好的保證數據庫中數據的完整性。數據的完整性是指數據的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類:行級和表級,處理機制是一樣的。行級約束放在列后,表級約束放在表后,多個列共用的約束放在表后。完整性約束是一種規則,不占用任何數據庫空間。完整性約束存在數據字典中,在執行SQL或PL/SQL期間使用。用戶可以指明約束是啟用的還是禁用的,當約束啟用時,它增強了數據的完整性,否則,則反之,但約束始終存在于數據字典中。
【DB筆試面試70】要為每一位工資低于1000元的女職工加薪200元,下列哪一個是實現上述要求的正確的SQL語句?
設有職工基本表:(EMPENO,ENAME,AGE,SEX,SALARY),其屬性分別表示職工號、姓名、年齡、性別、工資。要為每一位工資低于1000元的女職工加薪200元,下列哪一個是實現上述要求的正確的SQL語句?()
A、UPDATE EMP
HAVING SALARY=SALARY+200
WHERE SALARY<1000 AND SEX=’女’;
B、UPDATE EMP
SET SALARY=SALARY+200
WHERE SALARY<1000 AND SEX=’女’;
C、UPDATE EMP
WITH SALARY=SALARY+200
WHERE SALARY<1000 AND SEX=’女’;
D、UPDATE EMP
UPDATE SALARY=SALARY+200
WHERE SALARY<1000 AND SEX=’女’;
更新的語法格式為UPDATE 表名 SET 列名=表達式 WHERE 條件。
本題中,對于選項A,不能使用HAVING子句。所以,選項A錯誤。
對于選項B,語法命令正確。所以,選項B正確。
對于選項C,不能使用WITH。所以,選項C錯誤。
對于選項D,不能出現2個UPDATE。所以,選項D錯誤。
所以,本題的答案為B。
【DB筆試面試71】有一個關系:(學生學號,姓名,系別),規定學號的值域是8個數字組成的字符串,這一規則屬于下列哪一項約束?()
有一個關系:(學生學號,姓名,系別),規定學號的值域是8個數字組成的字符串,這一規則屬于下列哪一項約束?()
A、實體完整性約束 B、參照完整性約束
C、用戶自定義完整性約束 D、關鍵字完整性約束
用戶自定義的完整性規則是指某一具體的實際數據庫的約束條件,由應用環境所決定,反映某一具體應用所涉及的數據必須滿足的要求(比如說一個人的年齡必須要大于零),根據現實生活中的一個實際情況用戶定義的一個用戶自定義完整性。
所以,本題的答案為C。
【DB筆試面試72】?將STUDENT表中的年齡屬性的數據類型改為半字節整數,下列SQL語句中哪一個是正確的?()
將STUDENT表中的年齡屬性的數據類型改為半字節整數,下列SQL語句中哪一個是正確的?()
A、ALTER TABLE STUDENT ADD age SMALLINT;
B、ALTER TABLE STUDENT MODIFY age SMALLINT;
C、ALTER TABLE STUDENT UPDATE age SMALLINT;
D、ALTER TABLE STUDENT HAVING age SMALLINT;
修改數據類型使用MODIFY關鍵字。
所以,本題的答案為B。
【DB筆試面試73】
數據庫系統中部分或全部事務由于無法獲得對需要訪問的數據項的控制權而處于等待狀態,并且一直等待下去的一種系統狀態的情況稱為()
A、活鎖 B、死鎖 C、排它鎖 D、共享鎖
題目中描述的的情況稱為活鎖。所謂死鎖,是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。活鎖指的是任務或者執行者沒有被阻塞,由于某些條件沒有滿足,導致一直重復嘗試,失敗,嘗試,失敗。活鎖和死鎖的區別在于,處于活鎖的實體是在不斷的改變狀態,所謂的“活”,而處于死鎖的實體表現為等待;活鎖有可能自行解開,死鎖則不能。共享鎖使一個事務對特定數據庫資源進行共享訪問,另一事務也可對此資源進行訪問或獲得相同共享鎖。共享鎖為事務提供高并發性,但拙劣的事務設計+共享鎖容易造成死鎖或數據更新丟失。事務設置排它鎖后,該事務單獨獲得此資源,另一事務不能在此事務提交之前獲得相同對象的共享鎖或排它鎖。
【DB筆試面試74】下列關于鎖的說法錯誤的是()
下列關于鎖的說法錯誤的是()
A、鎖是一種特殊的二元信號量
B、為了避免活鎖現象的發生,DBMS采用資源分配圖的方法來處理事務的數據操作請求
C、對于每個需要撤銷的死鎖事務,可以簡單的放棄該事務已經完成的全部操作,重新啟動該事務
D、在順序加鎖中,維護數據項的加鎖順序很困難,代價也非常大
為了避免活鎖現象的發生,DBMS一般采用先來先服務的策略來處理事務的數據操作請求.
【DB筆試面試75】 ?關于對SQL對象的操作權限的描述正確的是()
關于對SQL對象的操作權限的描述正確的是()
A、權限的種類分為INSERT,DELETE和UPDATE三種
B、使用REVOKE語句獲得權限
C、權限只能用于實表而不能應用于視圖
D、使用COMMIT語句賦值權限
REVOKE是對權限的回收,COMMIT是對事務的提交,權限不僅能作用于實表還能作用于虛表。
【DB筆試面試76】?在UML機制中,關于包和包圖下列說法中錯誤的是()
在UML機制中,關于包和包圖下列說法中錯誤的是()
A、把模型元素通過內在的語義連在一起的成為一個整體就叫做包
B、包又稱為子系統
C、包能夠引用來自其他包的模型元素
D、包圖必須保證高耦合,低內聚
包圖是表明包以及包之間的關系的類圖,是對模型中涉及的元素分組所得的結果,是具有特定語義的一個子集,必須保證低耦合,高內聚。
【DB筆試面試77】 有學生表(學號,姓名,所在系,年齡),找出系內學生平均年齡高于全體學生平均年齡的系信息,正確的語句是()
有學生表(學號,姓名,所在系,年齡),找出系內學生平均年齡高于全體學生平均年齡的系信息,正確的語句是()
A、SELECT 所在系,AVG(年齡)FROM 學生表
WHERE AVG(年齡)>(SELECT AVG(年齡)FEOM 學生表);
B、SELECT 所在系,AVG(年齡)FROM 學生表
WHERE AVG(年齡)>(SELECT AVG(年齡)FEOM 學生表)
GROUP BY 所在系;
C、SELECT 所在系,AVG(年齡)FROM 學生表
GROUP BY 所在系
HAVING AVG(年齡)>(SELECT AVG(年齡)FEOM 學生表);
D、SELECT 所在系,(AVG年齡)FROM 學生表
GROUP BY 所在系
WHERE AVG年齡)>(SELECT AVG(年齡)FEOM 學生表);
在分組查詢中要用關鍵字GROUP,AVG()、SUM()等函數作為查詢條件時,必須放在HAVING關鍵字后面,而不能用WHERE關鍵字。
【DB筆試面試78】表USERS中有字段ID,NAME。要求用數據庫腳本實現以下功能,以ID為升序排列,并分頁,每頁10行。
答案如下:
【DB筆試面試79】MySQL如何查詢SQL語句的執行計劃,從而知道是否使用了索引
1、 MySQL如何查詢SQL語句的執行計劃,從而知道是否使用了索引。
答案如下:
很明顯,能夠看到索引:index_name_shouji。
【DB筆試面試80】在MySQL中,創建用戶OLDLHR,使之可以管理數據庫OLDLHR
在MySQL中,創建用戶OLDLHR,使之可以管理數據庫OLDLHR。
【DB筆試面試81】在MySQL中,如何查看創建的用戶OLDLHR擁有哪些權限?
在MySQL中,如何查看創建的用戶OLDLHR擁有哪些權限?
mysql> SHOW GRANTS FOR OLDLHR@LOCALHOST;
+—————————————————————————————————————+
| Grants for OLDLHR@localhost |
+—————————————————————————————————————+
| GRANT USAGE ON . TO ‘OLDLHR’@’localhost’ IDENTIFIED BY PASSWORD ‘*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9’ |
| GRANT ALL PRIVILEGES ON OLDLHR.* TO ‘OLDLHR’@’localhost’ |
+—————————————————————————————————————+
2 rows in set (0.02 sec)
【DB筆試面試82】在MySQL中,把TEST表的ID列設置為主鍵,并在NAME字段上創建普通索引。
在MySQL中,把TEST表的ID列設置為主鍵,并在NAME字段上創建普通索引。
ALTER TABLE TEST CHANGE ID ID INT PRIMARY KEY AUTO_INCREMENT;
ALTER TABLE TEST ADD INDEX INDEX_NAME(NAME);
查看索引:
【DB筆試面試83】在SQL Server中,()保存所有的臨時表和臨時存儲過程
在SQL Server中,()保存所有的臨時表和臨時存儲過程
A、master數據庫
B、tempdb數據庫
C、model數據庫
D、msdb數據庫
總體而言,SQL Server有如下4個默認的數據庫:Master、Model、Tempdb和Msdb。
1、Master
Master數據庫(主數據庫)保存有放在SQL Server實體上的所有數據庫元數據的詳細信息,它還是將引擎固定起來的粘合劑。由于如果不使用Master數據庫,那么SQL Server就不能啟動,所以,必須要小心地管理好這個數據庫。因此,對這個數據庫進行常規備份是十分必要的。
這個數據庫包括了諸如系統登錄、配置設置、已連接的Server等信息。主數據庫還存有擴展存儲過程,它能夠訪問外部進程,從而允許與磁盤子系統和系統API調用等特性交互。
2、Model
Model數據庫(模型數據庫)是一個用來在實體上創建新用戶數據庫的模版數據庫,可以把任何存儲過程、視圖、用戶等放在模型數據庫里,這樣在創建新數據庫的時候,新數據庫就會包含存放在模型數據庫里的所有對象了。
3、Tempdb
Tempdb數據庫存有臨時對象,例如全局和本地臨時表和存儲過程。這個數據庫在SQL Server每次重啟的時候都會被重新創建,而其中包含的對象是依據模型數據庫里定義的對象被創建的。除了這些對象,Tempdb還存有其它對象,例如表變量、來自表值函數的結果集,以及臨時表變量。由于Tempdb會保留SQL Server實體上所有數據庫的對象類型,所以,對數據庫進行優化配置是非常重要的。
4、Msdb
Msdb數據庫用來保存數據庫備份、SQL Agent信息、DTS程序包和SQL Server任務等信息,以及諸如日志轉移這樣的復制信息。
從SQL Server Studio中可以查看所有的數據庫,如下圖所示:
【DB筆試面試84】假設有表數據:TABLE 。。。請寫出獲得此結果的SQL語句。
假設有表數據:TABLEID NAME NUM
A a 9
A b 11
B f 7
B g 8
所要結果:
A b 11
B g 8
請寫出獲得此結果的SQL語句。
答案:本題考察的是聚合函數和子查詢,先按照ID列進行分組找出NUM最大的值,然后回表查詢即可得最終結果,最終SQL語句如下所示:
SELECT * FROM TABLE
WHERE NUM IN
(SELECT MAX(NUM) FROM TABLE GROUP BY ID);
【DB筆試面試85】設教學數據庫中有三個基本表。。。下面的題目都是針對上述三個基本表操作的。
設教學數據庫中有三個基本表:
學生表S(S#,SNAME,AGE,SEX),其屬性表示學生的學號、姓名、年齡和性別;選課表SC(S#,C#,GRADE),其屬性表示學生的學號、所學課程的課程號和成績;課程表C(C#,CNAME,TEACHER),其屬性表示課程號、課程名稱和任課教師姓名。
下面的題目都是針對上述三個基本表操作的。
(1)試寫出下列插入操作的SQL語句:
把SC表中每門課程的平均成績插入到另一個已存在的表SC_C(C#,CNAME,AVG_GRADE)中,其中,AVG_GRADE為每門課程的平均成績。
(2)試寫出下列刪除操作的SQL語句:
從SC表中把WU老師的女學生選課元組刪去。
(1)答案:
INSERT INTO SC_C( C#,CNAME,AVG_GRADE )
SELECT SC.C#, C.CNAME, AVG(GRADE) FROM SC, C WHERE SC.C#=C.C#;
(2)答案:
DELETE FROM SC WHERE S# IN (SELECT S# FROM S WHERE SEX=’女’)
AND C# IN (SELECT C# FROM C WHERE TEACHER=’WU’);
【DB筆試面試86】
設有如下關系表
供應者:SUPPLIER(SNO,SNAME,CITY),其中,SNO供應者編號,SNAME為供應者姓名,CITY所在城市
零件:PART(PNO,PNAME,WEIGHT),其中,PNO零件號,PNAME零件名稱,WEIGHT重量
工程:JOB(JNO,JNAME,CITY),其中,JNO工程號,JNAME工程名,CITY所在城市
聯系關系:SPJ(SNO,PNO,JNO,QTY),其中,QTY為數量
(1)查找給工程J1提供零件P1的供應者號SNO
(2)查找在北京的供應者給武漢的工程提供零件的零件號
(3)查找由供應者S1提供的零件名PNAME
(4)查找CITY值為上海的工程號和名稱
(5)將工程J3的城市改為廣州
(6)將所有重20公斤的零件改為重10公斤
(7)將給工程J1提供零件P1的供應者S1改為S2
(8)將值(S3,凌濤,武漢)加到SUPPLIER中
(9)刪除所有上海工程的數據
(1)查找給工程J1提供零件P1的供應者號SNO
答案:
SELECT SNO
FROM SPJ,PART,JOB
WHERE SPJ.PNO = PART.PNO
AND SPJ.JNO = JOB.JNO
AND PART.PNAME = ‘P1’
AND JOB.JNAME = ‘J1’;
(2)查找在北京的供應者給武漢的工程提供零件的零件號
答案:
SELECT PNO
FROM SPJ,PART,JOB
WHERE SPJ.PNO = PART.PNO
AND SPJ.JNO = JOB.JNO
AND JOB.CITY = ‘武漢’
AND SUPPLIER.CITY = ‘北京’;
(3)查找由供應者S1提供的零件名PNAME
答案:
SELECT PNAME
FROM PART
WHERE PNO IN
(SELECT PNO FROM SPJ, SUPPLIER
WHERE SPJ.SNO = SUPPLIER.SNO
AND SUPPLIER.SNAME = ‘S1’);
(4)查找CITY值為上海的工程號和名稱
答案:
SELECT JNO,JNAME FROM JOB WHERE CITY = ‘上海’;
(5)將工程J3的城市改為廣州
答案:
UPDATE JOB SET CITY = ‘廣州’ WHERE JNAME = ‘J3’;
(6)將所有重20公斤的零件改為重10公斤
答案:
UPDATE PART SET WEIGHT=’10公斤’ WHERE WEIGHT=’20公斤’;
(7)將給工程J1提供零件P1的供應者S1改為S2
答案:
UPDATE SUPPLIER
SET SNAME = ‘S2’
WHERE SNAME = ‘S1’
AND SNO IN
(SELECT SNO FROM SPJ,JOB,PART
WHERE SPJ.JNO = JOB.JNO
AND JOB.JNAME = ‘J1’
AND SPJ.PNO = PART.PNO
AND PART.PNAME = ‘P1’);
(8)將值(S3,凌濤,武漢)加到SUPPLIER中
答案:
INSERT INTO SUPPLIER VALUES(‘S3’, ‘凌濤’, ‘武漢’);
(9)刪除所有上海工程的數據
答案:
DELETE FROM SPJ WHERE JNO IN (SELECT JNO FROM JOB WHERE CITY = ‘上海’);
DELETE FROM JOB WHERE CITY = ‘上海’;
需要注意的是,上述語句的順序不能弄反。
【DB筆試面試87】COMMIT操作和ROLLBACK操作的作用是什么?
COMMIT操作和ROLLBACK操作的作用是什么?
COMMIT語句表示這個事務的所有操作都執行成功(提交),COMMIT告訴系統,數據庫要進入一個新的正確狀態,該事務對數據庫的所有更新都已交付實施(寫入磁盤)。
ROLLBACK語句表示事務中有執行失敗的操作(應該“回退”),ROLLBACK告訴系統,已發生錯誤,數據庫可能處在不正確的狀態,該事務對數據庫的所有更新必須被撤銷,數據庫應恢復該事務到初始狀態。
【DB筆試面試88】
學生信息管理系統中有張表STUDENT,其中,有字段ID、NAME、SEX、BIRTH,請回答如下問題:
(1)找出NAME相同的學生(用一句SQL語句)。
(2)用一句SQL語句把學生SEX為男的改為女,女的改為男。
答案:
(1)SELECT * FROM STUDENT WHERE NAME IN (SELECT NAME FROM STUDENT GROUP BY NAME HAVING COUNT(NAME)>1);
(2)UPDATE STUDENT SET SEX = CASE SEX WHEN ‘男’ THEN ‘女’ ELSE ‘男’ END;
【DB筆試面試89】SQL Server、Access、Oracle三種數據庫之間的區別是什么?
SQL Server、Access、Oracle三種數據庫之間的區別是什么?
Access是一種桌面數據庫,只適合于數據量少的應用系統,在處理少量數據和單機訪問的數據時是很好的,效率也很高。但是Access數據庫有一定的極限,如果數據達到100M左右,那么很容易造成Access假死,或者消耗掉服務器的內存導致服務器崩潰。
SQL Server是基于服務器端的中型的數據庫,可以適合大容量數據的應用。在處理海量數據的效率,后臺開發的靈活性,可擴展性等方面強大。因為現在數據庫都使用標準的SQL語言對數據庫進行管理,所以,如果是標準SQL語言,那么兩者基本上都可以通用的。SQL Server還有更多的擴展,可以用存儲過程、函數等。
Oracle是基于服務器的大型數據庫,主要應用于銀行、證券類業務等。
【DB筆試面試90】SQL Server的兩種存儲結構是什么?
SQL Server的兩種存儲結構是頁與區間。
(1)頁:用于數據存儲的連續的磁盤空間塊,大小為8KB,每頁的開頭是96字節的頁頭,用于存儲有關頁的系統信息,包括頁碼、頁類型、頁的可用空間以及擁有該頁的對象的分配單元ID。
(2)區間:8個連續的物理頁面,大小64KB(較小的表(<64KB)與其它數據庫對象共享區間)。
表和索引以區間的形式存儲,SQL Server中的每個數據庫的信息都記錄在Master數據庫的sysdatabases和sysaltfiles表中。
【DB筆試面試91】
創建一個存儲引擎為InnoDB,字符集為GBK的表TEST,字段為ID和NAME VARCHAR(16),并查看表結構完成下列要求:
① 插入一條數據:1,newlhr
② 批量插入數據:2,小麥苗;3,ximaimiao。要求中文不能亂碼
③ 首先查詢名字為newlhr的記錄,然后查詢ID大于1的記錄
④ 把數據ID等于1的名字newlhr更改為oldlhr
⑤ 在字段NAME前插入AGE字段,類型TINYINT(4)
mysql> CREATE TABLE TEST(ID INT(4) NOT NULL, NAME VARCHAR(20) NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=GBK;
Query OK, 0 rows affected (0.67 sec)
【DB筆試面試92】在MySQL中,有如下表結構,其中,NAME字段代表“姓名”,SCORE字段代表“分數”。
有如下表結構,其中,NAME字段代表“姓名”,SCORE字段代表“分數”。
CREATE TABLE T1 (
ID DOUBLE,
NAME VARCHAR(300),
SCORE DOUBLE
);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘1’,’N1’,’59’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘2’,’N2’,’66’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘3’,’N3’,’78’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘4’,’N1’,’48’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘5’,’N3’,’85’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘6’,’N5’,’51’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘7’,’N4’,’98’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘8’,’N5’,’53’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘9’,’N2’,’67’);
INSERT INTO T1 (ID, NAME, SCORE) VALUES(‘10’,’N4’,’88’);
1、查詢單分數最高的人和單分數最低的人。
SELECT * FROM T1 WHERE SCORE IN (SELECT MAX(SCORE) FROM T1 UNION ALL SELECT MIN(SCORE) FROM T1);
2、查詢兩門分數加起來的第2至5名。
SELECT NAME,SUM(SCORE) FROM T1 GROUP BY NAME ORDER BY SUM(SCORE) DESC LIMIT 1,4;
3、查詢兩門總分數在150分以下的人。
mysql> SELECT NAME, SUM(SCORE) FROM T1 GROUP BY NAME HAVING SUM(SCORE) < 150;
4、查詢兩門平均分數介于60和80的人。
mysql> SELECT NAME,AVG(SCORE) FROM T1 GROUP BY NAME HAVING AVG(SCORE) BETWEEN 60 AND 80;
5、查詢總分大于150分,平均分小于90分的人數。
mysql> SELECT NAME,SUM(SCORE),AVG(SCORE) FROM T1 GROUP BY NAME HAVING SUM(SCORE)>150 AND AVG(SCORE)<90;
6、查詢總分大于150分,平均分小于90分的人數有幾個。
mysql> SELECT COUNT(NAME) FROM T1 GROUP BY NAME HAVING SUM(SCORE) > 150 AND AVG(SCORE) < 90;
【DB筆試面試93】在MySQL中,創建GBK字符集的數據庫NEWLHR,并查看已建庫的完整語句。
在MySQL中,創建GBK字符集的數據庫NEWLHR,并查看已建庫的完整語句。
mysql> CREATE DATABASE NEWLHR CHARACTER SET GBK ;
Query OK, 1 row affected (0.13 sec)
mysql> SHOW CREATE DATABASE NEWLHR;
+———-+—————————————————————-+
| Database | Create Database |
+———-+—————————————————————-+
| newlhr | CREATE DATABASE newlhr /!40100 DEFAULT CHARACTER SET gbk / |
+———-+—————————————————————-+
1 row in set (0.02 sec)
【DB筆試面試94】在MySQL中,VARCHAR與CHAR的區別是什么?VARCHAR(50)中的50代表的含義是什么?
CHAR是一種固定長度的類型,VARCHAR則是一種可變長度的類型。
CHAR列的長度固定為創建表時聲明的長度。長度可以為從0到255的任何值。當保存CHAR值時,在它們的右邊填充空格以達到指定的長度。當檢索到CHAR值時,尾部的空格被刪除掉。在存儲或檢索過程中不進行大小寫轉換。
VARCHAR列中的值為可變長字符串。長度可以指定為0到65535之間的值。VARCHAR的最大有效長度由最大行大小和使用的字符集確定。在MySQL 4.1之前的版本,VARCHAR(50)的“50”指的是50字節(bytes),如果存放UTF8漢字時,最多只能存放16個(每個漢字3字節)。從MySQL 4.1版本開始,VARCHAR(50)的“50”指的是50字符(character),無論存放的是數字、字母還是UTF8漢字(每個漢字3字節),都可以存放50個。CHAR和VARCHAR類型聲明的長度表示你想要保存的最大字符數。例如,CHAR(30)可以占用30個字符。
【DB筆試面試95】在MySQL中,MyISAM和InnoDB各有哪些特性?分別適用在怎樣的場景下?
答案:MyISAM支持表鎖,不支持事務,表損壞率較高。它分為2種類型的文件:以MYD作為后綴名的數據文件和以MYI作為后綴名的索引文件。MyISAM讀寫并發不如InnoDB,適用于INSERT較多的場景,且支持直接復制文件,用以備份數據,是MySQL公司開發的,物理文件主要有數據文件,日志文件和索引文件,并且這三個文件是單獨存在。
InnoDB支持行鎖,支持事務,支持行級鎖,CRASH后具有RECOVER機制,只有ibd文件,分為數據區和索引區,有較好的讀寫并發能力,但做COUNT運算時相當消耗CPU,是InnoDB公司開發的。物理文件有日志文件,數據文件和索引文件。其中,索引文件和數據文件是放在一個目錄下,可以設置共享文件、獨享文件兩種格式。
它們之間其它的區別可以參考如下表格:
【DB筆試面試96】在MySQL中,下列SQL語句中,可為用戶ZHANGSAN分配數據庫USERDB表USERINFO的查詢()
在MySQL中,下列SQL語句中,可為用戶ZHANGSAN分配數據庫USERDB表USERINFO的查詢和插入數據權限的是()
A、GRANT SELECT,INSERT ON USERDB.USERINFO TO ‘ZHANGSAN’@’LOCALHOST’;
B、GRANT ‘ZHANGSAN’@’LOCALHOST’ TO SELECT,INSERT FOR USERDB.USERINFO;
C、GRANT SELECT,INSERT ON USERDB.USERINFO FOR ‘ZHANGSAN’@’LOCALHOST’;
D、GRANT ‘ZHANGSAN’@’LOCALHOST’TO USERDB.USERINFO ON SELECT,INSERT;
賦予權限的SQL語句:GRANT [權限] ON [TABLE] TO ‘USERNAME’@’LOCALHOST’;。
本題中,對于選項A,語法正確。所以,選項A正確。
對于選項B,權限應該在GRANT之后。所以,選項B錯誤。
對于選項C,最后的關鍵詞是TO而不是FOR。所以,選項C錯誤。
對于選項D,最后的關鍵詞是TO而不是ON。所以,選項D錯誤。
所以,本題的答案為A。
【DB筆試面試97】在MySQL中,如何分析一條SQL語句的執行性能?需要關注哪些信息?
在MySQL中,如何分析一條SQL語句的執行性能?需要關注哪些信息?
答案:使用EXPLAIN命令,觀察TYPE列,可以知道是否是全表掃描,可以知道索引的使用形式,觀察KEY可以知道使用了哪個索引,觀察KEY_LEN可以知道索引是否使用完成,觀察ROWS可以知道掃描的行數是否過多,觀察EXTRA可以知道是否使用了臨時表和進行了額外的排序操作。
【DB筆試面試98】在MySQL中,有兩個復合索引(A,B)和(C,D),以下語句會怎樣使用索引?可以做怎樣的優化?
在MySQL中,有兩個復合索引(A,B)和(C,D),以下語句會怎樣使用索引?可以做怎樣的優化?
SELECT * FROM TAB WHERE (A=? AND B=?) OR (C=? AND D=?)
答案:根據MySQL的機制,只會使用到一個篩選效果好的復合索引,可以做如下優化:
SELECT * FROM TAB WHERE A=? AND B=?
UNION
SELECT * FROM TAB WHERE C=? AND D=?;
【DB筆試面試99】幾道MySQL基礎題
真題1、 如何連接到MySQL數據庫?
答案:連接到MySQL數據庫有多種寫法,假設MySQL服務器的地址為192.168.59.130,可以通過如下幾種方式來連接MySQL數據庫:
① mysql -p
② mysql -uroot -p
③ mysql -uroot -h192.168.59.130 -p
真題2、 哪個命令可以查看所有數據庫?
答案:運行命令:show databases;
真題3、 如何切換到某個特定的數據庫?
答案:運行命令:use database_name;。
真題4、 列出數據庫內所有的表?
答案:在當前數據庫運行命令:show tables;。
真題5、 如果MySQL密碼丟了,那么如何找回密碼?
答案:步驟如下:
a、關閉MySQL,/data/3306/mysql stop或pkill mysqld。
b、mysqld_safe –defaults-file=/data/3306/my.cnf –skip-grant-table &。
c、mysql -uroot -p -S /data/3306/mysql.sock ,按ENTER進入。
d、修改密碼,UPDATE mysql.user SET password=PASSWORD(“oldlhr123”) WHERE user=’root’ and host=’localhost’;。
真題6、 mysqldump備份mysqllhr庫及MySQL庫的命令是什么?
答案:mysqldump -uroot -plhr123 -S /data/3306/mysql.sock -B –events -x MySQL mysqllhr > /opt/$(date +%F).sql
真題7、 如何不進入MySQL客戶端,執行一條SQL命令,帳號User,密碼Passwd,庫名DBName,SQL為SELECT sysdate();
答案:采用-e選項,命令為:mysql -uUser -pPasswd -D DBName -e “SELECT sysdate();”。
真題8、 用哪些命令可以查看MySQL數據庫中的表結構?
答案:查看MySQL表結構的命令有如下幾種:
(1) DESC 表名;
(2) SHOW COLUMNS FROM 表名;
(3) DESCRIBE 表名;
(4) SHOW CREATE TABLE 表名;
(5) USE INFORMATION_SCHEMA。
真題9、 如何創建TABB表,完整拷貝TABA表的結構和索引,而且不要數據?
答案:CREATE TABLE TABB LIKE TABA;。
真題10、 如何查看某一用戶的權限?
答案:SHOW GRANTS FOR USERNAME;。
真題11、 如何得知當前BINARY LOG文件和POSITION值?
答案:SHOW MASTER STATUS;。
真題12、 用什么命令切換BINARY LOG?
答案:FLUSH LOGS;。
真題13、 用什么命令整理表數據文件的碎片?
答案:OPTIMIZE TABLE TABLENAME;。
真題14、 如何得到TA_LHR表的建表語句?
答案:SHOW CREATE TABLE TA_LHR;。
【DB筆試面試100】在Oracle中,如下命令:CREATE SEQUENCE seq1()
CREATE SEQUENCE seq1 START WITH 100 INCREMENT BY 10 MAXVALUE 200 CYCLE NOCACHE.
The sequence SEQ1 has generated numbers up to the maximum limit of 200. You issue the following SQL statement:
SELECT seq1.nextval FROM dual.
What is displayed by the SELECT statement?
A、1
B、10
C、100
D、an error
題目“has generated numbers up to the maximum limit of 200”表示序列SEQ1當前已經是最大值200,且創建屬性是CYCLE的,所以,NEXTVAL的值從1開始。注意:即便是START WITH 100,使用CYCLE屬性的序列還是從1開始的。
所以,本題的答案為A。
–以上內容整理自小麥苗的博客,感謝小麥苗。
總結
以上是生活随笔為你收集整理的【DB笔试面试1-100】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云端数据库的春天真来了
- 下一篇: spring DI的三种注入方式分析