SQLZOO 是個免費在線學習 SQL的網站資源,有提供繁體中文版本。
採互動式教學,可在上面運行 SQL執行查看,更快的掌握 SQL技能。
內文主要為記錄學習歷程、解答整理。第一次寫文,請多擔待囉( ͡⚆ ͜ʖ ͡⚆)
篇章I - SELECT basics
主要使用SELECT語句與 world Table。
Q1.顯示德國 Germany 的人口。
SELECT population FROM world
WHERE name = ‘Germany’;
Q2. 查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示其名字和人均國內生產總值(GDP/population)
SELECT name, gdp/population FROM world
WHERE area >= 5000000;
Q3. 顯示“Ireland愛爾蘭”,“Iceland冰島”,“Denmark丹麥”的國名和人口。
SELECT name, population FROM world
WHERE name IN (‘Ireland’, ‘Iceland’, ‘Denmark’);
Q4. 顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。
SELECT name, area FROM world
WHERE area BETWEEN 200000 AND 250000;
接著進入進階的 SELECT names 教程,一樣使用 world Table。
https://sqlzoo.net/wiki/SELECT_names/zh
Q1. 找出以 Y 為開首的國家。
SELECT name FROM world
WHERE name LIKE ‘Y%’;
Q2. 找出以 Y 為結尾的國家。
SELECT name FROM world
WHERE name LIKE ‘%y’;
Q3. 找出所有國家,其名字包括字母x。
SELECT name FROM world
WHERE name LIKE ‘%x%’;
Q4. 找出所有國家,其名字以 land 作結尾。
SELECT name FROM world
WHERE name LIKE ‘%land’;
Q5. 找出所有國家,其名字以 C 作開始,ia 作結尾。
SELECT name FROM world
WHERE name LIKE ‘C%ia’;
Q6. 找出所有國家,其名字包括字母oo。
SELECT name FROM world
WHERE name LIKE ‘%oo%’;
Q7. 找出所有國家,其名字包括三個或以上的a。
SELECT name FROM world
WHERE name LIKE ‘%a%a%a%’;
Q8. 找出所有國家,其名字以t作第二個字母。
SELECT name FROM world
WHERE name LIKE ‘_t%’
ORDER BY name;
Q9. 找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。
SELECT name FROM world
WHERE name LIKE ‘%o__o%’;
Q10. 找出所有國家,其名字都是 4 個字母的。
SELECT name FROM world
WHERE name LIKE ‘____’;
Harder Questions Below (More challenging)
Q11. 顯示所有國家名字,其首都和國家名字是相同的。
SELECT name FROM world
WHERE name = capital;
Q12. 顯示所有國家名字,其首都是國家名字加上”City”。
SELECT name FROM world
WHERE capital LIKE CONCAT(name, ‘ City’);
Q13. 找出所有首都和其國家名字,而首都要有國家名字中出現。
WAY1:
SELECT capital, name FROM world
WHERE capital LIKE CONCAT(name, ‘%’);
WAY2:
SELECT capital, name FROM world
WHERE LOCATE (name, capital);
Q14. 找出所有首都和其國家名字,而首都是國家名字的延伸。
應顯示 Mexico City, 因它比其國名 “Mexico” 長。
不應顯示 Luxembourg, 因它的首都和國名是相同的。
SELECT name, capital FROM world
WHERE capital LIKE CONCAT(name, ‘_%’);
Q15. 顯示國家名字, 及其延伸詞, 如首都是國家名字的延伸。 “Monaco-Ville”是合併國家名字 “Monaco” 和延伸詞 ”-Ville”.
SELECT name, REPLACE(capital, name, ‘’) FROM world
WHERE capital LIKE CONCAT(name, ‘_%’);
心得
正透過SQLZOO線上資源自學中。SQL比想像中更簡單有趣,把主要的基本語法釐清,多練習靈活運用,相信大家能成為資料庫高手。
希望有幫助到也正在學習路上的你
歡迎任何對文章的建議,如果喜歡也可以幫我拍手鼓勵!