本文會介紹SQL 基本語法, 進階查詢, 計算函式, 彙總函式 和表格連接的語法。
CREATE TABLE
CREATE TABLE table_name ( column_1 data_type, column_2 data_type, column_3 data_type );
CREATE TABLE celebs ( id INTEGER, name TEXT, age INTEGER );
CREATE TABLE celebs ( id INTEGER PRIMARY KEY, name TEXT UNIQUE, date_of_birth TEXT NOT NULL, date_of_death TEXT DEFAULT 'Not Applicable', );
DROP DATABASE
DROP DATABASE table_name;
INSERT INTO
INSERT INTO table_name (id, name, age) VALUES (1, 'Justin Bieber', 21); SELECT * FROM table_name;
SELECT
SELECT column_name FROM table_name;
SELECT * FROM table_name;
UPDATE
UPDATE celebs SET age = 22 WHERE id = 1;
ALTER TABLE
ALTER TABLE celebs ADD COLUMN twitter_handle TEXT;
ALTER TABLE celebs DROP COLUMN twitter_handle;
ALTER TABLE celebs ALTER COLUMN twitter_handle INTEGER;
ALTER TABLE celebs MODIFY COLUMN twitter_handle INTEGER;
ALTER TABLE celebs MODIFY twitter_handle INTEGER;
DELETE FROM
DELETE FROM celebs WHERE twitter_handle IS NULL;
查詢結果顯示 name, genre, year
SELECT name, genre, year FROM movies;
可以改變查詢結果的欄位名稱,但不會改掉資料表裡的欄位
SELECT imdb_rating AS 'IMDb' FROM movies;
去掉的重複的查詢結果
SELECT DISTINCT year FROM movies;
SELECT DISTINCT year, name FROM movies;
篩選資料用的
SELECT * FROM movies WHERE year > 2014;
:::danger
「等於」要特別注意,只有一個等號
可以在 WHERE 子句中使用 LIKE 運算子來進行模糊搜尋
SELECT * FROM movies WHERE name LIKE 'Se_en';
:::info
_ 代表任意字元
:::
SELECT * FROM movies WHERE name LIKE 'A%';
NULL 不能拿來用運算子進行比較,因此出現 IS NULL、IS NOT NULL 來判斷是否是 NULL。
SELECT name FROM movies WHERE imdb_rating IS NOT NULL;
可以在 WHERE 子句中使用 BETWEEN 運算子來篩選出特定範圍區間得值
篩選出 name 開頭為 ‘A’、‘B’、‘C’ 的結果
SELECT * FROM movies WHERE name BETWEEN 'A' AND 'D';
篩選出 year 在 1990 ~ 1999 區間的結果
SELECT * FROM movies WHERE year BETWEEN 1990 AND 1999;
:::warning
BETWEEN 兩個字串,會不包含結尾
BETWEEN 兩個數字,會包含結尾的數字
:::
SELECT * FROM movies WHERE year BETWEEN 1990 AND 1999 AND genre = 'romance';
SELECT * FROM movies WHERE genre = 'romance' OR genre = 'comedy';
用來排序結果
:::warning
如果 WHERE 存在,ORDER BY 永遠跟在 WHERE 後面
:::
用來限制查詢結果數量
SELECT * FROM movies ORDER BY imdb_rating DESC LIMIT 3;
:::warning
永遠放在查詢語法最後面
:::
:::info
不是所有 RDBMS(關聯式資料庫管理系統) 都有
:::
SQL 中的判斷式,可以用在顯示結果加上新欄位
:::info
CASE 通常在 SELECT 語句中
:::
SELECT name, CASE WHEN genre = 'romance' THEN 'Chill' WHEN genre = 'comedy' THEN 'Chill' ELSE 'Intense' END AS 'Mood' FROM movies;
計算指定欄位非空資料的總數
SELECT COUNT(*) FROM fake_apps WHERE price = 0;
加總指定欄位的值
SELECT SUM(downloads) FROM fake_apps;
求指定欄位的最大或最小值
SELECT MIN(downloads) FROM fake_apps;
求指定欄位的平均值
SELECT AVG(price) FROM fake_apps;
將指定資料四捨五入
SELECT ROUND(AVG(price), 2) FROM fake_apps;
用來搭配 SELECT 語句,將指定欄位中,相同資料的放在一組,以便計算函式以組為單位進行計算
:::info
GROUP BY 會出現在 WHERE 之後,ORDER BY 和 LIMIT 之前
:::
SELECT category, SUM(downloads) FROM fake_apps GROUP BY category;
GROUP BY 後面的參數可以接數字,從 1 開始,分別代表 SELECT 後面的第幾個值
SELECT category, price, AVG(downloads) FROM fake_apps GROUP BY 1, 2;
以上面的例子來說,GROUP BY 後面的 1、2 分別指向 category 和 price
與 WHERE 類似,不過他是針對 Group
:::info
HAVING 會出現在 GROUP BY 之後,ORDER BY 和 LIMIT 之前
:::
SELECT price, ROUND(AVG(downloads)), COUNT(*) FROM fake_apps GROUP BY price HAVING COUNT(*) > 10;
使用方法:JOIN 表格名稱 ON 連接欄位規則
連接後會自動補 NULL
SELECT * FROM orders JOIN customers ON orders.customer_id = customers.customer_id;
使用方法:INNER JOIN 表格名稱 ON 連接欄位規則
會自動將不符合連接欄位規則的部分捨棄,如下圖
SELECT COUNT(*) FROM newspaper JOIN online ON newspaper.id = online.id;
文章出處:BlackMaple’s Blog
Part 2 留存用戶分析~加入會員即可觀看,免費體驗一個月,活動請參考: https://blog.codeformarketing.co/subscribe-pressplay-dija/
Hello 各位讀者~本期為第四期電子報,本次電子報我們將帶大家來看看一些最新的行銷時事以及工具的更新的有趣內容! 目錄: Google網址檢查工具現在可以顯示多個參照網頁了 舊版的Google取消連結工具將在2021年1月19日終止服務 Google Search Console要使用者透過完成驗證程序來證明自己是資源的擁有者 Google搜尋出現內容複製鏡像網站的Canonical Bug Google解釋為何一些使用不良SEO策略的網站仍有不錯的排名 Google正在致力於改善robots.txt測試工具 Google Ads身分驗證制度即將上路 這些常見的SEO錯誤會有害於你的排名 Google指出:太專注於一種SEO策略可能會有害於整體SEO結果 Google面臨的反信任訴訟對行銷人會有什麼影響? Google在華盛頓的暴力事件後暫停投放政治廣告 Google網址檢查工具現在可以顯示多個參照網頁了 Google近期在Google網站管理員的網址檢查工具中,讓一些URL可以顯示多個參照網頁了。…
Hello 各位讀者~本期為第三期電子報,本次電子報我們將帶大家來看看一些最新的行銷時事以及工具的更新的有趣內容! 目錄: 英國「Watchdog」對Google Ads的數據政策變更展開調查 你可以使用資料排除功能來避免轉換追蹤問題影響智慧出價 2021年SEO數位行銷的七個潮流 英國「Watchdog」對Google Ads的數據政策變更展開調查 英國的組織Watchdog已經開始針對Google近期對廣告數據系統的大翻新計畫展開調查,因為Watchdog認為這次的翻新可能會讓Google在線上廣告產業中,排除更多競爭對手。 英國的政府機構「競爭及市場管理局」(Competition and Markets Authority, CMA)聲明其將會針對Google近期關於從Chrome和Chromium架構的瀏覽器引擎中,移除第三方cookie的改變展開調查。 Cookie是小型文字檔案,是某些網站為了記錄使用者資訊(例如使用者名稱)而儲存在用戶端上的資料。它能幫助企業更有效率的鎖定客群投放廣告,對提供免費內容的網站也相當有幫助,但它也能用來記錄使用者在網路上的行徑。 Google在2022年即將推出的「數位沙盒」(digital sandbox)提案中,提到以自家的工具替代第三方cookie的計畫。但Watchdog認為這樣的改變會削弱出版者盈利的能力,以及破壞數位廣告競爭,讓Google更加根深蒂固的壟斷市場。 競爭及市場管理局的執行長Andrea Coscelli聲明:…