SQL 是 Structured Query Language 的缩写,中文通常叫 结构化查询语言。它专门用来和关系型数据库交流。我们不直接打开数据库文件逐行修改,而是写 SQL 语句,让数据库管理系统完成查询、添加、修改或删除。
例如,“把所有用户查出来”“只查看姓名和邮箱”“新增一个用户”或“把某个用户的邮箱改掉”,都可以转成数据库能够理解的 SQL。
SELECT name, email
FROM users;这条语句可以近似读成“从 users 表中选择 name 和 email 两列”。SQL 的许多关键字接近英文自然语言,因此常用查询通常能直接看出大意。
SQL 可以做哪些事情?
初学阶段可以先把 SQL 的用途看成四类:查询、新增、修改、删除。你现在不需要背下所有细节,只要注意每条语句改变了什么。
SELECT * FROM products;INSERT INTO users (name, email)
VALUES ('Alice', '[email protected]');UPDATE users
SET email = '[email protected]'
WHERE id = 1;DELETE FROM users
WHERE id = 1;特别留意 WHERE id = 1:它把修改或删除限制在指定记录。后面会专门学习筛选条件。
让语句改变数据
这是一个隔离的模拟数据库。选择示例或直接修改 SQL,运行后观察结果表;INSERT、UPDATE、DELETE 会持续改变沙盒数据,重置可随时恢复。
| id | name | city | |
|---|---|---|---|
| 1 | Alice | [email protected] | Tokyo |
| 2 | Bob | [email protected] | Osaka |
| 3 | Chris | [email protected] | Tokyo |
| 4 | Diana | [email protected] | Kyoto |
沙盒已准备好,不会连接真实数据库。SQL、DBMS 和 Database 的关系
SQL 本身不是数据库,也不是 MySQL 这样的软件。SQL 是语言;MySQL、PostgreSQL、SQL Server 和 SQLite 是理解 SQL 的数据库管理系统;真正的数据位于 Database 中。你写出意图,DBMS 解析语句、找到对应的表并执行操作。
常见系统与语法差异
MySQL、PostgreSQL、Microsoft SQL Server 和 SQLite 都支持 SQL,但高级细节并非百分之百相同,分页、日期函数、字符串函数等尤其容易出现差异。例如 MySQL 和 PostgreSQL 常用 LIMIT 10 限制结果数量,SQL Server 可能使用不同写法。
不过 SELECT、WHERE、INSERT、UPDATE、DELETE、JOIN 和 GROUP BY 的核心思想很接近。本课程优先讲通用思路,并在必要处指出产品差异。
分号与大小写
分号 ; 表示一条 SQL 语句结束。一次只执行一条语句时,有些工具允许省略;一次写多条时,它能清楚分隔语句。SQL 关键字通常不区分大小写,但常见风格是把关键字大写、表名和列名保持普通命名,这样一眼就能分清语法和项目自己的名称。
重点不是背语法
真正重要的是把业务问题拆成数据库能够处理的问题。面对“找出所有 Tokyo 用户”,先问:数据在哪张表、要看哪些列、筛选条件是什么。得到 users、需要的用户列和 city = 'Tokyo' 后,再组织 SQL。
知识测验
把 SQL 解释成人话
不用逐词翻译。请像向同事说明需求一样,解释下面两条语句分别会读取或改变什么;第二条还要说明哪些记录不会受到影响。