1.1 数据库与 SQL 是什么
数据库用来长期保存、查询和维护数据。关系型数据库把数据组织成表:表有列,列定义数据含义;表有行,行保存一条条具体记录。
SQL 是 Structured Query Language,通常译作结构化查询语言。它不是某一个数据库产品的私有语言,而是一套面向关系型数据库的通用语言家族。
常见数据库产品
你会经常听到这些名字:
- MySQL / MariaDB:Web 应用中很常见。
- PostgreSQL:标准支持、类型系统和扩展能力很强。
- SQLite:轻量,常用于本地文件、移动端、小工具。
- SQL Server:微软生态常见。
- Oracle Database:大型企业系统常见。
它们都支持 SQL,但不是每个细节都一样。学习时先掌握通用概念,再在实际项目中查看具体产品文档。
正在加载概念检查...
SQL 大致分成几类
| 类别 | 常见语句 | 作用 |
|---|---|---|
| DDL | CREATE、ALTER、DROP | 定义和修改结构 |
| DML | INSERT、UPDATE、DELETE | 修改表里的行 |
| Query | SELECT | 查询数据 |
| Transaction | BEGIN、COMMIT、ROLLBACK | 控制一组修改的提交或撤回 |
| Security | GRANT、REVOKE | 控制权限,产品差异较多 |
你可以把 SQL 想成两类动作:一种改变“结构”,一种改变或读取“数据”。
查询不是命令式循环
sql
SELECT name, score
FROM students
WHERE score > 85
ORDER BY score DESC;这句话没有告诉数据库“先打开第 1 行,再打开第 2 行”。它描述的是你想要什么:从 students 取 name 和 score,只要分数大于 85 的行,并按分数降序排列。
数据库内部会决定如何执行。可能全表扫描,也可能使用索引;可能先过滤,也可能先 JOIN。这个决策过程叫优化。
正在加载交互实验...
正在加载概念检查...
标准 SQL 与产品方言
本课程会尽量使用通用 SQL 写法。遇到产品差异明显的地方,会明确标注。
注意
方言提醒:自增主键、正则匹配、日期函数、分页、字符串函数、存储函数、JSON 查询、UPSERT 写法都常见产品差异。看到来自网上的 SQL 片段时,先确认它面向 MySQL、PostgreSQL、SQLite、SQL Server、Oracle 还是其他产品。
学习 SQL 的顺序
先不要一开始就背所有函数。更好的路线是:
- 表和列:数据放在哪里。
- 主键和外键:行之间如何可靠关联。
- SELECT:如何读数据。
- WHERE、ORDER BY:如何筛选和排序。
- JOIN、GROUP BY:如何组合和汇总。
- 事务、锁、索引:如何安全并高效地运行。
正在加载本节练习...