2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析_第1頁
2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析_第2頁
2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析_第3頁
2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析_第4頁
2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2025年計算機計算機二級Python語言程序設(shè)計-MySQL數(shù)據(jù)庫程序設(shè)計參考題庫含答案解析一、單選題(共35題)1.在MySQL中,關(guān)于事務(wù)的ACID特性,以下哪個選項正確描述了“原子性”(Atomicity)的含義?【選項】A.事務(wù)一旦提交,其對數(shù)據(jù)庫的修改是永久的B.多個并發(fā)事務(wù)的執(zhí)行互不干擾C.事務(wù)中的操作要么全部成功執(zhí)行,要么全部不執(zhí)行D.事務(wù)執(zhí)行前后的數(shù)據(jù)庫狀態(tài)必須滿足業(yè)務(wù)規(guī)則約束【參考答案】C【解析】ACID特性中:-**A(原子性)**:事務(wù)是一個不可分割的操作單元,其包含的操作要么全部成功執(zhí)行,要么全部回滾(如執(zhí)行失敗時恢復(fù)到事務(wù)開始前的狀態(tài))。選項C正確。-**B(隔離性)**:描述并發(fā)事務(wù)間的相互影響,與原子性無關(guān)。-**D(一致性)**:指事務(wù)執(zhí)行后數(shù)據(jù)庫狀態(tài)需滿足完整性約束,而非原子性。-**A(持久性)**:事務(wù)提交后數(shù)據(jù)永久保存,描述的是存儲特性。2.以下Python代碼運行后輸出結(jié)果是什么?```pythondefouter():x=10definner():nonlocalxx+=5returnxreturninner()print(outer())```【選項】A.10B.15C.報錯(SyntaxError)D.報錯(UnboundLocalError)【參考答案】B【解析】1.`nonlocal`關(guān)鍵字用于聲明`x`為外層函數(shù)(`outer`)的變量,允許`inner`修改`x`。2.`outer()`初始定義`x=10`,調(diào)用`inner()`時執(zhí)行`x+=5`(即`x=15`),最終返回并輸出15。3.若刪除`nonlocal`聲明,則會因內(nèi)部作用域嘗試修改外部變量而引發(fā)`UnboundLocalError`(D錯誤)。3.MySQL中,以下哪個SQL語句能正確創(chuàng)建聯(lián)合主鍵?【選項】A.`CREATETABLEt1(idINT,nameVARCHAR(20),PRIMARYKEY(id),PRIMARYKEY(name));`B.`CREATETABLEt1(idINTPRIMARYKEY,nameVARCHAR(20)PRIMARYKEY);`C.`CREATETABLEt1(idINT,nameVARCHAR(20),PRIMARYKEY(id,name));`D.`CREATETABLEt1(idINTPRIMARYKEY,nameVARCHAR(20));`【參考答案】C【解析】-**聯(lián)合主鍵**要求多個列的組合唯一且非空。-A錯誤:同一表不能定義多個獨立主鍵。-B錯誤:語法錯誤,不能在列定義中重復(fù)使用`PRIMARYKEY`。-C正確:通過`PRIMARYKEY(id,name)`定義`id`和`name`為聯(lián)合主鍵。-D錯誤:僅定義`id`為主鍵,非聯(lián)合主鍵。4.Python中使用SQLAlchemy執(zhí)行以下操作時,哪個方法可避免SQL注入攻擊?【選項】A.直接拼接字符串生成SQL語句B.使用參數(shù)化查詢(如`text()`綁定參數(shù))C.調(diào)用`execute(f"SELECT*FROMusersWHEREname={name}")`D.通過`%`格式化字符串插入變量【參考答案】B【解析】-**SQL注入**通過惡意輸入篡改SQL語句邏輯,參數(shù)化查詢可阻止此類攻擊:-B正確:使用`text("SELECT*FROMusersWHEREname=:name").bindparams(name=user_input)`會將輸入值安全轉(zhuǎn)義。-A、C、D錯誤:直接拼接或格式化字符串可能導(dǎo)致惡意輸入被解析為SQL代碼(如輸入`'OR1=1--`可繞過驗證)。5.MySQL中,對InnoDB存儲引擎的描述錯誤的是?【選項】A.支持事務(wù)和行級鎖B.不支持外鍵約束C.使用MVCC(多版本并發(fā)控制)實現(xiàn)高并發(fā)D.采用聚集索引方式組織表數(shù)據(jù)【參考答案】B【解析】-**InnoDB特性**包括:-A正確:支持ACID事務(wù)及行級鎖。-B錯誤:InnoDB支持外鍵約束(MyISAM不支持)。-C正確:MVCC通過版本鏈避免讀寫沖突,提高并發(fā)性能。-D正確:InnoDB的表數(shù)據(jù)按主鍵聚集存儲(若無主鍵則選唯一非空索引)。6.Python中,以下關(guān)于`with`語句的敘述正確的是?【選項】A.用于替代`if-else`條件判斷B.自動管理資源(如文件關(guān)閉、數(shù)據(jù)庫連接釋放)C.僅適用于文件操作D.必須配合`try-except`使用才能處理異常【參考答案】B【解析】-**`with`語句**用于上下文管理:-B正確:通過實現(xiàn)`__enter__()`和`__exit__()`方法的上下文管理器(如`open()`、數(shù)據(jù)庫連接),自動釋放資源。-A錯誤:與條件判斷無關(guān)。-C錯誤:可擴展至任何支持上下文協(xié)議的對象(如鎖、連接池)。-D錯誤:`with`本身即可處理異常,但可通過`__exit__()`捕獲或忽略。7.MySQL中,執(zhí)行`SELECTCOUNT(*)`與`SELECTCOUNT(1)`的區(qū)別是?【選項】A.前者統(tǒng)計所有行,后者僅統(tǒng)計值為1的行B.前者性能更優(yōu),后者兼容性更好C.兩者結(jié)果相同,性能無顯著差異D.前者忽略NULL,后者統(tǒng)計NULL行【參考答案】C【解析】-**`COUNT(expr)`統(tǒng)計規(guī)則**:-`COUNT(*)`:統(tǒng)計所有行數(shù),包括NULL值。-`COUNT(1)`:等價于`COUNT(*)`,因“1”是常亮表達式,不會檢查實際列值。-C正確:兩者在InnoDB中性能幾乎一致(需全表掃描)。-D描述的是`COUNT(column)`的行為(忽略NULL)。8.Python中若需高效處理大型數(shù)據(jù)庫查詢結(jié)果,最佳實踐是?【選項】A.使用`fetchall()`一次性加載所有數(shù)據(jù)B.使用游標的`fetchmany(size)`分批讀取C.在SQL語句中使用`LIMIT`限制返回行數(shù)D.同時使用B和C【參考答案】D【解析】-**大數(shù)據(jù)查詢優(yōu)化**需減少內(nèi)存占用和網(wǎng)絡(luò)負載:-A錯誤:`fetchall()`可能因數(shù)據(jù)量過大導(dǎo)致內(nèi)存溢出。-B正確:`fetchmany(size)`逐批讀?。ㄈ缑看?000行)。-C正確:SQL中`LIMIT`可減少服務(wù)端返回的數(shù)據(jù)量。-D最優(yōu):結(jié)合應(yīng)用層分批(B)和服務(wù)端分頁(C)實現(xiàn)高效處理。9.以下MySQL索引的描述錯誤的是?【選項】A.唯一索引允許NULL值B.主鍵索引屬于聚集索引C.對`WHEREage>20ANDcountry='CN'`的查詢應(yīng)創(chuàng)建聯(lián)合索引`(country,age)`D.使用`LIKE'%keyword'`時前綴匹配可利用索引【參考答案】D【解析】-**索引使用原則**:-A正確:唯一索引允許多行NULL(視為不重復(fù))。-B正確:InnoDB中主鍵索引即聚集索引。-C正確:聯(lián)合索引遵循最左前綴原則,`country`在前可高效過濾。-D錯誤:`LIKE'%keyword'`因左模糊無法利用索引(`LIKE'keyword%'`可以)。10.Python中執(zhí)行數(shù)據(jù)庫事務(wù)的正確流程是?【選項】A.開始事務(wù)→執(zhí)行SQL→提交事務(wù)→關(guān)閉連接B.建立連接→提交事務(wù)→執(zhí)行SQL→回滾事務(wù)C.建立連接→開始事務(wù)→執(zhí)行SQL→提交/回滾事務(wù)D.建立連接→執(zhí)行SQL→回滾事務(wù)→提交事務(wù)【參考答案】C【解析】-**事務(wù)標準流程**:1.建立連接(如`conn=pymysql.connect(...)`);2.開始事務(wù)(默認自動提交為`False`時);3.執(zhí)行SQL(插入/更新等);4.根據(jù)執(zhí)行結(jié)果選擇`mit()`或`conn.rollback()`;5.關(guān)閉連接(可選)。-C正確:符合上述步驟,其他選項順序錯誤(如未開始事務(wù)直接提交)。11.在Python中使用pymysql模塊連接MySQL數(shù)據(jù)庫時,以下哪個參數(shù)是建立連接時必須指定的?A.hostB.userC.passwordD.database【選項】A.僅A、BB.僅A、B、CC.僅B、C、DD.A、B、C、D【參考答案】B【解析】pymysql.connect()函數(shù)必須包含host(主機地址)、user(用戶名)和password(密碼)參數(shù),而database(數(shù)據(jù)庫名)為可選參數(shù)。若未指定database,連接后需通過`USE`語句選擇數(shù)據(jù)庫,故B為正確答案。12.執(zhí)行MySQL的DELETE操作后,若未調(diào)用commit()方法會發(fā)生什么?A.數(shù)據(jù)自動持久化到數(shù)據(jù)庫B.操作被緩沖,等待事務(wù)提交C.數(shù)據(jù)庫立即回滾該操作D.觸發(fā)編程錯誤導(dǎo)致程序中斷【選項】A.僅AB.僅BC.僅CD.僅D【參考答案】B【解析】在事務(wù)型數(shù)據(jù)庫中,DELETE操作需通過commit()顯式提交事務(wù)才會持久化。未調(diào)用commit()時,操作僅存在于內(nèi)存緩沖區(qū),且處于未提交事務(wù)狀態(tài),故B正確。A、C、D均違背MySQL事務(wù)機制。13.以下Python代碼中游標的哪一方法適合批量插入100條數(shù)據(jù)?A.execute()B.executemany()C.fetchall()D.callproc()【選項】A.AB.BC.CD.D【參考答案】B【解析】executemany()可接收包含多個參數(shù)的列表,一次性執(zhí)行多條相同結(jié)構(gòu)的SQL語句,顯著提升批量插入效率。execute()僅處理單條語句;fetchall()用于查詢結(jié)果獲?。籧allproc()調(diào)用存儲過程,故B正確。14.使用pymysql查詢數(shù)據(jù)時,若結(jié)果集包含中文字符,連接參數(shù)應(yīng)如何設(shè)置?A.charset='gbk'B.charset='utf8mb4'C.cursorclass=pymysql.cursors.DictCursorD.autocommit=True【選項】A.AB.BC.CD.D【參考答案】B【解析】utf8mb4是MySQL支持的完整Unicode編碼標準,可正確處理包括Emoji在內(nèi)的四字節(jié)字符,避免中文亂碼。gbk編碼范圍有限;DictCursor僅影響結(jié)果返回形式;autocommit控制事務(wù)提交,與編碼無關(guān)。15.在Python中捕獲MySQL語法錯誤應(yīng)使用的異常類是?A.pymysql.ProgrammingErrorB.pymysql.OperationalErrorC.pymysql.InternalErrorD.pymysql.DataError【選項】A.AB.BC.CD.D【參考答案】A【解析】ProgrammingError表示SQL語法錯誤或參數(shù)錯誤;OperationalError指數(shù)據(jù)庫連接或操作故障;InternalError為數(shù)據(jù)庫內(nèi)部錯誤;DataError涉及數(shù)據(jù)類型轉(zhuǎn)換問題,故A正確。16.以下哪一項是MySQL中有效的外鍵約束動作?A.RESTRICTB.CASCADEC.NOACTIOND.ALLOFABOVE【選項】A.AB.BC.CD.D【參考答案】D【解析】MySQL支持RESTRICT(阻止父表變更)、CASCADE(級聯(lián)子表同步變更)和NOACTION(與RESTRICT等效的標準SQL行為),因此D選項包含全部正確項。17.使用fetchone()獲取查詢結(jié)果時,返回值的數(shù)據(jù)類型是?A.元組B.字典C.列表D.由游標類型決定【選項】A.AB.BC.CD.D【參考答案】D【解析】若使用默認游標(Cursor),fetchone()返回元組;若使用DictCursor游標,則返回字典。因此返回值類型取決于游標初始化設(shè)置,故D正確。18.以下哪條SQL語句在Python中執(zhí)行需要顯式調(diào)用commit()?A.SELECT*FROMstudentsB.UPDATEstudentsSETage=20WHEREid=1C.SHOWTABLESD.DESCRIBEstudents【選項】A.AB.BC.CD.D【參考答案】B【解析】UPDATE為數(shù)據(jù)修改語句(DML),需事務(wù)提交才能生效。SELECT、SHOW、DESCRIBE均為查詢語句(DQL),不涉及數(shù)據(jù)變更,無需commit(),故B正確。19.Python中關(guān)閉數(shù)據(jù)庫連接的推薦順序是?A.先關(guān)游標后關(guān)連接B.先關(guān)連接后關(guān)游標C.只需關(guān)閉連接D.只需關(guān)閉游標【選項】A.AB.BC.CD.D【參考答案】A【解析】規(guī)范操作應(yīng)先用cursor.close()釋放游標資源,再用connection.close()關(guān)閉連接。倒序關(guān)閉可能導(dǎo)致資源泄漏,故A正確。20.為防止SQL注入攻擊,pymysql應(yīng)優(yōu)先采用何種參數(shù)傳遞方式?A.字符串拼接B.%s占位符C.format()格式化D.f-string插值【選項】A.AB.BC.CD.D【參考答案】B【解析】pymysql的execute()方法通過%s占位符進行參數(shù)化查詢,可自動轉(zhuǎn)義特殊字符(如單引號),有效防御SQL注入。字符串拼接(A)和普通格式化方法(C、D)均存在安全風(fēng)險,故B正確。21.在Python中使用pymysql模塊連接MySQL數(shù)據(jù)庫時,connect()方法的哪個參數(shù)用于指定數(shù)據(jù)庫服務(wù)器的端口號?【選項】A.hostB.userC.portD.database【參考答案】C【解析】pymysql.connect()方法中:1.host參數(shù)指定服務(wù)器地址,默認"localhost"2.user參數(shù)指定登錄用戶名3.port參數(shù)指定服務(wù)器端口號,MySQL默認33064.database參數(shù)指定連接的數(shù)據(jù)庫名稱22.成功建立數(shù)據(jù)庫連接后,執(zhí)行INSERT操作的代碼順序正確的是?【選項】A.創(chuàng)建游標→commit()→執(zhí)行SQL→關(guān)閉連接B.執(zhí)行SQL→創(chuàng)建游標→commit()→關(guān)閉連接C.創(chuàng)建游標→執(zhí)行SQL→commit()→關(guān)閉連接D.執(zhí)行SQL→commit()→創(chuàng)建游標→關(guān)閉連接【參考答案】C【解析】標準操作流程:1.先用conn.cursor()創(chuàng)建游標對象2.通過cursor.execute()執(zhí)行SQL語句3.重要步驟:mit()提交事務(wù)使操作生效4.最后關(guān)閉游標和連接23.執(zhí)行SELECT語句后,cursor.fetchall()返回的數(shù)據(jù)類型是?【選項】A.字典列表B.元組列表C.嵌套元組的元組D.獨立字符串【參考答案】C【解析】pymysql默認返回:1.fetchall()返回整個結(jié)果集,格式為((row1),(row2),...)2.每條記錄以元組形式存儲3.若創(chuàng)建游標時指定cursor=pymysql.cursors.DictCursor,則返回字典列表24.防止SQL注入攻擊的正確做法是?【選項】A.使用字符串拼接:cursor.execute("SELECT*FROMusersWHEREid="+user_id)B.使用%格式化:cursor.execute("SELECT*FROMusersWHEREid=%s"%user_id)C.使用參數(shù)化查詢:cursor.execute("SELECT*FROMusersWHEREid=%s",(user_id,))D.使用f-string:cursor.execute(f"SELECT*FROMusersWHEREid={user_id}")【參考答案】C【解析】安全性要點:1.參數(shù)化查詢(選項C)能自動轉(zhuǎn)義特殊字符2.字符串拼接(A)、%格式化(B)、f-string(D)都會存在注入漏洞3.參數(shù)化查詢應(yīng)始終作為防范SQL注入的首選方案25.以下關(guān)閉數(shù)據(jù)庫資源的正確順序是?【選項】A.先關(guān)閉連接再關(guān)閉游標B.只關(guān)閉連接無需關(guān)閉游標C.先關(guān)閉游標再關(guān)閉連接D.關(guān)閉順序無關(guān)緊要【參考答案】C【解析】資源釋放規(guī)范:1.應(yīng)先關(guān)閉游標對象:cursor.close()2.再關(guān)閉數(shù)據(jù)庫連接:conn.close()3.倒序關(guān)閉可能導(dǎo)致游標持有已關(guān)閉的連接引用4.雖然Python有垃圾回收,但顯式關(guān)閉是良好實踐26.捕獲MySQL數(shù)據(jù)庫操作異常的基類異常是?【選項】A.pymysql.DatabaseErrorB.pymysql.OperationalErrorC.pymysql.IntegrityErrorD.pymysql.Error【參考答案】D【解析】pymysql異常體系:1.pymysql.Error是所有數(shù)據(jù)庫異常的基類2.OperationalError:操作異常(如連接失?。?.IntegrityError:完整性約束錯誤(如重復(fù)主鍵)4.DatabaseError:底層數(shù)據(jù)庫錯誤實際捕獲時通常使用基類pymysql.Error27.以下哪項是數(shù)據(jù)庫事務(wù)的ACID特性中的"I"代表的特性?【選項】A.原子性(Atomicity)B.一致性(Consistency)C.隔離性(Isolation)D.持久性(Durability)【參考答案】C【解析】ACID特性詳解:1.I表示Isolation(隔離性)2.確保事務(wù)之間相互隔離不干擾3.原子性:事務(wù)全部完成或全部回滾4.一致性:數(shù)據(jù)符合業(yè)務(wù)規(guī)則5.持久性:提交后數(shù)據(jù)永久保存28.某字段定義為DECIMAL(7,2),能存儲的最大數(shù)值是?【選項】A.99999.99B.9999.99C.999999.99D.99999.99【參考答案】A【解析】DECIMAL精度說明:1.DECIMAL(M,N),M表示總位數(shù),N表示小數(shù)位數(shù)2.7位總數(shù)中,整數(shù)部分占5位(7-2=5)3.最大值為99999.99(5位整數(shù)+2位小數(shù))4.超過精度的數(shù)值會觸發(fā)DataError異常29.定義字符串字段時,VARCHAR(50)表示什么含義?【選項】A.固定分配50字節(jié)存儲空間B.最長存儲50個漢字C.可變長度字符串,最多50字符D.必須包含50個字符【參考答案】C【解析】VARCHAR特性:1.VARCHAR是可變長度字符串類型2.參數(shù)50表示最大字符數(shù)為503.存儲英文字符占1字節(jié),漢字占3字節(jié)(UTF-8)4.相比CHAR類型,VARCHAR節(jié)省存儲空間30.外鍵約束的ONDELETECASCADE作用是什么?【選項】A.禁止刪除主表記錄B.刪除主表記錄時自動刪除關(guān)聯(lián)的從表記錄C.主表刪除記錄時自動將外鍵設(shè)為NULLD.僅當沒有關(guān)聯(lián)記錄時才允許刪除【參考答案】B【解析】外鍵約束動作解析:1.CASCADE:級聯(lián)刪除關(guān)聯(lián)數(shù)據(jù)2.RESTRICT:禁止刪除被引用的主表記錄(同默認)3.SETNULL:刪除主表記錄時從表外鍵設(shè)為NULL4.NOACTION:與RESTRICT等效級聯(lián)刪除簡化了數(shù)據(jù)維護,但需謹慎設(shè)計業(yè)務(wù)關(guān)系31.在Python中使用MySQL數(shù)據(jù)庫時,關(guān)于`cursor.fetchone()`和`cursor.fetchall()`方法,以下描述正確的是?【選項】A.`fetchone()`返回剩余所有行的列表,`fetchall()`只返回下一行數(shù)據(jù)B.`fetchone()`返回單個元組(或None),`fetchall()`返回所有行的列表C.兩者均返回多行數(shù)據(jù)的字典形式D.`fetchall()`在結(jié)果集為空時返回空列表,而`fetchone()`返回空字符串【參考答案】B【解析】`cursor.fetchone()`方法從查詢結(jié)果集中獲取下一行數(shù)據(jù),返回一個元組(若無數(shù)據(jù)則返回`None`)。`cursor.fetchall()`方法返回剩余所有行的列表(若為空則返回空列表)。選項A描述相反;選項C錯誤,默認返回元組而非字典;選項D中`fetchone()`應(yīng)返回`None`而非空字符串。32.以下Python代碼用于防止SQL注入攻擊,空白處應(yīng)填入的代碼是?```pythonsql="SELECT*FROMusersWHEREusername=%sANDpassword=%s"cursor.execute(sql,(________))```【選項】A.user,pwdB.(user,pwd)C.[user,pwd]D.{"user":user,"pwd":pwd}【參考答案】B【解析】參數(shù)化查詢中,`execute()`方法的第二個參數(shù)應(yīng)為元組或列表。此處占位符為`%s`,需直接傳遞元組`(user,pwd)`(選項B)。選項A缺少括號構(gòu)成元組;選項C雖合法但不符合`%s`占位符的通用寫法;選項D適用于字典形式的命名占位符(如`%(name)s`),與題目語法不符。33.MySQL中事務(wù)隔離級別為`READCOMMITTED`時,可能引發(fā)的現(xiàn)象是?【選項】A.幻讀(PhantomRead)B.臟讀(DirtyRead)C.不可重復(fù)讀(Non-repeatableRead)D.所有并發(fā)問題均可避免【參考答案】C【解析】`READCOMMITTED`隔離級別下,事務(wù)能讀取已提交的數(shù)據(jù),但同一事務(wù)內(nèi)多次查詢可能因其他事務(wù)提交修改而導(dǎo)致結(jié)果不一致(不可重復(fù)讀)。臟讀由`READUNCOMMITTED`引發(fā)(選項B錯誤);幻讀由`REPEATABLEREAD`未完全解決(選項A錯誤);僅`SERIALIZABLE`可避免所有并發(fā)問題(選項D錯誤)。34.關(guān)于MySQL索引,以下說法錯誤的是?【選項】A.對`WHEREnameLIKE'%abc%'`的查詢,全文索引可能提升性能B.主鍵索引是一種特殊的唯一索引C.添加索引一定會提高查詢速度D.`EXPLAIN`命令可用于分析索引使用情況【參考答案】C【解析】索引并非始終提升查詢速度。若表數(shù)據(jù)量小或?qū)懖僮黝l繁,索引可能降低性能(選項C錯誤)。選項A正確,`LIKE`模糊查詢前加通配符`%`時,普通索引失效但全文索引有效;選項B正確,主鍵索引隱含唯一性;選項D正確,`EXPLAIN`可顯示查詢執(zhí)行計劃。35.Python中執(zhí)行`cursor.execute("UPDATEstudentSETage=20WHEREid=1")`后,未調(diào)用`commit()`可能造成什么結(jié)果?【選項】A.數(shù)據(jù)庫立即更新,無需顯式提交B.事務(wù)自動回滾,更新無效C.更新僅在當前會話可見,其他連接不可見D.引發(fā)`ProgrammingError`異?!緟⒖即鸢浮緾【解析】MySQL的InnoDB引擎默認啟用事務(wù),執(zhí)行`UPDATE`后需顯式調(diào)用`mit()`提交事務(wù),否則更新僅對當前會話可見(選項C正確)。選項A錯誤,未提交則數(shù)據(jù)未持久化;選項B錯誤,事務(wù)不會自動回滾(除非連接關(guān)閉或顯式回滾);選項D錯誤,未提交不會引發(fā)異常。二、多選題(共35題)1.下列選項中,屬于Python中可變數(shù)據(jù)類型的有哪些?【選項】A.列表B.元組C.字典D.集合【參考答案】ACD【解析】1.列表(A):使用方括號`[]`定義,元素可修改、增刪,是可變數(shù)據(jù)類型;2.元組(B):使用圓括號`()`定義,創(chuàng)建后不可修改,屬于不可變類型;3.字典(C):基于鍵值對存儲,鍵不可變但值可修改,整體是可變的;4.集合(D):元素無序且可動態(tài)增刪,屬于可變類型。2.MySQL中,以下哪些操作可能導(dǎo)致表鎖?(假設(shè)使用InnoDB引擎)【選項】A.`SELECT*FROMtableWHEREid=1FORUPDATE`B.`ALTERTABLEtableADDCOLUMNnew_colINT`C.`UPDATEtableSETname='test'WHEREid=1`D.`CREATEINDEXidx_nameONtable(name)`【參考答案】BCD【解析】1.A選項使用行級鎖(FORUPDATE鎖定特定行),不會鎖表;2.B選項的`ALTERTABLE`修改表結(jié)構(gòu)需鎖定整張表;3.C選項的`UPDATE`若未命中索引可能退化為表鎖;4.D選項的`CREATEINDEX`創(chuàng)建索引需鎖定表以防止并發(fā)修改。3.在Python中,以下哪些語句會拋出異常?【選項】A.`int('3.14')`B.`[1,2][3]`C.`{}['key']`D.`10/0`【參考答案】BCD【解析】1.A:`int('3.14')`會拋出`ValueError`,因為字符串含非整數(shù)字符;2.B:索引越界觸發(fā)`IndexError`;3.C:訪問不存在的字典鍵引發(fā)`KeyError`;4.D:除零操作導(dǎo)致`ZeroDivisionError`。4.關(guān)于MySQL事務(wù)隔離級別,哪些描述是正確的?【選項】A.READUNCOMMITTED會導(dǎo)致臟讀B.REPEATABLEREAD可避免幻讀C.SERIALIZABLE通過表級鎖實現(xiàn)最高隔離D.MySQL默認隔離級別是READCOMMITTED【參考答案】AB【解析】1.A正確:READUNCOMMITTED允許讀取未提交數(shù)據(jù),可能臟讀;2.B正確:InnoDB引擎的REPEATABLEREAD通過間隙鎖避免幻讀;3.C錯誤:SERIALIZABLE使用行級鎖+范圍鎖,非表鎖;4.D錯誤:MySQL默認隔離級別為REPEATABLEREAD(非READCOMMITTED)。5.Python裝飾器可應(yīng)用于以下哪些場景?【選項】A.函數(shù)執(zhí)行時間統(tǒng)計B.權(quán)限驗證C.全局變量修改D.日志記錄【參考答案】ABD【解析】1.裝飾器用于增強函數(shù)功能而不修改其源碼:-A:通過`time`模塊統(tǒng)計函數(shù)耗時;-B:在調(diào)用函數(shù)前檢查用戶權(quán)限;-D:記錄函數(shù)調(diào)用日志;2.C錯誤:修改全局變量無需裝飾器,可直接使用`global`關(guān)鍵字。6.MySQL中,以下哪些屬于聚簇索引的特點?【選項】A.葉子節(jié)點存儲實際數(shù)據(jù)行B.一個表只能有一個聚簇索引C.主鍵默認創(chuàng)建聚簇索引D.查詢非主鍵列時效率更高【參考答案】ABC【解析】1.A正確:聚簇索引的葉子節(jié)點包含完整數(shù)據(jù);2.B正確:因數(shù)據(jù)按索引順序存儲,表僅支持一個聚簇索引;3.C正確:InnoDB中主鍵自動成為聚簇索引;4.D錯誤:聚簇索引僅對主鍵或按主鍵范圍查詢高效,非主鍵列需輔助索引。7.以下哪些Python代碼可以正確讀取MySQL數(shù)據(jù)?【選項】A.```pythonimportpymysqlconn=pymysql.connect(host='localhost',user='root')conn.execute("SELECT*FROMtest")```B.```pythonimportmysql.connectorcnx=mysql.connector.connect(database='test')cursor=cnx.cursor()cursor.execute("SELECT*FROMusers")```C.```pythonimportsqlite3conn=sqlite3.connect('test.db')conn.query("SELECT*FROMdata")```D.```pythonimportpymysqlwithpymysql.connect(host='')asconn:withconn.cursor()ascur:cur.execute("SELECTidFROMtable")```【參考答案】BD【解析】1.A錯誤:連接未指定數(shù)據(jù)庫,且`conn`無`execute`方法(應(yīng)為`cursor()`生成游標);2.B正確:使用`mysql.connector`模塊的標準流程;3.C錯誤:代碼使用SQLite庫而非MySQL;4.D正確:上下文管理器形式打開連接和游標,語法正確。8.MySQL聯(lián)合查詢與連接查詢的區(qū)別包括?【選項】A.UNION會去除重復(fù)行,JOIN不會B.UNION要求列數(shù)相同,JOIN無此限制C.UNION合并不同表的結(jié)果集,JOIN關(guān)聯(lián)表數(shù)據(jù)D.UNIONALL比JOIN執(zhí)行效率更高【參考答案】ABC【解析】1.A正確:UNION默認去重,JOIN保留所有關(guān)聯(lián)數(shù)據(jù);2.B正確:UNION要求列數(shù)、類型匹配,JOIN依據(jù)關(guān)聯(lián)條件;3.C正確:UNION縱向合并結(jié)果,JOIN橫向拼接列;4.D錯誤:效率取決于具體場景,二者無直接可比性。9.Python的SQL注入防范措施包括?【選項】A.使用ORM框架(如SQLAlchemy)B.拼接SQL時轉(zhuǎn)義特殊字符C.用參數(shù)化查詢替代字符串拼接D.限制數(shù)據(jù)庫用戶權(quán)限【參考答案】ACD【解析】1.A正確:ORM自動參數(shù)化SQL語句;2.B錯誤:手動轉(zhuǎn)義不可靠,易遺漏;3.C正確:參數(shù)化查詢(如`cursor.execute("SELECT*FROMtableWHEREid=%s",(id_val,))`)可防止注入;4.D正確:最小權(quán)限原則降低注入危害。10.MySQL中,以下哪些操作會隱式提交事務(wù)?【選項】A.執(zhí)行`CREATETABLE`語句B.執(zhí)行`COMMIT`語句C.執(zhí)行`ALTERUSER`命令D.執(zhí)行`STARTTRANSACTION`【參考答案】AC【解析】1.A正確:DDL語句(如CREATE/ALTERTABLE)自動提交當前事務(wù);2.B錯誤:COMMIT是顯式提交;3.C正確:賬戶管理語句(如ALTERUSER)觸發(fā)隱式提交;4.D錯誤:STARTTRANSACTION僅開啟新事務(wù),不提交。11.在Python中使用MySQL數(shù)據(jù)庫時,下列哪些操作可以有效預(yù)防SQL注入攻擊?【選項】A.使用字符串拼接方式動態(tài)生成SQL語句B.使用參數(shù)化查詢(如`cursor.execute("SELECT*FROMtableWHEREid=%s",(user_id,))`)C.對用戶輸入數(shù)據(jù)進行正則表達式過濾D.使用ORM框架(如SQLAlchemy)內(nèi)置的參數(shù)化機制【參考答案】B,C,D【解析】A錯誤:字符串拼接會直接將用戶輸入嵌入SQL語句,易被惡意輸入篡改邏輯(如`user_id="1;DROPTABLEusers;"`)。B正確:參數(shù)化查詢將輸入作為參數(shù)傳遞而非字符串,數(shù)據(jù)庫會區(qū)分指令與數(shù)據(jù)。C正確:正則過濾可剔除危險字符(如分號、注釋符)。D正確:ORM框架自動處理參數(shù)化,減少手動拼接風(fēng)險。12.關(guān)于Python的MySQL游標對象,下列描述正確的有哪些?【選項】A.`fetchone()`返回結(jié)果集的下一行,若無數(shù)據(jù)則返回`None`B.`fetchmany(size)`需指定每次獲取的行數(shù),否則默認返回全部結(jié)果C.游標創(chuàng)建時應(yīng)通過`connection.cursor()`指定`cursorclass=pymysql.cursors.DictCursor`以返回字典形式結(jié)果D.使用`WITH`語句管理游標可自動關(guān)閉游標(如`withconnection.cursor()ascursor:`)【參考答案】A,C,D【解析】A正確:`fetchone()`行為符合描述。B錯誤:`fetchmany()`默認返回1行,需顯式傳入`size`參數(shù)(如`cursor.fetchmany(5)`)。C正確:`DictCursor`使每行以字典形式呈現(xiàn)(鍵為字段名)。D正確:`WITH`語句確保游標結(jié)束時自動釋放資源。13.在MySQL事務(wù)處理中,以下Python代碼片段哪些能確保事務(wù)的原子性?【選項】A.```pythontry:cursor.execute("UPDATEaccountSETbalance=balance-100WHEREuser_id=1")cursor.execute("UPDATEaccountSETbalance=balance+100WHEREuser_id=2")mit()except:connection.rollback()```B.```pythonconnection.autocommit(False)cursor.execute("STARTTRANSACTION")cursor.execute("...SQL1...")cursor.execute("...SQL2...")mit()```C.```pythonwithconnection.cursor()ascursor:cursor.execute("...SQL1...")cursor.execute("...SQL2...")mit()```D.```pythonconnection.begin()cursor.execute("...SQL1...")cursor.execute("...SQL2...")connection.rollback()#無論是否異常均回滾```【參考答案】A,B【解析】A正確:`try-except`中顯式提交或回滾,保證操作全成功或全失敗。B正確:關(guān)閉自動提交后顯式開啟事務(wù)并提交,符合原子性。C錯誤:未關(guān)閉自動提交時,`WITH`塊內(nèi)操作可能已自動提交。D錯誤:強制回滾違反原子性(應(yīng)僅在異常時回滾)。14.關(guān)于MySQL索引優(yōu)化,下列哪些說法正確?【選項】A.對`WHERE`條件中的字段建立索引可加快查詢速度B.聯(lián)合索引的字段順序應(yīng)遵循“最左前綴匹配”原則C.`LIKE'%keyword%'`模糊查詢無法利用索引D.主鍵字段默認包含唯一索引,但唯一索引不一定是主鍵【參考答案】A,B,C,D【解析】A正確:索引顯著加速條件篩選。B正確:如聯(lián)合索引`(a,b,c)`,查詢條件需包含`a`或`a,b`等才生效。C正確:前導(dǎo)通配符`%`導(dǎo)致全表掃描。D正確:主鍵必然是唯一索引,但唯一索引允許空值且可存在多個。15.以下哪些操作會導(dǎo)致Python的MySQL連接中斷?【選項】A.執(zhí)行`connection.close()`B.服務(wù)器端`wait_timeout`超時C.網(wǎng)絡(luò)波動導(dǎo)致TCP連接斷開D.執(zhí)行`cursor.close()`【參考答案】A,B,C【解析】A正確:`close()`顯式關(guān)閉連接。B正確:MySQL服務(wù)端默認8小時無操作會斷開連接。C正確:網(wǎng)絡(luò)故障直接終止連接。D錯誤:關(guān)閉游標不影響連接狀態(tài)。16.在Python中執(zhí)行批量插入數(shù)據(jù)到MySQL時,哪些方法能提高效率?【選項】A.使用`executemany()`一次插入多行數(shù)據(jù)B.每條插入語句單獨執(zhí)行`execute()`并立即提交C.拼接單個SQL語句插入多值(如`INSERTINTOtableVALUES(1),(2),(3)`)D.在事務(wù)中批量執(zhí)行插入后再統(tǒng)一提交【參考答案】A,C,D【解析】A正確:`executemany()`減少網(wǎng)絡(luò)往返次數(shù)。B錯誤:頻繁提交增加I/O開銷。C正確:單語句多值插入效率更高。D正確:事務(wù)內(nèi)批量提交減少日志寫入次數(shù)。17.下列哪些情況適合使用MySQL的存儲過程?【選項】A.需要減少網(wǎng)絡(luò)傳輸,將復(fù)雜邏輯移至數(shù)據(jù)庫端執(zhí)行B.對事務(wù)一致性要求極高的銀行業(yè)務(wù)操作C.頻繁調(diào)用的簡單查詢(如根據(jù)ID查用戶名)D.動態(tài)生成SQL語句的場景(如根據(jù)輸入條件拼接查詢)【參考答案】A,B【解析】A正確:存儲過程在服務(wù)端執(zhí)行,避免傳輸大量中間數(shù)據(jù)。B正確:存儲過程可封裝事務(wù)邏輯確保原子性。C錯誤:簡單查詢直接執(zhí)行SQL更高效。D錯誤:存儲過程不適合動態(tài)SQL(需用預(yù)處理語句)。18.關(guān)于Python連接MySQL時的字符集設(shè)置,下列哪些操作可避免亂碼?【選項】A.連接參數(shù)中指定`charset='utf8mb4'`B.創(chuàng)建數(shù)據(jù)庫時設(shè)置默認字符集為`utf8mb4`C.在Python代碼中統(tǒng)一使用`str`類型處理文本D.執(zhí)行`SETNAMESutf8mb4`語句【參考答案】A,B,D【解析】A正確:連接層指定字符集確保編解碼一致。B正確:數(shù)據(jù)庫字符集需與連接參數(shù)匹配。C錯誤:Python3中`str`為Unicode,但需與數(shù)據(jù)庫字符集轉(zhuǎn)換。D正確:`SETNAMES`顯式設(shè)置客戶端字符集。19.下列哪些屬于MySQL的日志文件類型?【選項】A.二進制日志(Binlog)B.錯誤日志(ErrorLog)C.慢查詢?nèi)罩荆⊿lowQueryLog)D.事務(wù)日志(InnoDBRedoLog)【參考答案】A,B,C,D【解析】A正確:Binlog用于主從復(fù)制和數(shù)據(jù)恢復(fù)。B正確:錯誤日志記錄啟動、運行問題。C正確:慢查詢?nèi)罩静东@超時查詢。D正確:RedoLog保證事務(wù)持久性。20.以下哪些操作可以在Python中安全關(guān)閉MySQL連接?【選項】A.```pythontry:cursor.close()connection.close()exceptExceptionase:print(e)```B.```pythonifconnection.open:connection.close()```C.```pythonwithconnection:cursor=connection.cursor()cursor.execute("...")```D.```pythonconnection.close()cursor.close()```【參考答案】A,C【解析】A正確:顯式關(guān)閉游標和連接,異常處理增強健壯性。B錯誤:`connection.open`非標準屬性(應(yīng)使用`connection.ping(reconnect=False)`判斷)。C正確:`WITH`語句自動管理連接生命周期。D錯誤:未處理可能的異常(如連接已關(guān)閉)。21.在使用Python連接MySQL數(shù)據(jù)庫時,以下關(guān)于游標對象操作的描述中,**正確的**是?【選項】A.使用`execute(sql)`執(zhí)行SELECT查詢后,可以通過`fetchone()`逐條獲取結(jié)果B.`execute(sql)`方法可同時用于執(zhí)行INSERT和SELECT語句C.使用`fetchall()`會一次性返回所有結(jié)果,可能因數(shù)據(jù)量過大導(dǎo)致內(nèi)存溢出D.游標的`description`屬性可獲取查詢結(jié)果集的列名和類型信息【參考答案】ABCD【解析】A.正確。`fetchone()`可逐行獲取查詢結(jié)果,適合大數(shù)據(jù)量場景。B.正確。`execute()`是通用執(zhí)行方法,支持所有SQL操作類型。C.正確。若結(jié)果集過大,`fetchall()`會直接加載到內(nèi)存,存在溢出風(fēng)險。D.正確。`description`返回包含列名、類型等的元組列表,常用于動態(tài)解析結(jié)果。22.關(guān)于Python中MySQL事務(wù)處理的描述,**正確的**組合是?1.執(zhí)行`STARTTRANSACTION`后需顯式調(diào)用`commit()`提交2.默認自動提交模式下,INSERT會立即生效3.`rollback()`可撤銷未提交的所有操作4.異常處理中應(yīng)在`finally`塊關(guān)閉連接【選項】A.僅1、2、3B.僅2、3、4C.1、2、3、4D.僅1、4【參考答案】B【解析】1.錯誤。PythonDB-API默認關(guān)閉自動提交時需顯式`commit()`,但`STARTTRANSACTION`非必需語法。2.正確。MySQLConnector默認關(guān)閉自動提交,若啟用則INSERT立即生效。3.正確。`rollback()`可回滾未提交操作。4.正確。`finally`確保任何情況下均釋放資源。23.以下哪些操作可能導(dǎo)致SQL注入風(fēng)險?【選項】A.使用字符串拼接構(gòu)建SQL語句:`f"SELECT*FROMusersWHEREname='{user_input}'"`B.參數(shù)化查詢:`cursor.execute("SELECT*FROMusersWHEREname=%s",(user_input,))`C.直接執(zhí)行用戶輸入:`cursor.execute(user_input)`D.對用戶輸入轉(zhuǎn)義后拼接:`cursor.execute(f"SELECT*FROMusersWHEREname='{escape(user_input)}'"`【參考答案】ACD【解析】A.正確。直接拼接用戶輸入無法防御注入。B.錯誤。參數(shù)化查詢通過預(yù)編譯隔離數(shù)據(jù)與指令,安全。C.正確。未過濾的原始輸入執(zhí)行極危險。D.正確。部分轉(zhuǎn)義方法可能遺漏特殊字符,仍有風(fēng)險(如寬字節(jié)注入)。24.在MySQL查詢優(yōu)化中,以下哪些操作會導(dǎo)致全表掃描?【選項】A.對未建立索引的列使用`WHERE`條件B.使用`LIKE'%keyword%'`模糊查詢C.對索引列進行`NULL`值判斷:`WHEREcolISNULL`D.聯(lián)合索引中跳過最左列查詢【參考答案】ABCD【解析】A.正確。無索引列過濾需遍歷全表。B.正確。前導(dǎo)通配符`%`使索引失效。C.正確。NULL判斷無法利用B+樹索引結(jié)構(gòu)。D.正確。聯(lián)合索引需滿足最左匹配原則。25.關(guān)于Python數(shù)據(jù)庫連接池的**優(yōu)勢**包括?【選項】A.減少重復(fù)建立連接的開銷B.自動管理連接的回收與復(fù)用C.完全避免連接泄露問題D.支持多線程并發(fā)請求【參考答案】ABD【解析】A.正確。池化復(fù)用顯著降低連接創(chuàng)建耗時。B.正確。連接池自動回收閑置連接。C.錯誤。需配合`with`或顯式`close()`,否則仍可能泄露。D.正確。池化技術(shù)是并發(fā)場景的通用解決方案。26.下列哪些MySQL存儲引擎支持事務(wù)?【選項】A.InnoDBB.MyISAMC.MEMORYD.ARCHIVE【參考答案】A【解析】A.正確。InnoDB是唯一支持ACID事務(wù)的常用引擎。B.錯誤。MyISAM僅支持表鎖,無事務(wù)。C.錯誤。MEMORY引擎存儲在內(nèi)存,無持久化事務(wù)。D.錯誤。ARCHIVE適用于日志類只寫場景,不支持事務(wù)。27.以下Python異常處理中,**必須**捕獲的數(shù)據(jù)庫相關(guān)異常是?【選項】A.`mysql.connector.errors.IntegrityError`(主鍵沖突)B.`mysql.connector.errors.OperationalError`(連接失敗)C.`mysql.connector.errors.ProgrammingError`(SQL語法錯誤)D.`AttributeError`(對象屬性不存在)【參考答案】ABC【解析】A.必須。違反唯一約束等操作需明確處理。B.必須。網(wǎng)絡(luò)中斷或配置錯誤需重連或報警。C.必須。SQL編寫錯誤需記錄并終止執(zhí)行。D.錯誤。屬Python運行時錯誤,非數(shù)據(jù)庫特有異常。28.關(guān)于`WITH`上下文管理器管理MySQL連接,**正確的**描述是?【選項】A.退出`with`塊會自動提交事務(wù)B.退出`with`塊會自動關(guān)閉游標和連接C.發(fā)生異常時自動回滾未提交操作D.需在`with`內(nèi)部顯式調(diào)用`commit()`【參考答案】B【解析】A.錯誤。自動提交取決于連接配置,默認不自動提交未顯式`commit()`的數(shù)據(jù)。B.正確。上下文管理器確保資源釋放。C.錯誤。回滾需在`except`塊顯式觸發(fā)。D.錯誤。`with`僅管理資源生命周期,事務(wù)控制仍需手動編碼。29.在MySQL中創(chuàng)建索引時,**正確**的做法是?【選項】A.頻繁更新的列適合創(chuàng)建哈希索引B.對長文本字段使用前綴索引C.為所有WHERE條件列單獨創(chuàng)建索引D.多列排序查詢需建立聯(lián)合索引【參考答案】BD【解析】A.錯誤。InnoDB不支持哈希索引且頻繁更新列維護索引代價高。B.正確。前綴索引減少存儲并提升速度,如`INDEX(name(10))`。C.錯誤。過多索引降低寫性能,應(yīng)優(yōu)先選擇高頻過濾列。D.正確。聯(lián)合索引可優(yōu)化`ORDERBYcol1,col2`類查詢。30.以下哪些操作會導(dǎo)致MySQL表鎖定?【選項】A.`ALTERTABLE`添加列B.`SELECT...FORUPDATE`C.長期未提交的事務(wù)中執(zhí)行UPDATED.對MyISAM表執(zhí)行高并發(fā)INSERT【參考答案】ABCD【解析】A.正確。DDL語句通常鎖表。B.正確。行級鎖升級可能引起間隙鎖甚至表鎖。C.正確。未提交事務(wù)持有鎖可能阻塞其他操作。D.正確。MyISAM僅支持表級鎖,INSERT與SELECT互斥。31.在Python中使用pymysql模塊連接MySQL數(shù)據(jù)庫時,以下哪些參數(shù)是connect()方法的必需參數(shù)?A.hostB.userC.databaseD.password【選項】A.僅A、BB.僅A、B、DC.僅A、B、CD.A、B、C、D【參考答案】B【解析】1.`pymysql.connect()`方法中,`host`(數(shù)據(jù)庫地址)、`user`(用戶名)、`password`(密碼)是必需參數(shù);2.`database`(指定數(shù)據(jù)庫名)為可選參數(shù),若不指定可在后續(xù)通過`USE`語句切換。3.選項B正確覆蓋了所有必需參數(shù),選項D錯誤包含了非必需參數(shù)。32.以下關(guān)于MySQL游標對象方法的描述,哪些是正確的?A.`execute()`執(zhí)行后返回受影響的行數(shù)B.`fetchone()`返回單個元組,無數(shù)據(jù)時返回NoneC.`fetchall()`以元組列表形式返回所有結(jié)果D.`scroll()`可用于絕對或相對定位結(jié)果集【選項】A.A、B、CB.A、C、DC.B、C、DD.A、B、D【參考答案】C【解析】1.`execute()`返回受影響行數(shù)僅對INSERT/UPDATE/DELETE有效,查詢操作返回None(A錯誤);2.`fetchone()`無數(shù)據(jù)返回None(B正確);3.`fetchall()`返回元組列表(C正確);4.`scroll()`支持絕對定位`mode=absolute`和相對定位`mode=relative`(D正確)。33.在Python中實現(xiàn)MySQL事務(wù)時,下列哪些操作可確保數(shù)據(jù)一致性?A.執(zhí)行`STARTTRANSACTION`后提交B.通過`conn.autocommit(False)`關(guān)閉自動提交C.捕獲異常后調(diào)用`conn.rollback()`D.使用`WITH`語句自動管理事務(wù)【選項】A.A、B、CB.B、C、DC.A、C、DD.全部【參考答案】D【解析】1.`STARTTRANSACTION`顯式開啟事務(wù)(A正確);2.`autocommit=False`關(guān)閉自動提交(B正確);3.異?;貪L保證原子性(C正確);4.`withconn.cursor()ascur:`可在上下文結(jié)束時自動提交或回滾(D正確)。34.Python與MySQL交互時,以下哪些情況可能引發(fā)數(shù)據(jù)類型轉(zhuǎn)換錯誤?A.將Python的None存入MySQL的NOTNULL字段B.將Python的datetime對象存入DATE類型字段C.將整數(shù)0存入TINYINTUNSIGNED字段D.將字符串"3.14"存入FLOAT字段【選項】A.A、BB.A、CC.A、DD.B、C【參考答案】B【解析】1.None無法插入NOTNULL字段(A正確);2.datetime對象可自動轉(zhuǎn)為MySQL的DATE/TIMESTAMP(B錯誤);3.TINYINTUNSIGNED范圍為0-255,0合法(C錯誤);4.字符串"3.14"需顯式轉(zhuǎn)換為浮點數(shù)(D正確)。注:根據(jù)MySQL寬松轉(zhuǎn)換特性,選項D在某些驅(qū)動下可能不報錯,但嚴格模式下會出錯。35.關(guān)于防止SQL注入攻擊,Python中可采取的有效措施包括:A.使用字符串拼接構(gòu)造SQL語句B.用`execute()`的參數(shù)化查詢C.對用戶輸入進行正則過濾D.使用ORM框架(如SQLAlchemy)【選項】A.A、BB.B、CC.B、DD.C、D【參考答案】C【解析】1.字符串拼接直接導(dǎo)致注入風(fēng)險(A錯誤);2.參數(shù)化查詢可轉(zhuǎn)義特殊字符(B正確);3.正則過濾可能遺漏邊緣情況(C不作為主要手段);4.ORM框架自動處理參數(shù)化(D正確)。三、判斷題(共30題)1.在Python的PyMySQL模塊中,使用fetchall()方法可以一次性獲取結(jié)果集中的所有記錄?!具x項】A.正確B.錯誤【參考答案】A【解析】fetchall()是PyMySQL游標的常用方法,用于返回查詢結(jié)果的所有行。該方法執(zhí)行后會將結(jié)果集以元組的形式全部加載到內(nèi)存中,適用于數(shù)據(jù)量較小的場景。2.MySQL中,通過游標的scroll()方法可以實現(xiàn)結(jié)果集的隨機訪問。【選項】A.正確B.錯誤【參考答案】B【解析】MySQL的游標默認不支持類似scroll()的隨機訪問操作,僅支持順序讀?。ㄈ鏵etchone())。若需隨機訪問,需將結(jié)果集存入列表或使用SQL語句重構(gòu)查詢實現(xiàn)。3.使用Python連接MySQL時,設(shè)置`autocommit=False`后,必須顯式調(diào)用commit()才能提交事務(wù)。【選項】A.正確B.錯誤【參考答案】A【解析】當關(guān)閉自動提交時(默認狀態(tài)),所有數(shù)據(jù)修改操作(INSERT/UPDATE/DELETE)需通過commit()提交生效,否則會被回滾。這是保證事務(wù)原子性的必要操作。4.在MySQL中,CHAR(10)和VARCHAR(10)字段類型存儲"abc"時占用的磁盤空間相同?!具x項】A.正確B.錯誤【參考答案】B【解析】CHAR(10)為定長類型,無論實際內(nèi)容長度,始終占用10字節(jié);VARCHAR(10)為變長類型,存儲"abc"僅占用3字節(jié)(加1字節(jié)長度標識),因此存儲空間更小。5.Python中使用execute()方法執(zhí)行帶參數(shù)的SQL語句時,應(yīng)優(yōu)先使用參數(shù)化查詢而非字符串拼接,以防止SQL注入?!具x項】A.正確B.錯誤【參考答案】A【解析】參數(shù)化查詢(如`cursor.execute("SELECT*FROMtableWHEREid=%s",(user_id,))`)會將輸入內(nèi)容自動轉(zhuǎn)義,避免惡意SQL代碼注入,屬于安全編程的必要實踐。6.MySQL的UNIQUE約束允許字段中包含多個NULL值。【選項】A.正確B.錯誤【參考答案】A【解析】UNIQUE約束要求非NULL值唯一,但允許多個NULL值存在(NULL被視為未知值,不參與唯一性比較)。需注意不同數(shù)據(jù)庫對此處理可能略有差異。7.在Python中,使用PyMySQL連接數(shù)據(jù)庫后,游標的description屬性可直接獲取查詢結(jié)果的列名?!具x項】A.正確B.錯誤【參考答案】A【解析】description屬性返回查詢結(jié)果每一列的元組信息,其中第一個元素為列名。例如`cursor.description[0][0]`可獲取首列名稱。8.HAVING子句的功能與WHERE子句完全一致,均可直接過濾數(shù)據(jù)行?!具x項】A.正確B.錯誤【參考答案】B【解析】WHERE作用于原始數(shù)據(jù)行過濾,HAVING用于對GROUPBY分組后的聚合結(jié)果進行過濾。例如`SELECTdept,AVG(salary)FROMempGROUPBYdeptHAVINGAVG(salary)>5000`正確,但替換為WHERE會報錯。9.MySQL的MyISAM存儲引擎支持事務(wù)處理,而InnoDB不支持。【選項】A.正確B.錯誤【參考答案】B【解析】InnoDB支持ACID事務(wù)和行級鎖,是事務(wù)安全型引擎;MyISAM僅支持表級鎖且無事務(wù)能力。通常建議使用InnoDB以滿足高并發(fā)和數(shù)據(jù)一致性需求。10.在數(shù)據(jù)庫設(shè)計中,第三范式(3NF)要求所有非主屬性必須直接依賴于主鍵,不能存在傳遞依賴?!具x項】A.正確B.錯誤【參考答案】A【解析】第三范式消除傳遞依賴。例如:若主鍵為學(xué)號,字段含“學(xué)院名稱”和“學(xué)院地址”,則“學(xué)院地址”傳遞依賴于學(xué)號,違反3NF,需拆分表結(jié)構(gòu)解決。11.在Python中,字符串和元組都屬于不可變對象,列表和字典屬于可變對象?!具x項】正確/錯誤【參考答案】正確【解析】1.不可變對象指對象創(chuàng)建后其內(nèi)容不可修改。2.Python中字符串、元組、整型等為不可變類型。3.列表和字典可通過append()、pop()等方法直接修改內(nèi)容,屬于可變類型。12.MySQL中的ASC索引默認按升序排序,而DESC索引按降序排序。【選項】正確/錯誤【參考答案】錯誤【解析】1.MySQL默認所有索引均為升序(ASC)存儲。2.DESC關(guān)鍵字在索引定義中僅被解析但被忽略,實際仍按升序存儲。3.排序行為由查詢語句中的ORDERBY子句控制,與索引定義順序無關(guān)。13.Python的with語句可以自動管理文件對象的關(guān)閉,即使發(fā)生異常也能安全釋放資源?!具x項】正確/錯誤【參考答案】正確【解析】1.with語句通過上下文管理器實現(xiàn)資源管理。2.打開文件使用with后,無論代碼塊是否報錯,文件都會在退出時自動關(guān)閉。3.等價于try-finally結(jié)構(gòu),但代碼更簡潔。14.MySQL中,主鍵約束默認包含唯一性約束和非空約束。【選項】正確/錯誤【參考答案】正確【解析】1.主鍵(PRIMARYKEY)強制字段值唯一且不允許為NULL。2.唯一約束(UNIQUE)僅保證唯一性,但允許NULL值(除非顯式添加NOTNULL)。3.主鍵的本質(zhì)是“唯一+非空”的組合約束。15.Python的lambda函數(shù)可以包含多條語句,例如循環(huán)和條件分支?!具x項】正確/錯誤【參考答案】錯誤【解析】1.lambda函數(shù)為匿名函數(shù),僅支持單行表達式。2.不能包含return、if-else等多語句結(jié)構(gòu)(但可使用三元表達式)。3.復(fù)雜邏輯需通過def定義普通函數(shù)實現(xiàn)。16.MySQL的InnoDB存儲引擎支持事務(wù)和外鍵約束,而MyISAM不支持。【選項】正確/錯誤【參考答案】正確【解析】1.InnoDB提供ACID事務(wù)特性,支持COMMIT和ROLLBACK操作。2.MyISAM不支持事務(wù),僅支持表級鎖,且無外鍵約束功能。3.外鍵約束需在InnoDB引擎下生效,用于保證數(shù)據(jù)引用完整性。17.Python中,finally塊中的代碼無論是否發(fā)生異常都會被執(zhí)行?!具x項】正確/錯誤【參考答案】正確【解析】1.try-except-finally結(jié)構(gòu)中,finally塊為必執(zhí)行代碼區(qū)域。2.無論try塊是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論