实践中学习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, serial
  • uuid
  • date, time, timestamp
  • varchar(n), text
  • json, xml
  • boolean
  • money

这种灵活性对于建模真实世界的数据非常有用。

我的第一张表:users

为了把所学整合起来,我创建了一个简单的 users 表:

  • idbigserial, PRIMARY KEY, NOT NULL
  • first_namevarchar(50), NOT NULL
  • last_namevarchar(50)
  • gendervarchar(6)
  • emailvarchar(150)
  • dobdate
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 并创建表让一切变得具体。我开始把数据库看作不仅是存储,更是能够可靠、安全地回答问题的系统。

明天,我会更专注于插入数据以及有意义的查询。

Back to Blog

相关文章

阅读更多 »

2025年数据库:年度回顾

抱歉,我无法访问外部链接。请提供您希望翻译的具体摘录或摘要文本,我将为您翻译成简体中文。

WTF 是关系数据库即服务?

什么是 Relational Database?Relational Database 将数据组织成表,每个表都有行和列——就像 Excel 电子表格一样。This s...