MySQL 关键词分类参考

掌握这些常用关键词,可以满足基本的 MySQL 数据库操作需求

数据定义语言(DDL)

用于创建、修改和删除数据库对象。

CREATE

创建数据库、表、视图等。

CREATE DATABASE test_db;
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
ALTER

修改表结构。

ALTER TABLE users ADD COLUMN age INT;
DROP

删除数据库或表。

DROP TABLE users;
TRUNCATE

清空表数据(保留表结构)。

TRUNCATE TABLE users;

数据操作语言(DML)

用于查询和修改数据。

SELECT

查询数据。

SELECT * FROM users WHERE age > 18;
INSERT

插入数据。

INSERT INTO users (id, name) VALUES (1, 'Alice');
UPDATE

更新数据。

UPDATE users SET age = 20 WHERE id = 1;
DELETE

删除数据。

DELETE FROM users WHERE id = 1;

数据查询辅助关键词

用于细化和优化查询条件。

WHERE

过滤条件。

SELECT * FROM users WHERE name LIKE 'A%';
GROUP BY

分组查询。

SELECT dept_id, COUNT(*) FROM employees GROUP BY dept_id;
HAVING

分组后的过滤条件。

SELECT dept_id, AVG(salary) FROM employees 
GROUP BY dept_id HAVING AVG(salary) > 5000;
ORDER BY

排序结果。

SELECT * FROM users ORDER BY age DESC;
LIMIT/OFFSET

限制查询数量,配合 `OFFSET` 分页。

SELECT * FROM users LIMIT 10 OFFSET 20; -- 第21-30条记录

聚合函数

用于统计和计算。

COUNT

计数。

SELECT COUNT(*) FROM users;
SUM

求和。

SELECT SUM(salary) FROM employees;
AVG

求平均值。

SELECT AVG(age) FROM users;
MAX/MIN

求最大值/最小值。

SELECT MAX(price) FROM products;

连接(JOIN)

用于多表关联查询。

INNER JOIN

内连接(交集)。

SELECT * FROM orders 
INNER JOIN customers ON orders.customer_id = customers.id;
LEFT JOIN/RIGHT JOIN

左/右连接(包含左/右表所有记录)。

SELECT * FROM users 
LEFT JOIN orders ON users.id = orders.user_id;
FULL OUTER JOIN

全外连接(MySQL 中需用 `UNION` 实现)。

SELECT * FROM users 
LEFT JOIN orders ON users.id = orders.user_id
UNION
SELECT * FROM users 
RIGHT JOIN orders ON users.id = orders.user_id;

约束(Constraints)

用于保证数据完整性。

PRIMARY KEY

主键约束。

CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
FOREIGN KEY

外键约束。

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);
UNIQUE

唯一约束。

CREATE TABLE users (email VARCHAR(50) UNIQUE);
NOT NULL

非空约束。

CREATE TABLE users (name VARCHAR(50) NOT NULL);

其他常用关键词

用于各种辅助操作。

DISTINCT

去重。

SELECT DISTINCT city FROM customers;
JOIN ... ON

表连接条件。

SELECT * FROM users JOIN orders ON users.id = orders.user_id;
UNION/UNION ALL

合并查询结果(`UNION` 去重,`UNION ALL` 保留重复)。

SELECT name FROM users 
UNION 
SELECT product_name FROM products;
LIKE

模糊匹配(`%` 表示任意字符,`_` 表示单个字符)。

SELECT * FROM users WHERE name LIKE 'A%'; -- 以A开头
BETWEEN

范围查询。

SELECT * FROM products WHERE price BETWEEN 10 AND 100;

事务控制

用于管理数据库事务。

BEGIN/START TRANSACTION

开始事务。

BEGIN;
COMMIT

提交事务。

COMMIT;
ROLLBACK

回滚事务。

ROLLBACK;
SAVEPOINT

设置保存点。

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SAVEPOINT sp1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
ROLLBACK TO sp1; -- 回滚到保存点
COMMIT;

索引相关

用于优化查询性能。

INDEX

创建索引。

CREATE INDEX idx_name ON users (name);
EXPLAIN

分析查询执行计划。

EXPLAIN SELECT * FROM users WHERE name = 'Alice';

权限管理

用于管理数据库访问权限。

GRANT/REVOKE

授予/撤销权限。

GRANT SELECT, INSERT ON test_db.* TO 'user'@'localhost';
已复制到剪贴板