傳達你的意圖

將 SQL 應用於真實世界問題

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

為什麼重要?

誰在乎笑臉

「……只要我的程式碼能照設計運作,『誰在乎』它怎麼寫……」

將 SQL 應用於真實世界問題

……6 個月後

挫折的人

將 SQL 應用於真實世界問題

一律使用 AS

原始寫法

SELECT title film_title
FROM film;

改良寫法

SELECT title AS film_title
FROM film;
將 SQL 應用於真實世界問題

是哪一種 JOIN?

原始寫法

SELECT category, length
FROM film AS f
JOIN category AS c
ON f.film_id = c.film_id;

改良寫法

SELECT category, length
FROM film AS f
INNER JOIN category AS c
ON f.film_id = c.film_id;
將 SQL 應用於真實世界問題

良好的別名用法

原始寫法

SELECT category, length
FROM film AS x1
INNER JOIN category AS x2
ON x1.film_id = x2.film_id;

改良寫法

SELECT category, length
FROM film AS f
INNER JOIN category AS c
ON f.film_id = c.film_id;
將 SQL 應用於真實世界問題

良好的別名用法

原始寫法

SELECT category, length
FROM film AS x1
INNER JOIN category AS x2
ON x1.film_id = x2.film_id;

改良寫法

SELECT category, length
FROM film AS f
INNER JOIN category AS c
ON f.film_id = c.film_id;
SELECT category, length
FROM film AS fil
INNER JOIN category AS cat
ON fil.film_id = cat.film_id;
將 SQL 應用於真實世界問題

使用註解

/* 使用系統資料表 information_schema.columns,
產生每個資料表的逗號分隔欄位清單 */
SELECT table_name, STRING_AGG(column_name, ', ') AS columns
FROM information_schema.columns
-- 我們的資料都存於 public 綱要。
WHERE table_schema = 'public'
GROUP BY table_name;
/* 多行註解 */
-- 單行註解
將 SQL 應用於真實世界問題

你的意圖是什麼?

將 SQL 應用於真實世界問題

Preparing Video For Download...