目录
-
-
- [1. 数据库操作](#1. 数据库操作)
- [2. 表操作](#2. 表操作)
- [3. 数据操作(CRUD)](#3. 数据操作(CRUD))
- [4. 高级查询](#4. 高级查询)
- [5. 索引管理](#5. 索引管理)
- [6. 用户与权限](#6. 用户与权限)
- [7. 数据导入导出](#7. 数据导入导出)
- [8. 事务控制](#8. 事务控制)
- [9. 其他实用语句](#9. 其他实用语句)
- 注意事项
- 如果这篇文章对你有所帮助,渴望获得你的一个点赞!
-
1. 数据库操作
-
创建数据库
sqlCREATE DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 指定字符集
-
查看数据库
sqlSHOW DATABASES; -- 列出所有数据库 SHOW CREATE DATABASE dbname; -- 查看创建语句
-
使用数据库
sqlUSE dbname; -- 切换当前数据库
-
删除数据库
sqlDROP DATABASE dbname; -- 谨慎操作!
2. 表操作
-
创建表
sqlCREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age INT DEFAULT 18, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
查看表结构
sqlDESC users; -- 查看表结构 SHOW CREATE TABLE users; -- 查看建表语句
-
修改表
sqlALTER TABLE users ADD COLUMN gender VARCHAR(10); -- 添加列 ALTER TABLE users MODIFY COLUMN name VARCHAR(100); -- 修改列类型 ALTER TABLE users DROP COLUMN age; -- 删除列 ALTER TABLE users RENAME TO members; -- 重命名表
-
删除表
sqlDROP TABLE users; -- 删除表(谨慎!)
3. 数据操作(CRUD)
-
插入数据
sqlINSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com'), ('Charlie', 'charlie@example.com'); -- 插入多行
-
查询数据
sqlSELECT * FROM users; -- 查询所有数据 SELECT name, email FROM users WHERE age > 20; -- 条件筛选 SELECT DISTINCT name FROM users; -- 去重 SELECT * FROM users ORDER BY created_at DESC; -- 排序 SELECT * FROM users LIMIT 10 OFFSET 5; -- 分页(第2页,每页10条)
-
更新数据
sqlUPDATE users SET age = 25 WHERE id = 1; -- 更新单条 UPDATE users SET status = 'active' WHERE last_login > '2023-01-01'; -- 批量更新
-
删除数据
sqlDELETE FROM users WHERE id = 1; -- 删除单条 DELETE FROM users WHERE status = 'inactive'; -- 条件删除 TRUNCATE TABLE users; -- 清空表(不可回滚,速度比DELETE快)
4. 高级查询
-
连接查询(JOIN)
sql-- 内连接 SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id; -- 左连接 SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
-
聚合函数
sqlSELECT COUNT(*) FROM users; -- 统计行数 SELECT AVG(age) AS avg_age FROM users; -- 平均值 SELECT MAX(created_at) AS latest FROM users; -- 最大值 SELECT city, COUNT(*) FROM users GROUP BY city; -- 分组统计 SELECT city, COUNT(*) FROM users GROUP BY city HAVING COUNT(*) > 100; -- 分组后筛选
-
子查询
sqlSELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
5. 索引管理
-
创建索引
sqlCREATE INDEX idx_name ON users(name); -- 普通索引 CREATE UNIQUE INDEX idx_email ON users(email); -- 唯一索引
-
删除索引
sqlDROP INDEX idx_name ON users;
6. 用户与权限
-
创建用户
sqlCREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
-
授予权限
sqlGRANT SELECT, INSERT ON dbname.* TO 'username'@'localhost'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; -- 谨慎使用
-
撤销权限
sqlREVOKE INSERT ON dbname.* FROM 'username'@'localhost';
-
删除用户
sqlDROP USER 'username'@'localhost';
-
刷新权限
sqlFLUSH PRIVILEGES;
7. 数据导入导出
-
导出数据
sqlSELECT * INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users;
-
导入数据
sqlLOAD DATA INFILE '/tmp/users.csv' INTO TABLE users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
8. 事务控制
-
开启事务
sqlSTART TRANSACTION; -- 执行操作(如INSERT/UPDATE/DELETE) COMMIT; -- 提交事务 ROLLBACK; -- 回滚事务
-
设置自动提交
sqlSET autocommit = 0; -- 关闭自动提交 SET autocommit = 1; -- 开启自动提交(默认)
9. 其他实用语句
-
条件判断
sqlSELECT name, CASE WHEN age < 18 THEN 'Minor' ELSE 'Adult' END AS age_group FROM users;
-
日期函数
sqlSELECT NOW(); -- 当前时间 SELECT DATE_FORMAT(created_at, '%Y-%m-%d') FROM users; -- 格式化日期
-
字符串函数
sqlSELECT CONCAT(name, ' (', email, ')') AS info FROM users; SELECT SUBSTRING(email, 1, 5) FROM users; -- 截取字符串
注意事项
- 数据安全 :执行
DELETE
或UPDATE
时务必检查WHERE
条件,避免误操作。 - 备份 :重要操作前使用
mysqldump
备份数据。 - 性能优化:合理使用索引,避免全表扫描。
掌握这些语句后,可覆盖MySQL日常开发与管理的90%场景。进阶学习可探索存储过程、触发器、视图等高级功能。