一、连接与退出
mysql -u root -p # 登录(回车后输密码)
mysql -h 127.0.0.1 -P 3306 -u root -p # 指定主机与端口
exit; 或 quit; # 退出
二、数据库操作
SHOW DATABASES; # 查看所有库
CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE blog_db; # 切换库
DROP DATABASE blog_db; # 删除库(慎用)
SELECT DATABASE(); # 当前所在库
三、表操作
SHOW TABLES; # 查看所有表
DESC users; # 查看表结构
SHOW CREATE TABLE users; # 查看建表语句
ALTER TABLE users ADD COLUMN phone VARCHAR(20); # 加列
ALTER TABLE users MODIFY COLUMN phone VARCHAR(30); # 改列类型
ALTER TABLE users DROP COLUMN phone; # 删列
DROP TABLE users; # 删表
TRUNCATE TABLE users; # 清空表数据(自增重置)
四、增删改查
INSERT INTO users (name, age) VALUES ('小明', 18);
INSERT INTO users (name, age) VALUES ('A', 1), ('B', 2); # 批量插入
UPDATE users SET age = 19 WHERE name = '小明';
DELETE FROM users WHERE id = 3;
SELECT * FROM users; # 查全部
SELECT name, age FROM users WHERE age > 18 ORDER BY age DESC LIMIT 10;
五、常用查询写法
WHERE name LIKE '%明%' # 模糊匹配
WHERE age BETWEEN 18 AND 30 # 区间
WHERE age IN (18, 20, 22) # 枚举
GROUP BY category_id HAVING COUNT(*) > 3 # 分组过滤
SELECT a.name, b.title FROM users a JOIN posts b ON a.id = b.user_id; # 内连接
SELECT ... UNION SELECT ... # 合并结果
六、用户与权限
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON blog_db.* TO 'blog_user'@'localhost';
GRANT SELECT, INSERT ON blog_db.* TO 'blog_user'@'127.0.0.1';
REVOKE INSERT ON blog_db.* FROM 'blog_user'@'localhost';
FLUSH PRIVILEGES; # 刷新权限
SHOW GRANTS FOR 'blog_user'@'localhost';
七、备份与恢复
mysqldump -u root -p blog_db > blog_db.sql # 导出整个库
mysqldump -u root -p blog_db users > users.sql # 导出单表
mysql -u root -p blog_db < blog_db.sql # 导入
source /path/blog_db.sql; # 登录后导入
八、常用函数
NOW() 当前时间 CURDATE() 当前日期
COUNT(*) 计数 SUM()/AVG()/MAX()/MIN() 聚合
CONCAT(a, b) 拼接 IFNULL(x, 0) 空值兜底
ROUND(x, 2) 四舍五入 DATE_FORMAT(NOW(), '%Y-%m-%d') 格式化
九、查看运行状态
SHOW PROCESSLIST; # 当前连接
SHOW VARIABLES LIKE 'max_connections'; # 查配置
SHOW STATUS; # 运行统计
SHOW ENGINE INNODB STATUS\G # InnoDB 详情
status; # 版本、连接数等概览
评论
0 条