清晰表达意图

将 SQL 应用于真实问题

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

为何重要?

谁在乎笑脸

"……只要代码按设计运行,写成什么样,谁在乎……"

将 SQL 应用于真实问题

……六个月后

沮丧的人

将 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...