-- 创建数据库 CREATE DATABASE company_db; -- 创建数据库并指定字符集 CREATE DATABASE school_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看数据库 👀
1 2 3 4
-- 查看所有数据库 SHOW DATABASES; -- 查看创建数据库的语句 SHOW CREATE DATABASE company_db;
使用数据库 📁
1 2
-- 使用指定数据库 USE company_db;
修改数据库 🛠️
1 2 3
-- 修改数据库字符集 ALTER DATABASE school_db CHARACTER SET utf8mb4;
删除数据库 🗑️
1 2 3 4
-- 删除数据库 DROP DATABASE company_db; -- 安全删除(如果存在) DROP DATABASE IF EXISTS company_db;
表操作 📋
创建表 🆕
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
-- 创建员工表 CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE, age INT CHECK (age >= 18), department VARCHAR(50), salary DECIMAL(10,2), hire_date DATE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 创建部门表 CREATE TABLE departments ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, location VARCHAR(100) );
查看表结构 👀
1 2 3 4 5 6 7 8
-- 查看所有表 SHOW TABLES; -- 查看表结构 DESCRIBE employees; -- 或者 DESC employees; -- 查看创建表的语句 SHOW CREATE TABLE employees;
修改表结构 🛠️
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- 添加列 ALTER TABLE employees ADD COLUMN phone VARCHAR(20); -- 修改列类型 ALTER TABLE employees MODIFY COLUMN phone VARCHAR(15); -- 重命名列 ALTER TABLE employees CHANGE COLUMN phone mobile VARCHAR(15); -- 删除列 ALTER TABLE employees DROP COLUMN mobile; -- 重命名表 ALTER TABLE employees RENAME TO staff;
删除表 🗑️
1 2 3 4
-- 删除表 DROP TABLE employees; -- 安全删除(如果存在) DROP TABLE IF EXISTS employees;
-- 查询所有数据 SELECT * FROM employees; -- 查询指定列 SELECT name, email, salary FROM employees; -- 查询满足条件的数据 SELECT * FROM employees WHERE department = 'IT部门'; -- 查询工资大于8000的员工 SELECT * FROM employees WHERE salary > 8000;
更新数据 🔄
1 2 3 4 5 6 7 8 9 10 11 12
-- 更新单个记录 UPDATE employees SET salary = 8500.00 WHERE id = 1; -- 更新多个字段 UPDATE employees SET salary = 9000.00, department = '市场部' WHERE name = '张三'; -- 批量更新 UPDATE employees SET salary = salary * 1.1 WHERE department = 'IT部门';
删除数据 🗑️
1 2 3 4 5 6 7 8
-- 删除指定记录 DELETE FROM employees WHERE id = 1; -- 删除满足条件的记录 DELETE FROM employees WHERE salary < 5000; -- 清空表(保留表结构) TRUNCATE TABLE employees;
查询语句 🔎
基本查询 📊
1 2 3 4 5 6 7 8 9 10 11 12
-- 查询所有列 SELECT * FROM employees; -- 查询指定列 SELECT name, salary FROM employees; -- 去重查询 SELECT DISTINCT department FROM employees; -- 限制查询结果数量 SELECT * FROM employees LIMIT 5; -- 跳过前几条记录 SELECT * FROM employees LIMIT 5 OFFSET 10; -- 或者 SELECT * FROM employees LIMIT 10, 5;
-- 等于条件 SELECT * FROM employees WHERE department = 'IT部门'; -- 不等于条件 SELECT * FROM employees WHERE department != '人事部'; -- 或者 SELECT * FROM employees WHERE department <> '人事部'; -- 范围查询 SELECT * FROM employees WHERE salary BETWEEN 7000 AND 9000; -- 多个值查询 SELECT * FROM employees WHERE department IN ('IT部门', '财务部'); -- 模糊查询 SELECT * FROM employees WHERE name LIKE '张%'; -- 空值查询 SELECT * FROM employees WHERE email IS NULL;
排序查询 📈
1 2 3 4 5 6 7 8 9
-- 升序排序(默认) SELECT * FROM employees ORDER BY salary; -- 降序排序 SELECT * FROM employees ORDER BY salary DESC; -- 多列排序 SELECT * FROM employees ORDER BY department ASC, salary DESC;
高级查询 🚀
聚合函数 📊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-- 统计记录数 SELECT COUNT(*) FROM employees; -- 计算平均工资 SELECT AVG(salary) FROM employees; -- 计算总工资 SELECT SUM(salary) FROM employees; -- 最高工资 SELECT MAX(salary) FROM employees; -- 最低工资 SELECT MIN(salary) FROM employees; -- 按部门统计人数 SELECT department, COUNT(*) as employee_count FROM employees GROUP BY department; -- 按部门统计平均工资 SELECT department, AVG(salary) as avg_salary FROM employees GROUP BY department;
连接查询 🔗
1 2 3 4 5 6 7 8 9 10 11 12
-- 内连接 SELECT e.name, e.salary, d.location FROM employees e INNER JOIN departments d ON e.department = d.name; -- 左连接 SELECT e.name, e.salary, d.location FROM employees e LEFT JOIN departments d ON e.department = d.name; -- 右连接 SELECT e.name, e.salary, d.location FROM employees e RIGHT JOIN departments d ON e.department = d.name;
子查询 🔄
1 2 3 4 5 6
-- 查询工资高于平均工资的员工 SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); -- 查询IT部门的员工 SELECT * FROM employees WHERE department IN (SELECT name FROM departments WHERE name = 'IT部门');
联合查询 🤝
1 2 3 4
-- 合并两个查询结果 SELECT name FROM employees WHERE department = 'IT部门' UNION SELECT name FROM employees WHERE salary > 8000;
索引 📚
创建索引 🆕
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- 创建普通索引 CREATE INDEX idx_employee_name ON employees(name); -- 创建唯一索引 CREATE UNIQUE INDEX idx_employee_email ON employees(email); -- 创建复合索引 CREATE INDEX idx_employee_dept_salary ON employees(department, salary); -- 在创建表时创建索引 CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), category VARCHAR(50), price DECIMAL(10,2), INDEX idx_name (name), INDEX idx_category_price (category, price) );
查看索引 👀
1 2 3 4
-- 查看表的索引 SHOW INDEX FROM employees; -- 查看索引状态 SHOW INDEX FROM employees FROM company_db;
删除索引 🗑️
1 2 3 4
-- 删除索引 DROP INDEX idx_employee_name ON employees; -- 或者使用 ALTER TABLE ALTER TABLE employees DROP INDEX idx_employee_name;
用户权限管理 👤
创建用户 🆕
1 2 3 4
-- 创建用户 CREATE USER 'developer'@'localhost' IDENTIFIED BY 'password123'; -- 创建可以从任何主机连接的用户 CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password123';
授权权限 🔑
1 2 3 4 5 6 7 8
-- 授予数据库所有权限 GRANT ALL PRIVILEGES ON company_db.* TO 'developer'@'localhost'; -- 授予特定权限 GRANT SELECT, INSERT, UPDATE ON company_db.employees TO 'developer'@'localhost'; -- 授予只读权限 GRANT SELECT ON company_db.* TO 'developer'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES;
查看权限 👀
1 2 3 4
-- 查看用户权限 SHOW GRANTS FOR 'developer'@'localhost'; -- 查看当前用户权限 SHOW GRANTS;
撤销权限 🚫
1 2 3 4 5 6
-- 撤销特定权限 REVOKE INSERT ON company_db.employees FROM 'developer'@'localhost'; -- 撤销所有权限 REVOKE ALL PRIVILEGES ON company_db.* FROM 'developer'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES;
# 恢复数据库 mysql -u root -p company_db < company_backup.sql # 恢复所有数据库 mysql -u root -p < all_backup.sql
导出表数据 📤
1 2 3 4
# 导出表数据为CSV格式 mysql -u root -p -e "SELECT * FROM employees" company_db > employees.csv # 使用SELECT INTO OUTFILE导出 mysql -u root -p -e "SELECT * FROM employees INTO OUTFILE '/tmp/employees.csv' FIELDS TERMINATED BY ','" company_db