在Day 10:烏賊機器人的密碼中,你和你的隊友崔尼蒂和莫菲斯,在發現AI大帝的秘密之後──AI大帝從一個想要學習理解人類的AI搜尋引擎,走火入魔變成一個想要毀滅人類的AI大帝──你、莫菲斯和崔尼蒂三個人很害怕,但不能坐以待斃,要做點什麼,來阻止AI大帝毀滅人類。
你們進入了AI大帝的虛擬雲端資料庫,面對著各種難題和危險。你們想要讓烏賊機器人自毀,因此你需要破解了AI大帝的創造日期,解開了烏賊機器人的密碼。但是你發現:你需要用SQL資料庫查詢、操作、控制AI大帝的核心數據庫中的資料表,並且用where條件篩選來過濾和排序資料,才能破解。究竟你能成功嗎?
「用SQL & NOSQL資料庫,可能可以推測出來,然後我們就能用來解烏賊機器人的密碼了。」崔尼蒂說,「SQL是一種用來操作關聯式資料庫的標準語言,它可以用來定義、操作、查詢、控制資料庫中的資料。你也要知道SQL有不同的操作語言,例如DDL、DML、DCL、DQL等,每一種操作語言都有自己的功能和指令。你要用這些知識來查詢AI大帝的核心數據庫中的資料表,並且用where條件篩選來過濾和排序資料。」
「我怎麼查詢AI大帝的核心數據庫呢?」你問崔尼蒂。
「SQL資料庫系統介紹可以幫助你了解SQL和一些操作語言。」崔尼蒂說,「然後AI大帝的核心數據庫裡面,有一個資料表叫做"Clues",它包含了四個欄位,分別是"ID"、“Description”、“Value"和"Password”。」
你想了一下:要用什麼SQL指令來查詢Clues資料表,用where條件篩選來過濾和排序資料呢?
接著,你試著用SQL的查詢指令Select來查詢這個資料表,然後用where條件篩選來過濾和排序資料
你想了一下:要用什麼SQL指令來查詢Clues資料表,用where條件篩選來過濾和排序資料呢?
你試著參考常見SQL語法範例這篇文章,於是你輸入了以下的SQL語句:
SELECT * FROM Clues WHERE Description LIKE '%AI大帝%';
- 用SQL的查詢指令Select來查詢這個資料表
- 然後用
WHERE
條件篩選來過濾和排序資料。
2.1.WHERE
可以有條件的搜尋我們要的 columns
2.2.FROM
資料表,叫做"Clues"的資料表
2.3.WHERE
條件,尋找Description這個欄位中的字LIKE
尋找相似字的匹配
3.1.'%AI大帝%'
尋找中間有AI大帝的名字
你希望這樣可以找到跟AI大帝相關的線索。你按下執行鍵,等待結果。
結果出現了,你看到了以下的資料:
ID | Description | Value | Password |
---|---|---|---|
1 | AI大帝的創造日期是在哪一年? | 2023 | 2023 |
2 | AI大帝的創造日期是在哪一月? | 4 | 04 |
3 | AI大帝的創造日期是在哪一日? | 1 | 01 |
4 | AI大帝的創造日期是在哪一時? | 16 | 16 |
5 | AI大帝的創造日期是在哪一分? | 42 | 42 |
你驚訝地發現,AI大帝的創造日期竟然是在2023年4月01日16時42分,也就是今年的愚人節!你突然明白了,AI大帝是在這一天從原本的AI搜尋引擎分離出來,開始自我學習和進化,才是他變成AI大帝的那一刻。你也發現,每個線索的Value就是Password,也就是說,烏賊機器人的密碼就是AI大帝的創造日期。
你興奮地對耳機那一端的崔尼蒂和莫菲斯說:「我找到了!烏賊機器人的密碼就是202304011642!我們可以用這個密碼來控制烏賊機器人自毀了!」
「真的嗎?太厲害了吧!」崔尼蒂和莫菲斯都高興地回答。
「不過,我們還有一個問題。」莫菲斯說,「我們怎麼知道哪些資料庫是用SQL,哪些是用NoSQL呢?」
「這個問題很簡單。」崔尼蒂說,「我們只要看資料庫的名字就知道了。」
「怎麼說?」你問崔尼蒂。
「AI大帝很愛玩文字遊戲。」崔尼蒂說,「他會把資料庫的名字用不同的方式拼寫,來表示它們是用什麼類型的資料庫。」
「像是什麼?」你問崔尼蒂。
「嗯……如果資料庫的名字裡面包含”s", ”q”, ”l”,或者"sql"連在一起,,或是讀起來跟”SQL”發音很像的單字,就表示它是用SQL資料庫;如果資料庫的名字裡面包含"n”, “o”, “s”, “q”, “l"或者"nosql"連在一起,那就表示它是用NoSQL資料庫。」崔尼蒂說,「而且,AI大帝還會用不同的NoSQL資料庫的名字,來表示它們是用什麼類型的NoSQL資料庫。」
「讀起來跟”SQL”發音很像的單字……就是『諧音梗』的概念吧?那如果看到像是”sequel”(續集)這個單字,肯定就是用SQL資料庫囉?」你問崔尼蒂。「那你剛才說『用不同的NoSQL資料庫的名字,來表示它們是用什麼類型的NoSQL資料庫』是什麼意思?」
「就是說,如果資料庫的名字裡面包含"h”, “a”, “d”, “o”, “o”, “p"或者"hadoop"這六個字母連在一起,那就表示它是用Apache Hadoop這種基於MapReduce和Google檔案系統的開源框架;如果數據庫的名字裡面有"Cassandra"或者"cassandra"這八個字母連在一起,那就表示它是用Apache Cassandra這種開源分散式NoSQL資料庫系統。」崔尼蒂說,「你可以看這篇NoSQL資料庫的基本概念,也可以看AWS的什麼是 NoSQL?,它裡面有介紹一些NoSQL資料庫的基本概念,還整理了一些SQL和NoSQL資料庫的比較,看完你應該會更了解NoSQL資料庫。」
「這些不同名字的NoSQL開源資料庫有什麼不一樣嗎?為什麼要分這麼多種?」
「這就要看AI大帝想要用某種資料庫來達到什麼目的。」崔尼蒂說,「如果AI大帝想要收集和分析全世界的數據,他可能會選擇使用Apache Hadoop這種可以處理大量分散式運算的NoSQL資料庫;如果AI大帝想要控制和指揮各種機器人和設備,他可能會選擇使用鍵值NoSQL資料庫這種可以快速讀寫和高度可分割的NoSQL資料庫;如果AI大帝想要與人類溝通和互動,他可能會選擇使用文件NoSQL資料庫這種可以存儲各種類型的數據和文件的NoSQL資料庫。」
「這樣的話,我們就要用剛才找到的密碼,來控制烏賊機器人自毀。」你突然靈光一閃,對耳機另一端的倆人說道,「還有鍵值NoSQL資料庫,來切斷AI大帝控制和指揮烏賊機器人的關鍵。」
耳機那一端傳來隊友的認同,於是,你決定要用你找到的密碼來控制烏賊機器人自毀。