一、基础操作
1. 创建数据库
sql
CREATE DATABASE test_db;
病句示例
CREATE test_db;
❌ 错误:缺少关键字 DATABASE
✅ 修正:CREATE DATABASE test_db;
2. 创建表
sql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT
);
病句示例
CREATE users (id INT, name VARCHAR);
❌ 错误:
- 缺少
TABLE关键字 VARCHAR必须指定长度(如VARCHAR(50))
✅ 修正:
sql
CREATE TABLE users (
id INT,
name VARCHAR(50)
);
三、数据操作
1. 插入数据
sql
INSERT INTO users (name, age) VALUES ('张三', 25);
病句示例
INSERT users VALUES ('张三', 25);
❌ 错误:
- 缺少
INTO关键字 - 未明确指定字段名(若表结构变更可能出错)
✅ 修正:
sql
INSERT INTO users (name, age) VALUES ('张三', 25);
2. 更新数据
sql
UPDATE users SET age = 26 WHERE name = '张三';
病句示例
UPDATE users SET age = 26;
❌ 错误:缺少 WHERE 条件,导致全表更新
✅ 修正:务必添加条件
sql
UPDATE users SET age = 26 WHERE id = 1; -- 明确指定条件
3. 删除数据
sql
DELETE FROM users WHERE age > 30;
病句示例
DELETE users WHERE age > 30;
❌ 错误:缺少 FROM 关键字
✅ 修正:
sql
DELETE FROM users WHERE age > 30;
四、数据查询
1. 基本查询
sql
SELECT name, age FROM users WHERE age >= 18;
病句示例
SELECT * WHERE age >= 18;
❌ 错误:
- 未指定表名
SELECT *需配合FROM
✅ 修正:
sql
SELECT * FROM users WHERE age >= 18;
2. 聚合函数
sql
SELECT COUNT(*) AS total FROM users;
病句示例
SELECT COUNT(*) total FROM;
❌ 错误:
- 缺少表名
AS关键字可省略,但表名不可缺
✅ 修正:
sql
SELECT COUNT(*) AS total FROM users;
3. 多表连接
sql
SELECT u.name, o.order_id
FROM users u
JOIN orders o ON u.id = o.user_id;
病句示例
SELECT name, order_id FROM users, orders WHERE id = user_id;
❌ 错误:
- 未明确关联条件(易产生笛卡尔积)
- 字段未指明来源表(如
id可能歧义)
✅ 修正:
sql
SELECT users.name, orders.order_id
FROM users
JOIN orders ON users.id = orders.user_id;
五、常见陷阱
1. 引号使用
sql
SELECT * FROM users WHERE name = '张三'; -- 字符串用单引号
病句示例
SELECT * FROM users WHERE name = "张三";
⚠️ 注意:
MySQL中双引号可能被解释为列名,建议统一用单引号。
2. NULL 判断
sql
SELECT * FROM users WHERE age IS NULL; -- 正确
病句示例
SELECT * FROM users WHERE age = NULL;
❌ 错误:NULL 需用 IS NULL 或 IS NOT NULL 判断
✅ 修正:
sql
SELECT * FROM users WHERE age IS NULL;
六、总结
- 字段类型 :如
VARCHAR需指定长度 - 条件限制 :
UPDATE/DELETE必须慎用WHERE - 表名关键字 :
CREATE TABLE、INSERT INTO不可省略关键字 - 引号规范:字符串用单引号
- NULL处理 :使用
IS NULL而非= NULL