1. 连接和退出
连接到 MySQL
mysql -u root -p
退出 MySQL
EXIT;
2. 数据库操作
显示所有数据库
SHOW DATABASES;
创建数据库
CREATE DATABASE test_db;
删除数据库
DROP DATABASE test_db;
使用数据库
USE test_db;
查看当前使用的数据库
SELECT DATABASE();
3. 表操作
显示所有表
SHOW TABLES;
创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
删除表
DROP TABLE users;
查看表结构
DESCRIBE users;
修改表结构
添加新列
ALTER TABLE users ADD age INT;
修改列数据类型
ALTER TABLE users MODIFY age SMALLINT;
重命名列
ALTER TABLE users CHANGE age user_age INT;
删除列
ALTER TABLE users DROP COLUMN user_age;
复制表结构和数据
复制表结构
CREATE TABLE users_backup LIKE users;
复制表数据
INSERT INTO users_backup SELECT * FROM users;
4. 数据操作
插入数据
INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('Bob', 'bob@example.com');
批量插入数据
INSERT INTO users (username, email) VALUES
('Charlie', 'charlie@example.com'),
('David', 'david@example.com'),
('Eve', 'eve@example.com');
更新数据
更新单条记录
UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice';
更新多条记录
UPDATE users SET email = CONCAT(username, '@example.com') WHERE email LIKE '%@oldexample.com';
删除数据
删除单条记录
DELETE FROM users WHERE username = 'Alice';
删除多条记录
DELETE FROM users WHERE username IN ('Bob', 'Charlie');
清空所有记录
#方法一:不建议用这种,因为会导致auto_increment不置0,再插入记录会按照之前的顺序增加id号
DELETE FROM users ;
#方法二:一般用这种方式
truncate users ;
查询数据
查询所有数据
SELECT * FROM users;
查询特定列
SELECT username, email FROM users;
使用条件查询
SELECT * FROM users WHERE username = 'David';
使用模糊查询
SELECT * FROM users WHERE email LIKE '%@example.com';
使用排序
SELECT * FROM users ORDER BY created_at DESC;
使用分页
SELECT * FROM users LIMIT 5 OFFSET 10;
5. 用户和权限管理
创建用户
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
删除用户
DROP USER 'new_user'@'localhost';
授予权限
授予全部权限
GRANT ALL PRIVILEGES ON test_db.* TO 'new_user'@'localhost';
授予特定权限
GRANT SELECT, INSERT, UPDATE ON test_db.* TO 'new_user'@'localhost';
撤销权限
REVOKE ALL PRIVILEGES ON test_db.* FROM 'new_user'@'localhost';
刷新权限
FLUSH PRIVILEGES;
6. 备份和恢复
备份数据库
mysqldump -u root -p test_db > backup.sql
恢复数据库
mysql -u root -p test_db < backup.sql
7. 系统命令
查看 MySQL 服务器状态
mysqladmin -u root -p status
启动 MySQL 服务器(Linux)
sudo systemctl start mysql
停止 MySQL 服务器(Linux)
sudo systemctl stop mysql
重启 MySQL 服务器(Linux)
sudo systemctl restart mysql
8. 常用快捷命令
查看当前数据库
SELECT DATABASE();
查看当前用户
SELECT USER();
查看 MySQL 版本
SELECT VERSION();
查看当前日期和时间
SELECT NOW();
9. 高级查询
聚合函数
计数
SELECT COUNT(*) FROM users;
求和
SELECT SUM(age) FROM users;
平均值
SELECT AVG(age) FROM users;
最大值和最小值
SELECT MAX(age), MIN(age) FROM users;
分组查询
SELECT teacher_gender, COUNT(*) FROM teacher_info GROUP BY teacher_gender;
多表连接
内连接
SELECT users.username, orders.order_id
FROM users
JOIN orders ON users.id = orders.user_id;
左连接
SELECT users.username, orders.order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
右连接
SELECT users.username, orders.order_id
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;