-- MySQL Common SQL Commands with Chinese Annotations
-- 创建数据库:使用 UTF-8 编码创建数据库
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 显示所有数据库
SHOW DATABASES;
-- 删除数据库
DROP DATABASE my_database;
-- 选择要操作的数据库
USE my_database;
-- 创建用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 用户ID,自增主键
name VARCHAR(100), -- 姓名
age INT, -- 年龄
email VARCHAR(100) -- 邮箱
);
-- 查看表结构
DESC users;
-- 修改表名为 customers
RENAME TABLE users TO customers;
-- 增加字段 address
ALTER TABLE customers ADD COLUMN address VARCHAR(200);
-- 修改 age 字段为 SMALLINT 类型
ALTER TABLE customers MODIFY age SMALLINT;
-- 删除字段 address
ALTER TABLE customers DROP COLUMN address;
-- 删除表
DROP TABLE customers;
-- 插入单条数据
INSERT INTO users (name, age, email) VALUES ('Alice', 30, 'alice@example.com');
-- 插入多条数据
INSERT INTO users (name, age, email) VALUES
('Bob', 25, 'bob@example.com'),
('Charlie', 28, 'charlie@example.com');
-- 查询所有数据
SELECT * FROM users;
-- 条件查询:年龄大于25
SELECT * FROM users WHERE age > 25;
-- 模糊查询:名字以A开头
SELECT * FROM users WHERE name LIKE 'A%';
-- 排序查询:按年龄降序
SELECT * FROM users ORDER BY age DESC;
-- 更新用户邮箱
UPDATE users SET email = 'alice@newdomain.com' WHERE name = 'Alice';
-- 删除名为 Bob 的用户
DELETE FROM users WHERE name = 'Bob';
-- 创建新用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-- 授权用户访问所有数据库和表
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
-- 查看用户权限
SHOW GRANTS FOR 'newuser'@'localhost';
-- 撤销权限
REVOKE ALL PRIVILEGES ON *.* FROM 'newuser'@'localhost';
-- 删除用户
DROP USER 'newuser'@'localhost';
-- 刷新权限表
FLUSH PRIVILEGES;
-- 备份数据库
-- 使用 mysqldump 工具将 my_database 备份到 backup.sql 文件
mysqldump -u root -p my_database > backup.sql
-- 恢复数据库
-- 从 backup.sql 文件导入数据到 my_database
mysql -u root -p my_database < backup.sql
-- 主从复制配置(主库设置)
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='replica',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
-- 启动从库复制线程
START SLAVE;
-- 查看从库状态
SHOW SLAVE STATUS\G;
-- 停止从库复制
STOP SLAVE;
-- 双主复制注意:必须使用不同 server-id,并避免冲突的 auto_increment 设置
-- 设置 server-id(my.cnf 配置文件中)
server-id=1 -- 主库1
server-id=2 -- 主库2
-- 启用 binlog(主库需要)
log-bin=mysql-bin
-- 配置 auto-increment 步长避免冲突
auto_increment_increment=2
auto_increment_offset=1 -- 主库1 设置为1,主库2设置为2