資料庫基礎
以三選一題型學習關聯式資料庫的表格與鍵、SQL的搜尋/彙總/連結/子查詢、正規化與E-R圖、交易與ACID特性、並行執行的問題與隔離等級、鎖與死結、故障復原、索引,以及NoSQL。
—你的答對率
0 / 40已作答的題目
資料庫基礎的重點
無論是網路商店的庫存還是銀行的帳戶,許多資訊系統都把資料交給資料庫保管。關聯式資料庫以表格的形式保存資料,以主鍵與外鍵把表格彼此連結,並以SQL這種語言取出或改寫所需的資料。
本單元以小型表格為例,一邊計算結果,一邊學習以SQL的SELECT敘述搜尋、以GROUP BY與HAVING彙總、內部連結與外部連結,以及子查詢。也介紹正確分割表格的正規化與E-R圖、交易的ACID特性、遺失更新與髒讀等並行執行的問題與隔離等級、鎖與死結、利用日誌從故障中復原、索引的運作方式與NoSQL的概念,有助於準備資訊相關證照考試的資料庫領域。
資料庫基礎的題目列表(40題)
- 在關聯式資料庫的用語中,相當於表格(關聯)中一筆資料列的是下列何者?
- 在關聯式資料庫的表格中,被指定為主鍵的欄位(或欄位組合)必須滿足的條件是下列何者?
- 在員工表格(員工編號, 電子郵件, 姓名, 部門)中,員工編號與電子郵件每位員工都不同,且不會是NULL。姓名與部門可能與其他員工相同。列出此表格所有候選鍵的是下列何者?
- 選課表格(學號, 課程編號, 成績)記錄哪位學生修了哪門課、成績如何。一位學生會修多門課,一門課也有多位學生修。若同一學生不會重複登記同一門課,此表格適當的主鍵是下列何者?
- 客戶表格(客戶編號, 姓名)的主鍵是客戶編號,訂單表格(訂單編號, 客戶編號)的客戶編號被定義為參照客戶表格客戶編號的外鍵。客戶表格中只有客戶編號為'C1'與'C2'的資料列。在此狀態下執行 INSERT INTO 訂單 VALUES ('O9', 'C5') 的結果,下列何者正確?
- SQL敘述可分為資料定義語言(DDL)、資料操作語言(DML)與資料控制語言(DCL)。屬於DDL的是下列何者?
- 商品表格中有(商品名稱, 價格)為(筆, 120)、(筆記本, 250)、(橡皮擦, 80)、(資料夾, 300)、(尺, 150)的5筆資料列。依序列出 SELECT 商品名稱 FROM 商品 WHERE 價格 >= 150 ORDER BY 價格 DESC 所傳回之資料列的是下列何者?
- 員工表格的部門欄位中,由上而下依序為 業務、研發、業務、總務、研發、業務(共6筆)。SELECT DISTINCT 部門 FROM 員工 的結果有幾筆資料列?
- 在SQL中不加WHERE子句執行 DELETE FROM 員工,結果何者正確?
- 考試表格的分數欄位中有 80、NULL、70、90 共4個值(NULL表示未應考)。SELECT AVG(分數) FROM 考試 的結果是下列何者?
- 成績表格的分數欄位中有 50、NULL、70、NULL、90、30 共6個值。依序列出 SELECT COUNT(*), COUNT(分數), AVG(分數) FROM 成績 之結果的是下列何者?
- 想從員工表格(員工編號, 部門, 薪資)中,求出各部門平均薪資在300以上的部門及其平均薪資。正確的SQL敘述是下列何者?
- 銷售表格(門市, 金額)中有(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900)共7筆資料列。SELECT 門市, SUM(金額) FROM 銷售 GROUP BY 門市 HAVING SUM(金額) >= 1000 的結果有幾筆資料列?
- 員工表格(姓名, 部門, 薪資)有8筆資料列,各部門的薪資為:業務 320、280、350,研發 400、310,總務 260、300,企劃 330。SELECT 部門, COUNT(*) FROM 員工 WHERE 薪資 >= 300 GROUP BY 部門 HAVING COUNT(*) >= 2 的結果有幾筆資料列?
- 員工表格(員工編號, 姓名, 部門編號)有4筆資料列,部門編號依序為10、20、10、NULL。部門表格(部門編號, 部門名稱)有部門編號為10、20、30的3筆資料列。SELECT 員工.姓名, 部門.部門名稱 FROM 員工 INNER JOIN 部門 ON 員工.部門編號 = 部門.部門編號 的結果有幾筆資料列?
- 員工表格(員工編號, 姓名, 部門編號)有5筆資料列,部門編號依序為10、20、10、NULL、NULL。部門表格(部門編號, 部門名稱)有部門編號為10、20、30的3筆資料列。SELECT 部門.部門名稱, 員工.姓名 FROM 部門 LEFT OUTER JOIN 員工 ON 部門.部門編號 = 員工.部門編號 的結果有幾筆資料列?
- 表格R的欄位x有值為 1、1、2、3 的4筆資料列,表格S的欄位x有值為 1、1、2、4 的4筆資料列。SELECT * FROM R INNER JOIN S ON R.x = S.x 的結果有幾筆資料列?
- 客戶表格(客戶編號, 姓名)中有(C1, 青木)、(C2, 井上)、(C3, 上田)、(C4, 江藤)共4筆資料列。訂單表格(訂單編號, 客戶編號, 金額)中有(O1, C1, 3000)、(O2, C2, 8000)、(O3, C1, 6000)、(O4, C3, 2000)、(O5, C2, 9000)共5筆資料列。SELECT 姓名 FROM 客戶 WHERE 客戶編號 IN (SELECT 客戶編號 FROM 訂單 WHERE 金額 > 5000) 的結果有幾筆資料列?
- 想從客戶表格(客戶編號, 姓名)與訂單表格(訂單編號, 客戶編號, 金額)中,求出從未下過訂單之客戶的姓名。正確的SQL敘述是下列何者?
- 關於關聯式資料庫的檢視表,下列敘述何者正確?
- 將關聯式資料庫的表格正規化,主要目的是下列何者?
- 訂單表格(訂單編號, 商品編號, 數量, 客戶編號, 客戶名稱)的主鍵為{訂單編號, 商品編號},函數相依為 {訂單編號, 商品編號} → 數量、訂單編號 → 客戶編號、客戶編號 → 客戶名稱。將此表格正規化到第三正規化(3NF)的結果,下列何者正確?
- 員工表格(員工編號, 姓名, 部門代碼, 部門名稱)的主鍵為員工編號,每個欄位都只有一個值。函數相依為 員工編號 → 姓名、員工編號 → 部門代碼、部門代碼 → 部門名稱。此表格的正規化形式,下列何者正確?
- 在以讀取與彙總為主的資料庫中,有時會刻意把正規化後的表格合併成一個,讓相同資料重複保存(反正規化)。此設計的優點與缺點組合,下列何者正確?
- 在E-R圖中,學生與課程之間有「一位學生修多門課,一門課有多位學生修」的多對多關係。以關聯式資料庫的表格實現此關係的適當方法是下列何者?
- 在帳戶表格中開始一筆交易,執行從帳戶A的餘額減去300的UPDATE,以及在帳戶B的餘額加上300的UPDATE。之後執行ROLLBACK而非COMMIT。帳戶表格會變成怎樣?
- 在交易應具備的ACID特性中,「從帳戶A扣款並存入帳戶B的轉帳處理,即使途中發生故障,也只會是兩者都完成或完全不進行」的性質是下列何者?
- 庫存表格中某商品的庫存數為10。交易T1讀出庫存數後寫入減3的值,T2讀出庫存數後寫入減5的值。若不加鎖,依T1讀取、T2讀取、T1寫入、T2寫入的順序執行,最後的庫存數為多少?
- 在同時執行交易時發生的問題中,下列何者正確說明了髒讀(Dirty read)?
- 交易T1執行 SELECT COUNT(*) FROM 訂單 WHERE 金額 >= 1000,結果為8筆。緊接著T2以INSERT新增一筆金額2000的訂單並提交。T1再次執行相同的SELECT敘述,結果變為9筆。這個現象是下列何者?
- 在SQL標準規格所定義的隔離等級中,關於READ COMMITTED下可能發生之現象的組合,下列何者正確?
- 交易T1對某筆資料列加上共享鎖並正在讀取。T2對這筆資料列要求共享鎖,T3要求排他鎖。在T1解除鎖之前的期間,下列何者正確?
- 關於交易的並行控制所使用的兩階段鎖定(2PL),下列敘述何者正確?
- 交易T1對資料列A加上排他鎖後要求資料列B的鎖,T2對資料列B加上排他鎖後要求資料列A的鎖,結果兩者都無法繼續。DBMS偵測到這個狀態時,一般的處理方式是下列何者?
- 許多DBMS在更新資料時,會把更新內容記錄在日誌中,並在寫入資料庫本體之前,先把日誌寫入非揮發性儲存裝置(WAL:預寫式日誌)。採用此方式的主要理由是下列何者?
- 有交易T1~T5,在發生故障前取了一次檢查點。T1在檢查點之前開始並提交。T2與T3在檢查點之前開始,T2在檢查點之後、故障之前提交,T3在故障時尚未提交。T4與T5在檢查點之後開始,T4在故障前提交,T5尚未提交。故障後的復原中,需要使用日誌進行前滾(Rollforward)的交易是下列何者?
- 在有100萬筆資料列的會員表格之會員編號欄位上建立了B+樹索引。一般可預期的效果與代價組合,下列何者正確?
- 在有100萬筆資料列的日本會員表格中,考慮分別在會員編號(全部不同)、都道府縣(47種)、性別(2種,大約各半)欄位上建立B+樹索引。在WHERE子句中指定一個欄位的值進行搜尋時,索引效果可能最小的是哪個欄位?
- 在稱為NoSQL的資料庫中,關於鍵值(Key-value)型的特徵,下列何者一般而言正確?
- 關於在多台伺服器上放置資料副本的分散式資料庫,下列何者是對CAP定理的適當說明?
電腦系統的其他領域
- 電腦算術 IEEE 754、定點數、捨入誤差
- 機率、統計與等候理論 情形數、機率分布、估計與檢定、M/M/1
- 指令集與組合語言 RISC-V、定址模式、呼叫慣例
- 編譯器 語法分析、SSA、最佳化、暫存器配置
- 連結器與載入器與執行檔格式 ELF、符號解析、重定位、動態連結
- 作業系統與硬體 中斷、系統呼叫、分頁錯誤
- Linux與命令列基礎 Shell、檔案權限、管線、腳本
- 記憶體階層與效能 快取、替換策略、三種失誤
- 多核心與同步 MESI、原子指令、記憶體屏障
- GPU程式設計 warp、共享記憶體、合併存取、佔用率
- AI硬體與軟體堆疊 推論與訓練、量化、Roofline模型
- 機器學習基礎 學習類型、評估指標與神經網路
- 嵌入式與韌體 GPIO、UART/SPI/I2C、RTOS
- 硬體描述語言與驗證 Verilog、閂鎖、狀態機、測試平台
- 介面與匯流排規格 PCIe、USB、SerDes、CXL
- 電腦網路基礎 TCP/IP、子網路計算、DNS、TLS
- Web技術基礎 HTTP、Cookie、REST、CORS、快取
- 無線通訊基礎 調變、OFDM、MIMO與射頻電路
- 資訊安全基礎 加密、驗證、網頁攻擊與對策
- 資料結構與演算法 時間複雜度、搜尋、排序與圖
- 程式設計基礎(虛擬碼追蹤) 虛擬碼、追蹤、陣列與遞迴
- C語言基礎 指標、記憶體、未定義行為
- 軟體開發與專案管理 開發流程、測試、時程與成本管理
- 經營策略與會計基礎 會計、損益兩平點、經營策略、行銷
- IT服務管理與系統稽核 SLA、事件與問題、稽核與內部控制
- 系統架構與可靠度設計 備援、RAID、備份與雲端
- 雲端與容器基礎 Docker、Kubernetes、共同責任模型、IaC
- 效能評估與效能剖析 阿姆達爾定律、CPI、瓶頸
- 硬體安全 旁路攻擊、安全開機、TEE、PUF
- 電源管理(軟體控制) DVFS、電源閘控、睡眠狀態