天天看點

【牛客刷題】資料庫專項錯題記錄四

1.下列不屬于資料安全性控制方法的是

A.使用者辨別和鑒定

B.使用者存取權限控制

C.資料加密

D.網絡流量控制

答案:D
網絡流量控制是為了避免發送方把資料發送得過快,接收方可能會來不及接收,造成網絡通信擁塞,不屬于資料安全性控制方法
           
【牛客刷題】資料庫專項錯題記錄四

2.共享鎖和排他鎖

共享鎖【S鎖】
又稱讀鎖,若事務T對資料對象A加上S鎖,則事務T可以讀A但不能修改A,其他事務隻能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。    
排他鎖【X鎖】
又稱寫鎖。若事務T對資料對象A加上X鎖,事務T可以讀A也可以修改A,其他事務不能再對A加任何鎖,直到T釋放A上的鎖。這保證了其他事務在T釋放A上的鎖之前不能再讀取和修改A
           

3.資料庫職工有一張表person,表結構與資料如圖所示:

【牛客刷題】資料庫專項錯題記錄四

執行SQL語句 Insert into person(id_card_num ,first_name,last_name,gender,age)value(310001,banana,yellow,1,13)update on duplicate key update age=13 以下描述正确的是()?

A.第一條資料(id=1)first_name,last_name,age分别是banana,yellow,13,其他均保持不變

B.第二條資料(id=2)age置為13,其他均保持不變

C.第一條資料(id=1)age置為12,其他均保持不變

D.第二條資料(id=2)id_cart_num,gender,age分别置為310001,1,13,其他均保持不變

答案:A
//本題sql
Insert into person(id_card_num ,first_name,last_name,gender,age)value(310001,banana,yellow,1,13) update on duplicate key update age=13
//正确sql,更新單條記錄時使用values,更新多條記錄時使用value
Insert into person(id_card_num ,first_name,last_name,gender,age)values(310001,banana,yellow,1,13) on duplicate key update age=13
**on duplicate key update 可以達到以下目的:**
向資料庫中插入一條記錄:  若該資料的主鍵值/ UNIQUE KEY 已經在表中存在,則執行更新操作, 即UPDATE 後面的操作。 否則插入一條新的記錄。  本題中id_card_num為UNIQUE KEY,310001已存在,是以應該執行on duplicate key update後的操作,将該條記錄的age更新為13。
           

4.資料庫中,什麼操作指令可以整理表資料檔案的碎片

A.optimize table TabName;

B.repaire table TabName;

C.analyze table TabName;

D.flush table TabName;

答案:A
optimize table TabName;優化表     
repaire table TabName;修複表     
analyze table TabName;分析表     
flush table TabName;重新整理表
           

5.如下SQL語句中,____可能傳回null值。

(1) select count(*) from t1;  
 (2) select max(col1) from t1;  
 (3) select concat('max=',max(col1)) from t1; 
           

A.(1)可能,(2)和(3)不可能

B.(2)可能,(1)和(3)不可能

C.(3)可能,(1)和(2)不可能

D.(1)不可能,(2)和(3)可能

E.都不可能

F.都可能

答案:D  
(1)傳回的是表的行數,如果沒有記錄,應該傳回0,不會出現NULL, 
(2)和(3)正常情況下不會出現NULL,但是如果表裡面沒有記錄,則會出現NULL 
           

6.利用PL/SQL語句将"資料庫原理"課程的學分指派給變量的語句是

A.select xuefen into @xuefen from course where cname=‘資料庫原理’

B.select xuefen from course where cname=‘資料庫原理’ and [email protected]

C.select @xuefen=xuefen from course where cname=‘資料庫原理’

D.select [email protected] from course where cname=‘資料庫原理’

答案:A
在mysql中 , “=”會預設的當做比較符号處理(很多地方 ), mysql為了區分比較和指派的概念 : 重新定義了一個新的的指派符号 :  :=
           

7.某查詢語句運作後傳回的結果集為:

【牛客刷題】資料庫專項錯題記錄四

A.SELECT class, AVG(score) FROM test WHERE class<3

B.SELECT class, AVG(score) FROM test WHERE class<3 GROUP BY class

C.SELECT class, AVG(score) FROM test WHERE class<3 GROUP BY ALL class

D.SELECT class, AVG(score) FROM test GROUP BY class HAVING class<3

答案:C
因為出現了3班 NULL
條件限制了選擇的class<3 是以隻有1 ,2班有成績。
下面是幫助中group by +all的用法
GROUP BY 子句和 ALL 關鍵字
Transact-SQL 在 GROUP BY 子句中提供 ALL 關鍵字。隻有在 SELECT 語句還包括 WHERE 子句時,ALL 關鍵字才有意義。
如果使用 ALL 關鍵字,那麼查詢結果将包括由 GROUP BY 子句産生的所有組,即使某些組沒有符合搜尋條件的行。沒有 ALL 關鍵字,包含 GROUP BY 子句的 SELECT 語句将不顯示沒有符合條件的行的組。
           

8.假設MySQL資料庫表,如下哪些sql語句查詢能較好的利用索引?(多選)

【牛客刷題】資料庫專項錯題記錄四

A.select b from WHERE b like ‘aaa%’;

B.select a,b from T WHERE a=‘2015-10-25’ ORDER BY b ASC,c ASC;

C.select a,b,c from T WHERE a=‘2015-10-25’ ORDER BY b ASC;

D.select a,b,c from T WHERE a=‘2015-10-25’ ORDER BY a,b;

答案:AD
一、什麼是索引: 
簡單的來說,建立索引在進行資料庫操作的時候不需要全盤一條條的掃描,删選出符合的記錄,索引内部自己有一套優化算法,是以借助索引來對資料庫進行操作可以提高查詢的效率。 
二、什麼時候建立的索引将失效或效率不高(情況有很多,這裡列舉常見的幾種, 假設在字段name上建立了索引): 
  1、使用了運算符!=,以及關鍵字not in, not exist等,認為産生的結果集很大,往往導緻引擎不走索引而是走全盤掃描 
  2、對索引字段使用了函數,如where substr(name, 1, 3)=‘mark’, 導緻索引無效 
  3、使用like和通配符,第一個字元是%将導緻索引失效,如where name like "%ark“  (A正确)
三、order by與索引 
首先利用where進行資料查詢,這一步是免不了的,至于這一步有沒有利用索引暫時不考慮,關鍵是在擷取所有符合的記錄後還需要進行排序,看看order by是如何利用索引的。 如果order by中的字段有建立索引,同時: 
  1、該字段沒有出現在where中,則在排序的時候需要正常排序,預設order by是升序排序, 故索引沒有對排序産生有利幫助 (B,C錯誤)
  2、該字段同時同時出現在where中,則在擷取記錄後不進行排序,而是直接利用索引, 效率變高。(D正确)
           

9.在SQL中文法規範中,having子句的使用下面描述正确的是(多選)

A.having子句即可包含聚合函數作用的字段也可包括普通的标量字段

B.使用having的同時不能使用where子句

C.having子句必須于group by 子句同時使用,不能單獨使用

D.使用having子句的作用是限定分組條件

E.Having子句和where子句是等同的

F.如果select語句中沒有聚合函數的使用,就不能使用having子句

答案:AC
B。where在分組前過濾,having在分組後過濾,兩者之間不沖突。    
D。group by 限定分組條件,即用按照那一列進行分組,相同列值被分為一組。    
E。參考B的解析。    
F。沒有聚合函數的使用也可以用having過濾
           

10.用指令()可以檢視mysql資料庫中user表的表結構?

A.desc user;

B.show create table user;

C.show columns for user;

D.describe user;

答案:ABD
           

11.根據關系資料庫規範範理論,關系資料庫中的關系要滿足第一範式,在部門關系中,因哪個屬性而使它不滿足第一範式?

A.部門号

B.部門名

C.部門總經理

D.部門成員

答案:D
資料項必須都是不可分的,部門成員是成員1、成員2,...,成員n的集合,是可分的
           

12.資料庫設計階段

需求分析:分析使用者的需求,包括資料、功能和性能需求;
概念結構設計:主要采用E-R模型進行設計,包括畫E-R圖;
邏輯結構設計:通過将E-R圖轉換成表,實作從E-R模型到關系模型的轉換;
資料庫實體設計:主要是為所設計的資料庫選擇合适的存儲結構和存取路徑;
資料庫的實施:包括程式設計、測試和試運作;
資料庫運作與維護:系統的運作與資料庫的日常維護。
           

13.概念資料模型是現實世界到資訊世界的第一層抽象。 資料結構模型是對現實世界進行的第二層抽象。

14.ACCESS資料庫中,若要求在窗體上設定輸入的資料是取自某一個表或查詢中記錄的資料,或者取自固定内容的資料,可以使用的控件是清單框或組合框控件

15.Access支援的查詢類型有選擇查詢、交叉式表查詢、參數查詢、SQL查詢和操作作查詢

16.在MySql中,在Product表中,使用全文索引在detail列中搜尋包含“rabbit”的列,則下列語句正确的是

A.select * from product where mactch(detail) against (‘rabbit’)

B.select * from product where against (detail) mactch (‘rabbit’)

C.select * from product where fulltext (detail) mactch (‘rabbit’)

D.select * from product where mactch (detail) fulltext (‘rabbit’)

答案:A
在建立表時,啟用全文本搜尋:    fulltext(detail)    
selete與match()和against()一起使用:match():指定被搜素的列;against():指定要使用的搜尋表達式
           

16.設有關系模式R(A,B,C,D),F是R上成立的FD集,F={B→C,C→D},則屬性C的閉包C+為

A.BCD

B.BD

C.CD

D.BC

答案:C
閉包就是由一個屬性直接或間接推導出的所有屬性的集合,例如: 
f={a->b,b->c,a->d,e->f} 
由a可直接得到b和d,間接得到c,則a的閉包就是{a,b,c,d}
由C能推到D,是以C的閉包是{C,D} 
           

17.資料庫處理一個查詢的步驟

1. 用戶端發送一條查詢給伺服器;
2. 伺服器先會檢查查詢緩存query ***,如果命中了緩存,則立即傳回存儲在緩存中的結果。否則進入下一階段;
3. 伺服器端進行SQL解析parsing、預處理transition,再由優化器optimization生成對應的執行計劃;
4. 根據優化器生成的執行計劃,調用存儲引擎的API來執行分布distribution查詢;
5. 将結果傳回給用戶端。
           

18.在資料庫中存在多列的情況下,若要删除表中的某一列應該使用SQL語句

ALTER TABLE tableName DROP COLUMN columnName
           

19.關于關系型資料庫,正确且全面的描述是:

A.在關系模型中資料的邏輯結構是一張二維表

B.DML是介于關系代數和關系演算之間的語言,它充分展現了關系資料庫語言的特性和優點

C.關系模型的完整性規則是對關系的某種限制,分為實體完整性和參照完整性限制

D.關系資料庫中,關系也稱為資料庫,元組也稱為行,屬性也稱為列

答案:A
A. 在關系模型中資料的邏輯結構是一張二維表(A正确)  
B. SQL語句是介于關系代數和關系演算之間的(結構化查詢)語言(B錯  ) 
C. 關系模型的完整性 包括實體完整性 域完整性 參照完整性和使用者定義完整性。域完整性,實體完整性和參照完整性,是關系模型必須滿  足的完整性限制條件。(C錯  不完整) 
D. 關系是一張表,表中的每行(即資料庫中的每條記錄)是一個元組,每列是一個屬性。(D錯  說反了)
           

20.關于索引的說法,以下正确的是

A.資料庫索引能避免進行資料庫全表的掃描。

B.特定的情況下,索引可以避免排序操作。

C.存在非聚集索引時,有時無需通路資料頁即可得到資料。

D.隻要建立索引就能顯著提高查詢速度。

E.存在聚集索引時,有時無需通路資料頁即可得到資料。

答案:ABCE
           

21.關于資料庫的組織與存取方法,下列說法不正确的是

A.當資料庫是按照排序檔案進行組織時,增加一條記錄是将其寫入溢出檔案中,而不是直接寫入排序檔案;

B.當對資料更新速度有較高要求時,通常采用無序記錄檔案即堆檔案來組織;

C.堆檔案的查詢通路速度要遠高于排序檔案的查詢速度;

D.無論是堆檔案組織還是排序檔案組織,在一段時間後都需要對資料庫進行重組操作。

E.以上說法都正确。

答案:CE
           

22.關于mysql_pconnect說法錯誤的是

A.資料庫建立持久連接配接

B.與資料庫進行多連接配接

C.與mysql_connect功能相同

D.與@mysql_connect功能相同

答案:BCD
mysql_pconnect() 函數打開一個到 MySQL 伺服器的持久連接配接。    mysql_pconnect() 和 mysql_connect() 非常相似,但有兩個主要差別:       
當連接配接的時候本函數将先嘗試尋找一個在同一個主機上用同樣的使用者名和密碼已經打開的(持久)連接配接,如果找到,則傳回此連接配接辨別而不打開新連接配接。       
其次,當腳本執行完畢後到 SQL 伺服器的連接配接不會被關閉,此連接配接将保持打開以備以後使用(mysql_close() 不會關閉由 mysql_pconnect() 建立的連接配接。
           

By Mary Super @ 2020.09.21