LPIC 1 分科討論 – 105.3 SQL data management

前言

這系列文章是考試準備過程中就想撰寫的,主要原因是希望幫助其他考生可以免於繼續在已知問題跟試誤中耗時間。本節為 105.3 SQL data management ,原文考綱請參考官方網頁

105.3 SQL 資料的管理

  • 比重:2
  • 簡述: 考生應該要可以使用基本的 SQL 語句,進行查詢(query )或操作(manipulate )資料,同時考試目標還包含合併資料表或者合併子查詢(subselects)結果(例如join 語句)。
  • Description: Candidates should be able to query databases and manipulate data using basic SQL commands. This objective includes performing queries involving joining of 2 tables and/or subselects.

註解:subselects,暫譯子查詢。一個簡單但不嚴謹的說法,就是你在 SELECT 語句中的 WHERE 條件裡,再加上一個 SELECT 查詢作為條件,去得到條件更精確、範圍更狹窄的結果。subselects 應該是名詞,是指查詢得到的那些資料,子查詢本身的動作應該是 subquery。

關鍵綱要
  • 使用基本的 SQL 語句
  • 展現出基本的資料操作技巧
建議學會的知識點或程式
  • insert
  • update
  • select
  • delete
  • from
  • where
  • group by
  • order by
  • join

牛頭書的這個部分

這部份,牛頭書講的基本而扎實,如果你之前就曉得有資料庫這玩意,那麼牛頭書的這個部分應該不難,一個下午就可以把握起來。

它先從 SQL 本身是什麼,到簡單的啟動 MySQL 指令,提供一個淺顯的入門。而後面資料庫概論的地方也說明了各種基本名詞。但倘若你本來對資料庫沒概念的話,要啃下這裡會需要一點耐心,可能還需要多參考幾家的說法。

再後面,牛頭書就開始以 MySQL 為基礎,講解各個 SQL 操作指令及其動作。嗯 … 新手到這邊很可能會大大的頭暈,因為它幾乎完整的把螢幕上的輸出搬到紙本上,這可能導致你眼花撩亂,不知道哪些資訊才是重點。

放心,這個困擾在你稍微熟悉一點 MySQL 之後就不會存在,因為你知道哪些是該記住的指令,而哪些只是附帶的螢幕輸出訊息。不過總歸來說,看不懂就多找幾個參考資料交叉學習吧!

最後牛頭書會講集結(aggregate)或多表查詢,也就是關於 GROUP BY、 ORDER BY以及 JOIN 的簡單用法。

鳥哥的這個部分

嘿嘿…你很期待是吧?但是很不幸的,鳥哥剛剛好沒有討論 SQL 的章節。只有:

所以我們的學習方針

所以啦!先試試看牛頭書你看不看得懂,看不懂就快找資料。像是:

而用來練習的操作環境如果有問題,可以參考鳥哥的網頁

目前我看過的相關考題,絕大多數都是考指令,所以,設法弄懂所有指令及其格式為第一優先,相關的概念也都稍微學學,用來幫助自己記憶指令。

我的友情建議

這一節對有用過 SQL 資料庫的人很簡單,因為考試範圍並不需要學新概念,把 SQL 語句指令複習一下,確保不會忘記就可以了。

但是對於沒用過資料庫的人可能就要費點功夫,無論看牛頭書或者是任何教材,你弄懂資料庫都需要花一點功夫。如果你不弄懂觀念,那你會比較難理解 SQL 語句為什麼是那樣寫,死背是很痛苦的喔!XD (不是不可以啦! 其實也才十來句…)

另外,如果你比較習慣用 phpMyAdmin 這種介面來操作資料庫的話,你也需要花點功夫去記住真正的指令。別忘了,phpMyAdmin 其實最終還是把你的動作化為指令,下達給 MySQL。

我參考過的其他網頁

SQL語法教學

過時的考綱提醒

目前沒有看過。

考情補帖

不才在下我,在這準備了簡單的兩篇教學,第一篇可以幫助各位快速建立概念,關於資料庫是什麼?請參考:

第二篇是MySQL 的語法的大補帖,以 LPIC 102 的範圍為主,盡量都有給操作範例,這樣手邊沒有資料庫可以用的人應該都還是能掌握到用法:

指令彙整,考前專用

  1. CREATE DATABASE 資料庫名;
  2. CREATE TABLE 資料表名(欄位1 資料型態(限制), 欄位2 資料型態(限制) … 更多欄位);
  3. DROP DATABASE 資料庫名;
  4. DROP TABLE 資料表名;
  5. USE 資料庫名;
  6. INSERT INTO  資料表名(“欄位1“, “欄位2“, …)  VALUES (“內容1“, “內容2“, …);
  7. DELETE  FROM 資料表名 WHERE 條件;
  8. REPLACE INTO  資料表名(“欄位1“, “欄位2“, …)  VALUES (“內容1“, “內容2“, …);
  9. UPDATE 資料表名 SET (“欄位1“=”內容1“, “欄位1“=”內容1” ,…   WHERE 條件;
  10. SELECT 目標欄位 FROM 資料表名 WHERE 條件 LIMIT 資料筆數;
  11. ALTER TABLE 資料表名 ADD/CHANGE/MODIFY/DROP/RENAME 指定的資料結構;
  12. [你的 SQL  指令]  GROUP BY 欄位
  13. [你的 SQL  指令]  ORDER BY 欄位
  14. WHERE 條件、LIMIT 資料筆數。
  15. SELECT `資料表1`.`欄位名`, `資料表2`.`欄位名` FROM 資料表1 JOIN 資料表2 ON 條件 , JOIN 前面還可以加 LEFT/RIGHT/INNER/OUTER 等等關鍵字

文末註解:

我的翻譯是依據 信、達、雅為原則,我的翻譯重心是表達原文宗旨、傳達意思,因此不一定會逐句照翻,當然也不會逐字翻譯。如有相左的意見歡迎您在下面提出迴響。

目前以2013年的考綱為基準撰寫,未來若各位讀者發現考綱已經更動,歡迎在下面迴響! 即使我沒有馬上修改,也可以提醒到其他讀者。

You Might Also Like

2 Comments

  1. ca888亚洲城客户端

    hey,这篇文章内容本人感觉十分有意思,请问博主可以让我转走吗?我会保留原文来由的链接以及你的姓名.

    1. hank

      好的!
      感謝您的閱讀與興趣,也很高興能對您有幫助!

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料