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';