训练台

SQL

数据查询 产品分析 和数据库

先定义

SQL 是什么

SQL 是一门用来写精确指令的编程语言,主要用于数据查询 产品分析 和数据库。你先不用记一堆术语,只要先理解:程序把输入按步骤变成输出。

最小运行信息文件 query.sql运行 psql -f query.sql习惯 每学一个 SQL 小语法 立刻写一个最小例子并运行
程序

一组按顺序执行的指令。先读输入,再计算,最后得到输出。

值和变量

值是数据,变量是给数据取的名字。先看名字,再看它保存了什么。

函数

把一件小事封装起来,给输入,拿输出,之后可以反复用。

运行环境

兼容 PostgreSQL 的 SQL 环境 负责真正执行 query.sql 里的代码。

第一段可读代码

Select

columns table rows
SELECT name, score FROM users;
输出 name score rows

语言族谱

SQL 的族谱

先看清 SQL 从哪里来 和哪些语言接近 再决定下一步怎么学

来源
relational algebraSEQUEL
当前SQL数据和科学计算语言家族
所属家族数据和科学计算语言家族
适合场景

适合 数据查询 产品分析 和数据库

零基础路径

1看一条规则2先猜输出3凭记忆敲4跑检查器5改一处重做

编程题库

先搜题 再练习

题库按阶段开放,用户可以搜语言、概念、题型、代码关键词,然后直接跳到对应练习。

18 道匹配题
题 1选择第一阶段 定义入门

SQL 第 1 题

SQL 第 1 题 选择和 select columns 最匹配的说法

题 2选择第一阶段 定义入门

SQL 第 2 题

SQL 第 2 题 选择和 where filter 最匹配的说法

题 3选择第一阶段 定义入门

SQL 第 3 题

SQL 第 3 题 选择和 count aggregate 最匹配的说法

题 4选择第一阶段 定义入门

SQL 第 4 题

SQL 第 4 题 选择和 join tables 最匹配的说法

题 5选择第一阶段 定义入门

SQL 第 5 题

SQL 第 5 题 选择和 select columns 最匹配的说法

题 6选择第一阶段 定义入门

SQL 第 6 题

SQL 第 6 题 选择和 where filter 最匹配的说法

题 7选择第一阶段 定义入门

SQL 第 7 题

SQL 第 7 题 选择和 count aggregate 最匹配的说法

题 8选择第一阶段 定义入门

SQL 第 8 题

SQL 第 8 题 选择和 join tables 最匹配的说法

题 9选择第一阶段 定义入门

SQL 第 9 题

SQL 第 9 题 选择和 select columns 最匹配的说法

题 10选择第一阶段 定义入门

SQL 第 10 题

SQL 第 10 题 选择和 where filter 最匹配的说法

题 11选择第一阶段 定义入门

SQL 第 11 题

SQL 第 11 题 选择和 count aggregate 最匹配的说法

题 12选择第一阶段 定义入门

SQL 第 12 题

SQL 第 12 题 选择和 join tables 最匹配的说法

题 13选择第一阶段 定义入门

SQL 第 13 题

SQL 第 13 题 选择和 select columns 最匹配的说法

题 14选择第一阶段 定义入门

SQL 第 14 题

SQL 第 14 题 选择和 where filter 最匹配的说法

题 15选择第一阶段 定义入门

SQL 第 15 题

SQL 第 15 题 选择和 count aggregate 最匹配的说法

题 16选择第一阶段 定义入门

SQL 第 16 题

SQL 第 16 题 选择和 join tables 最匹配的说法

题 17选择第一阶段 定义入门

SQL 第 17 题

SQL 第 17 题 选择和 select columns 最匹配的说法

题 18选择第一阶段 定义入门

SQL 第 18 题

SQL 第 18 题 选择和 where filter 最匹配的说法

选择题

SQL 第 1 题

题 1选择新题

SQL 第 1 题 选择和 select columns 最匹配的说法

SELECT name FROM users;

参考

query.sql 常用模式

兼容 PostgreSQL 的 SQL 环境psql -f query.sql
回忆输出看完一个小点后 合上提示自己写出来
手动跟踪运行前先逐行写出变量变化
亲手敲一遍少复制 多打字 每次只修一个小错

columns table rows

Select

SELECT name, score FROM users;
  • Select only needed columns
  • Read from one table first
  • Add limits while exploring

where order limit

Filter

SELECT name FROM users WHERE score >= 60;
  • WHERE filters rows
  • ORDER BY sorts
  • LIMIT protects exploration

count sum avg group by

Group

SELECT role, COUNT(*) FROM users GROUP BY role;
  • Aggregate after filtering
  • Group by non aggregate columns
  • Name metrics clearly