後端技術考古題-資料庫篇(下)

更新於 2024/01/15閱讀時間約 6 分鐘

※ 資料庫與 SQL

※ 題目:

  1. 請寫出 SQL 讀取 people table 中所有 gender 是 M 而且 age 大於 18 的資料。

※ 解答:

SELECT *					
FROM people
WHERE gender = 'M' AND age > 18

※ 說明:
這個查詢使用 SELECT 來選擇所有欄位(*表示所有),FROM 用於指定表名(在這裡是 people)
,而 WHERE 子句則用於指定篩選條件,以滿足 gender 為 "M" 且 age 大於 18



  1. 什麼情況要加入 index 索引?

※ 解答:

何謂資料庫索引

「索引 (indexes)」是資料庫提供的一個屬性之一。索引( index )就像是書的目錄,可以快速地找到內容所在的位置,目的是為了提高查詢速度以資料庫來說,不使用索引的話,就必須從第一條紀錄開始比對,直到找到符合的值為止。如果表格的規模非常大,就會讓查詢速度非常慢,因此一張好的資料表要有相對應的索引來幫助搜尋。

添加索引的情況:

  1. 頻繁的查詢操作:如果某個欄位經常被用於查詢,這個欄位上建立索引可以提高查詢效能。
  2. 唯一性約束:確保某個欄位的值是唯一的時候,可以在這個欄位上建立唯一索引。
  3. 排序和分組操作:經常對某個欄位進行order by , group by這種所謂排序或分組,則在該欄位上建立索引可以加速這些操作。
  4. 外鍵關係:在外鍵欄位上建立索引有助於提高查詢的效能,尤其是涉及到 JOIN 操作的時候。
  5. 範圍查詢:執行帶有範圍條件的查詢時,例如 BETWEEN 或 IN,在相應的欄位上建立索引可以提高查詢效能。
  6. 大型資料表:執行查詢時,索引可以減少搜索所需的時間。



3. 什麼是 Transaction?什麼時候會用到?

※ 解答:

何謂Transaction:

Transaction,中文翻作交易或事務,是資料庫執行過程中的一個「邏輯單位」,一個 transaction 中包含多個對資料庫操作的行為,每個 transaction 有兩種可能的結局:全部執行成功 or 全部不執行(只要其中一個行為失敗就會發生「還原 (rollback)」,回復過程中的操作)。假如我們可以把一整組 SQL 操作包裝成一筆完整的交易,在執行 SQL 時必須要全部執行完成,否則寧願都不要執行。

raw-image

什麼時候會用到:

當需要確保一系列操作的原子性、一致性、隔離性和持久性時,就需要使用Transaction這有助於保證應用程序的正確運行,防止在不同步操作中出現故障或不一致的情況。

常見的應用場景:

1. 金融交易: 在金融應用中,如銀行轉帳、付款和提款等操作,需要確保資金的正確轉移,並防止出現不一致的狀態。

2. 訂單處理: 在電子商務系統中,當用戶下單時,需要確保相關庫存的扣減和訂單的生成是一個不可分割的操作,以保證庫存和訂單的一致性。

3. 預訂系統: 在預訂系統中,如機票預訂、酒店預訂等,需要確保座位或房間的狀態在操作中是一致的,以避免重複預訂。

4. 資料庫更新: 在對資料庫進行複雜的更新、插入或刪除操作時,為了確保這些操作的一致性,可以將它們放在一個交易中。

5. 系統管理: 在進行系統管理操作時,例如配置文件的修改,需要確保修改操作是完整的,防止出現系統配置的不一致。

  1. 多用戶並發操作: 當多個用戶同時訪問資料庫時,可能會發生並發問題,使用交易可以確保這些操作之間的隔離性,防止相互影響。



4. 如何下 SQL 做分頁?

※ 解答:

在網頁中表格資料的呈現最怕就是資料量大到幾千筆甚至到萬筆查詢Loading過久,造成Server負荷不來的情況。因此通常會做一些分頁減輕查詢耗費資源與時間成本。

在 SQL 中,你可以使用 OFFSETFETCHLIMITOFFSET 來實現分頁。以下是兩種常見的 SQL 分頁方法的示例:

  • 使用 OFFSET 和 FETCH (SQL Server, PostgreSQL, MySQL 8.0+)
SELECT column1, column2, ...
FROM your_table
ORDER BY your_order_column
OFFSET (page_number - 1) * page_size ROWS
FETCH NEXT page_size ROWS ONLY;

※ 說明:
your_table 是你的表格名稱。
your_order_column 是你想要排序的列。
page_number 是你希望獲取的頁數。
page_size 是每頁的行數
  • 使用 LIMIT 和 OFFSET (MySQL, SQLite)
SELECT column1, column2, ...
FROM your_table
ORDER BY your_order_column
LIMIT page_size OFFSET (page_number - 1) * page_size;

※ 說明:
your_table 是你的表格名稱。
your_order_column 是你想要排序的列。
page_number 是你希望獲取的頁數。
page_size 是每頁的行數


    全端網頁開發專業知識分享
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    ※什麼是資料 : 說明: 「資料」(information/data) 是網路應用程式的核心。 使用者分享的照片、電商販賣的產品,或是搜索引擎提供的餐廳評價都是資料。 主要特徵: 生活中任何基本的事實 (fact) 或是值 (value) 都可以被稱為資料。例如:你的名字、你的生日。 因
    建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
    緣起 在電子廠做了18年,從助理技術員變成高級技術員。原本只是個操作機台的檢驗員,目前的工作是負責品質管理。18年來也曾動過轉職的念頭,參加國家考試的高考、地方特考,結果就是名落孫山。為了增加自己的專業能力,提高自己的履歷能被看見的機會,也自費去學習專案管理和ISO 9001:2015 品質管理系
    隨著JavaScript課程的學習的最後階段, Twitter專案不只考驗平時課程所學的技能,也讓我們提前預習在職場上與人合作完成專案的經驗。
    為何會選擇記帳程式做專案? 網路上有很多各種記帳方式,用Excel方式來記帳士很多人熟悉的作法。但既然我已經學習了JavaScript這個程式語言,就想試看看如何藉由程式語言寫出一個簡易的記帳程式。 技術選擇方面 選擇Node.js是因為他是一個可以讓JavaScript 執行環境;我可以直接在電腦
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    ※什麼是資料 : 說明: 「資料」(information/data) 是網路應用程式的核心。 使用者分享的照片、電商販賣的產品,或是搜索引擎提供的餐廳評價都是資料。 主要特徵: 生活中任何基本的事實 (fact) 或是值 (value) 都可以被稱為資料。例如:你的名字、你的生日。 因
    建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
    緣起 在電子廠做了18年,從助理技術員變成高級技術員。原本只是個操作機台的檢驗員,目前的工作是負責品質管理。18年來也曾動過轉職的念頭,參加國家考試的高考、地方特考,結果就是名落孫山。為了增加自己的專業能力,提高自己的履歷能被看見的機會,也自費去學習專案管理和ISO 9001:2015 品質管理系
    隨著JavaScript課程的學習的最後階段, Twitter專案不只考驗平時課程所學的技能,也讓我們提前預習在職場上與人合作完成專案的經驗。
    為何會選擇記帳程式做專案? 網路上有很多各種記帳方式,用Excel方式來記帳士很多人熟悉的作法。但既然我已經學習了JavaScript這個程式語言,就想試看看如何藉由程式語言寫出一個簡易的記帳程式。 技術選擇方面 選擇Node.js是因為他是一個可以讓JavaScript 執行環境;我可以直接在電腦
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
    Thumbnail
    菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
    Thumbnail
    初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
    Thumbnail
    在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。
    Thumbnail
    這篇文章針對對好想工作室後端培訓(backend camp)有興趣的人,給他們一些申請建議。
    Thumbnail
    本篇文章介紹了好想工作室後端培訓(backend camp)可能會遇到的各種狀況。
    Thumbnail
    簡單介紹好想工作室。 好想工作室是一個在台南的「資訊聚落」,提供免費的軟體工程師培訓,目前位於台南火車站旁。
    Thumbnail
    嗨 我是森妮 上週讓大家投票下一篇文章,沒想到後端工程師篇壓倒性勝利 前端工程師篇不知道大家喜不喜歡!陸續在IG有收到私訊有不少關於後端工程師的問題,我只要有時間都會回應,也歡迎來跟我聊聊天 【後端工程師】 [工作流程] 團隊中的PM、SA與客戶進行需求確認 [學習路徑] >基礎概念與工具
    Thumbnail
    隨著全球啟動「淨零競逐」(Race to Zero),以及國際碳定價趨勢越來越盛行,行政院長蘇貞昌 8 月要求環保署積極辦理「溫室氣體減量及管理法」修法作業,不僅要納入 2050 淨零排放的減排目標,也要加速台灣碳定價制度的擬定。 蘇貞昌:台灣深受極端氣候衝擊,氣候行動不應落於人後 今年台灣面臨嚴
    Thumbnail
    本文使用網站的 FB 登入做示範 採用 Laravel 8 + Socialite 5 使用 Session 記錄狀態 不同版本可能會有些許語法及方法上的差異,請自行調整 前言 最近因為碰到需要實作 OAuth 第三方登入的需求,只好把之前隨便看看的東西撿回來研究並實作。不過我找到多數現存的中文文章
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
    Thumbnail
    菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
    Thumbnail
    初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
    Thumbnail
    在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。
    Thumbnail
    這篇文章針對對好想工作室後端培訓(backend camp)有興趣的人,給他們一些申請建議。
    Thumbnail
    本篇文章介紹了好想工作室後端培訓(backend camp)可能會遇到的各種狀況。
    Thumbnail
    簡單介紹好想工作室。 好想工作室是一個在台南的「資訊聚落」,提供免費的軟體工程師培訓,目前位於台南火車站旁。
    Thumbnail
    嗨 我是森妮 上週讓大家投票下一篇文章,沒想到後端工程師篇壓倒性勝利 前端工程師篇不知道大家喜不喜歡!陸續在IG有收到私訊有不少關於後端工程師的問題,我只要有時間都會回應,也歡迎來跟我聊聊天 【後端工程師】 [工作流程] 團隊中的PM、SA與客戶進行需求確認 [學習路徑] >基礎概念與工具
    Thumbnail
    隨著全球啟動「淨零競逐」(Race to Zero),以及國際碳定價趨勢越來越盛行,行政院長蘇貞昌 8 月要求環保署積極辦理「溫室氣體減量及管理法」修法作業,不僅要納入 2050 淨零排放的減排目標,也要加速台灣碳定價制度的擬定。 蘇貞昌:台灣深受極端氣候衝擊,氣候行動不應落於人後 今年台灣面臨嚴
    Thumbnail
    本文使用網站的 FB 登入做示範 採用 Laravel 8 + Socialite 5 使用 Session 記錄狀態 不同版本可能會有些許語法及方法上的差異,請自行調整 前言 最近因為碰到需要實作 OAuth 第三方登入的需求,只好把之前隨便看看的東西撿回來研究並實作。不過我找到多數現存的中文文章