实践中学习SQL:LeetCode挑战与PostgreSQL设置
发布: (2026年1月7日 GMT+8 16:42)
4 min read
原文: Dev.to
Source: Dev.to
在 LeetCode 上练习 SQL(SQL 50 挑战)
作为今天的副任务,我开始了 LeetCode 上的 SQL 50 Challenge,重点是 SELECT 部分。我完成了以下题目:
- 可回收且低脂产品
- 查找客户推荐人
- 大国家
- 文章浏览量 I
- 无效推文
它们全部标记为 Easy,虽然很有趣,但关键的收获是理解每个问题到底在问什么。
我多次重做了一些题目,并不是因为它们难,而是为了清晰地映射:
- 问题描述
- 所需的 SQL 逻辑
- 最终的查询语句
这让我再次体会到,SQL 更多是把问题转化为查询,而不是记忆语法。
安装 PostgreSQL 并探索工具
练习完后,我安装了 PostgreSQL,随之而来的是:
- pgAdmin(GUI 客户端)
- psql / SQL Shell(基于终端的客户端)
我正在学习的教程非常强调使用终端,所以我大部分时间都在 SQL Shell 中操作。
我学到的基本 PostgreSQL 命令
创建和删除数据库
CREATE DATABASE db_name;
DROP DATABASE db_name;
删除表
DROP TABLE table_name;
在 PostgreSQL 中创建表
CREATE TABLE table_name (
column_name datatype constraint
);
常见约束
NULL– 允许空值NOT NULL– 不允许空值PRIMARY KEY– 唯一标识每条记录
有用的 psql 终端命令
\?→ 显示帮助\c db_name→ 连接到指定数据库\l→ 列出服务器上的所有数据库\d→ 列出所有表\d table_name→ 显示表的结构(列、数据类型、约束、索引)
这些命令让在没有 GUI 的情况下也能轻松浏览数据库。
探索 PostgreSQL 数据类型
PostgreSQL 支持多种数据类型,包括:
bigserial,serialuuiddate,time,timestampvarchar(n),textjson,xmlbooleanmoney
这种灵活性对于建模真实世界的数据非常有用。
我的第一张表:users
为了把所学整合起来,我创建了一个简单的 users 表:
id→bigserial,PRIMARY KEY,NOT NULLfirst_name→varchar(50),NOT NULLlast_name→varchar(50)gender→varchar(6)email→varchar(150)dob→date
CREATE TABLE users (
id bigserial PRIMARY KEY NOT NULL,
first_name varchar(50) NOT NULL,
last_name varchar(50),
gender varchar(6),
email varchar(150),
dob date
);
从零设计这张表帮助我巩固了列、数据类型和约束之间的配合方式。
最后感想
今天的学习非常实用。通过在 LeetCode 上解题提升了查询思维,而安装 PostgreSQL 并创建表让一切变得具体。我开始把数据库看作不仅是存储,更是能够可靠、安全地回答问题的系统。
明天,我会更专注于插入数据以及有意义的查询。