SQL Basics
Learn the SQL syntax you need to read, query, filter, combine, and update data.
Overview
SQL (Structured Query Language) is used to work with data stored in relational databases.
You can use SQL to read, filter, sort, calculate totals, combine tables, add or update records, and create database tables.
SELECT customer, product
FROM orders;SQL 查询不会默认修改原始数据。SELECT 只是读取数据。
01 · Query Basics
最基础的 SQL 查询语法。
SELECT
选择你想查看的数据列。
场景:查看订单、客户、产品、库存。
SELECT column_name
FROM table_name;
SELECT customer
FROM orders;查看 orders 表中的 customer 列。
SELECT Multiple Columns
一次选择多个字段。
SELECT customer, product, quantity
FROM orders;同时查看客户、产品和数量。
SELECT *
* 表示所有字段,适合快速查看整张表。
SELECT * FROM orders;DISTINCT
去掉重复值。
SELECT DISTINCT product FROM orders;AS
给字段或计算结果取一个临时名称。
SELECT customer AS customer_name FROM orders;02 · Filtering
只找出符合条件的数据。
WHERE
根据条件过滤数据。
SELECT * FROM orders
WHERE product = 'Copper';只查看 Copper 的订单。
= · > · < · >= · <= · !=
等于、不等于,或比较数字大小。
SELECT * FROM orders WHERE quantity > 10;
SELECT * FROM orders WHERE product != 'Copper';AND · OR · IN
组合条件,或匹配多个指定值。
SELECT * FROM orders
WHERE product = 'Copper' AND quantity > 5;
SELECT * FROM orders
WHERE product IN ('Copper', 'Aluminum', 'Nickel');BETWEEN · LIKE · IS NULL
查询范围、模糊文字,或没有值的数据。
SELECT * FROM orders WHERE price BETWEEN 8000 AND 9000;
SELECT * FROM customers WHERE customer_name LIKE 'App%';
SELECT * FROM orders WHERE delivery_date IS NULL;03 · Sorting & Aggregation
排序数据,以及进行数量、金额等统计。
ORDER BY · ASC · DESC
给结果排序;ASC 从小到大,DESC 从大到小。
SELECT * FROM orders ORDER BY price DESC;COUNT() · SUM() · AVG() · MAX() · MIN()
统计数量、总和、平均值、最大值和最小值。
SELECT COUNT(*) FROM orders;
SELECT SUM(quantity) FROM orders;
SELECT AVG(price) FROM orders;GROUP BY · HAVING
分组统计,并过滤分组后的结果。
SELECT product, SUM(quantity)
FROM orders GROUP BY product
HAVING SUM(quantity) > 100;04 · Joining Tables
从多张表中组合数据。
INNER JOIN
只返回两张表都能匹配的数据。
SELECT orders.order_id, customers.customer_name, orders.product
FROM orders INNER JOIN customers
ON orders.customer_id = customers.customer_id;LEFT JOIN
保留左边表的所有数据,即使暂时找不到对应 customer。
SELECT o.order_id, c.customer_name
FROM orders o LEFT JOIN customers c
ON o.customer_id = c.customer_id;Table Alias
给表使用简称,让 SQL 更短、更容易阅读:o = orders,c = customers。
05 · Logic
在 SQL 中加入简单的判断逻辑。
CASE WHEN
类似 IF / ELSE,根据条件分类。
SELECT order_id, quantity,
CASE WHEN quantity >= 100 THEN 'Large'
WHEN quantity >= 50 THEN 'Medium'
ELSE 'Small' END AS order_size
FROM orders;COALESCE
如果字段是 NULL,就使用另外一个值。
SELECT COALESCE(delivery_date, 'Not delivered') FROM orders;NULLIF
如果两个值相同,返回 NULL。
SELECT NULLIF(quantity, 0) FROM orders;06 · Data Modification
修改数据库中的数据。
Warning:这些 SQL 会修改真实数据。执行 UPDATE / DELETE 前应确认 WHERE 条件。
INSERT
增加一条新数据。
INSERT INTO customers (customer_id, customer_name)
VALUES ('C03', 'Samsung');UPDATE
修改已有数据。
UPDATE orders SET quantity = 20
WHERE order_id = 1001;如果没有 WHERE,可能会修改整张表。
DELETE
删除数据。
DELETE FROM orders WHERE order_id = 1001;DELETE FROM orders; 会删除表中的所有记录。
07 · Database Definition
创建或修改数据库结构。
CREATE TABLE
创建一张新表。
CREATE TABLE customers (
customer_id INT,
customer_name VARCHAR(100),
country VARCHAR(50)
);Basic Data Types
INT:整数,适合 ID、数量、年龄。
DECIMAL:小数,适合 Price、Amount、Weight。
VARCHAR:文字,适合 Name、Product、Country。
DATE:日期,例如 2026-09-12。
TIMESTAMP:日期 + 时间。
BOOLEAN:True / False。
quantity INT
price DECIMAL(10,2)
customer_name VARCHAR(100)
delivery_date DATEALTER TABLE
修改表结构。
ALTER TABLE customers ADD email VARCHAR(100);DROP TABLE
删除整张表,包括表结构和数据。
DROP TABLE customers;Glossary
| Term | Meaning |
|---|---|
| SELECT | 查询数据 |
| FROM | 指定数据来自哪张表 |
| WHERE | 过滤数据 |
| ORDER BY | 排序 |
| GROUP BY | 分组统计 |
| HAVING | 过滤分组后的结果 |
| JOIN | 连接多张表 |
| ON | 定义 JOIN 条件 |
| INSERT | 新增数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| CREATE | 创建数据库对象 |
| ALTER | 修改数据库结构 |
| DROP | 删除数据库对象 |
| NULL | 没有值 |
| AS | 设置别名 |
| DISTINCT | 去除重复值 |
| COUNT · SUM · AVG · MAX · MIN | 统计、求和、平均、最大、最小 |
| CASE | 条件判断 |