MYSQL指令合集一文详解
作者:Elias不吃糖
本文涵盖了SQL基础CRUD操作、表管理、条件查询、排序、分页、连接查询、分组统计、子查询、索引、约束、事务、数据库/表管理以及字符集设置等内容,适合初学者全面了解数据库操作,感兴趣的朋友跟随小编一起看看吧
一、基础 CRUD(增删查改)
1. 查询(SELECT)
SELECT * FROM table_name; SELECT name, age FROM users; SELECT * FROM users WHERE id = 1; SELECT * FROM users WHERE name = 'Elias';
2. 插入(INSERT)
INSERT INTO users(name, age) VALUES ('Jack', 20);
INSERT INTO users(id, name, age) VALUES (1, 'Lily', 22);
插入多条:
INSERT INTO users(name, age)
VALUES ('A', 10), ('B', 20), ('C', 30);
3. 更新(UPDATE)
UPDATE users SET age = 25 WHERE id = 1; UPDATE users SET name = 'Mike', age = 18 WHERE id = 2;
4. 删除(DELETE)
DELETE FROM users WHERE id = 1; DELETE FROM users WHERE age < 10;
二、表的创建与修改
1. 创建表(包含主键)
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT
);
2. 删除表
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)
常用条件:
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;
复合条件:
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)
SELECT * FROM users LIMIT 10; -- 前 10 条 SELECT * FROM users LIMIT 5 OFFSET 10;
前端常用分页:
SELECT * FROM users LIMIT (page-1)*size, size;
六、连接查询(JOIN)
1. 内连接(常用)
SELECT u.name, o.order_id FROM users u JOIN orders o ON u.id = o.user_id;
2. 左连接(主表全部 + 匹配)
SELECT u.name, o.order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id;
3. 右连接
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';到此这篇关于MYSQL指令合集一文详解的文章就介绍到这了,更多相关mysql指令大全内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
