MYSQL指令合集

一、基础 CRUD(增删查改)

1. 查询(SELECT)

bash 复制代码
SELECT * FROM table_name;
SELECT name, age FROM users;
SELECT * FROM users WHERE id = 1;
SELECT * FROM users WHERE name = 'Elias';

2. 插入(INSERT)

bash 复制代码
INSERT INTO users(name, age) VALUES ('Jack', 20);
INSERT INTO users(id, name, age) VALUES (1, 'Lily', 22);

插入多条:

bash 复制代码
INSERT INTO users(name, age)
VALUES ('A', 10), ('B', 20), ('C', 30);

3. 更新(UPDATE)

bash 复制代码
UPDATE users SET age = 25 WHERE id = 1;
UPDATE users SET name = 'Mike', age = 18 WHERE id = 2;

4. 删除(DELETE)

bash 复制代码
DELETE FROM users WHERE id = 1;
DELETE FROM users WHERE age < 10;

二、表的创建与修改

1. 创建表(包含主键)

bash 复制代码
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT
);

2. 删除表

bash 复制代码
DROP TABLE users;

3. 修改表(ADD / DROP / MODIFY)

增加字段:

复制代码
ALTER TABLE users ADD email VARCHAR(100);

删除字段:

复制代码
ALTER TABLE users DROP COLUMN email;

修改字段类型:

复制代码
ALTER TABLE users MODIFY age INT NOT NULL;

修改表名:

复制代码
ALTER TABLE users RENAME TO members;

三、条件查询(WHERE)

常用条件:

bash 复制代码
SELECT * FROM users WHERE age >= 18;
SELECT * FROM users WHERE age BETWEEN 18 AND 30;
SELECT * FROM users WHERE name LIKE 'A%';   -- A 开头
SELECT * FROM users WHERE name LIKE '%abc%'; -- 包含 abc
SELECT * FROM users WHERE age IN (18, 20, 25);
SELECT * FROM users WHERE age IS NULL;
SELECT * FROM users WHERE age IS NOT NULL;

复合条件:

bash 复制代码
SELECT * FROM users WHERE age > 18 AND name = 'Jack';
SELECT * FROM users WHERE age < 18 OR age > 60;

四、排序(ORDER BY)

复制代码
SELECT * FROM users ORDER BY age DESC;
SELECT * FROM users ORDER BY age ASC, name ASC;

五、分页(LIMIT)

bash 复制代码
SELECT * FROM users LIMIT 10;        -- 前 10 条
SELECT * FROM users LIMIT 5 OFFSET 10;

前端常用分页:

复制代码
SELECT * FROM users LIMIT (page-1)*size, size;

六、连接查询(JOIN)

1. 内连接(常用)

bash 复制代码
SELECT u.name, o.order_id
FROM users u
JOIN orders o ON u.id = o.user_id;

2. 左连接(主表全部 + 匹配)

bash 复制代码
SELECT u.name, o.order_id
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

3. 右连接

bash 复制代码
SELECT u.name, o.order_id
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;

七、分组统计(GROUP BY + HAVING)

求每个年龄段人数:

复制代码
SELECT age, COUNT(*) 
FROM users 
GROUP BY age;

统计后过滤(HAVING):

复制代码
SELECT age, COUNT(*) AS cnt
FROM users
GROUP BY age
HAVING cnt >= 2;

求平均值:

复制代码
SELECT AVG(age) FROM users;
SELECT SUM(age), MIN(age), MAX(age) FROM users;

八、子查询

复制代码
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users);

SELECT name FROM users 
WHERE id IN (SELECT user_id FROM orders);

九、索引(提高查询速度)

1. 创建索引

复制代码
CREATE INDEX idx_name ON users(name);

2. 删除索引

复制代码
DROP INDEX idx_name ON users;

3. 唯一索引

复制代码
CREATE UNIQUE INDEX idx_email ON users(email);

十、约束(提高数据可靠性)

主键

复制代码
PRIMARY KEY (id)

唯一

复制代码
UNIQUE(email)

外键

复制代码
CONSTRAINT fk_user
FOREIGN KEY(user_id) REFERENCES users(id)

十一、事务(保证数据一致性)

开启事务:

复制代码
START TRANSACTION;

修改:

复制代码
UPDATE users SET age = age - 1 WHERE id = 1;
UPDATE users SET age = age + 1 WHERE id = 2;

提交:

复制代码
COMMIT;

回滚:

复制代码
ROLLBACK;

十二、数据库/表管理

切换数据库:

复制代码
USE dbname;

查看所有数据库:

复制代码
SHOW DATABASES;

查看所有表:

复制代码
SHOW TABLES;

查看表结构:

复制代码
DESC users;

十三、字符集(防止中文乱码)

复制代码
SET NAMES utf8mb4;

或 C++ 设置:

复制代码
mysql_options(conn, MYSQL_SET_CHARSET_NAME, "utf8mb4");

一个"真实项目常用 SQL 组合"

创建用户表 + 插入用户 + 查询用户 + 登录验证

复制代码
CREATE TABLE user(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) UNIQUE,
    password VARCHAR(100),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO user(name, password) VALUES ('Elias', '123456');

SELECT id, name FROM user WHERE name='Elias' AND password='123456';
相关推荐
kaixin_learn_qt_ing2 小时前
qgeoview-samples-basic
数据库
Omics Pro3 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
字节渡客3 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz3 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro3 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
呆萌很4 小时前
数据库逻辑结构设计
数据库
howdoyoudo2026064 小时前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
自己的九又四分之三站台4 小时前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)4 小时前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像
倔强的石头_4 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
数据库