MySQL 数据库完整操作命令与使用指南

一、MySQL 基础概念

1.1 数据库基本组成

  • 数据库 (Database):存储数据的容器,由表、视图、存储过程等组成
  • 表 (Table):存储数据的基本单位,由行和列组成
  • 行 (Row):表中的一条记录
  • 列 (Column):表中的一个字段

1.2 数据类型

  • 数值类型:INT, BIGINT, FLOAT, DOUBLE, DECIMAL
  • 字符串类型:CHAR, VARCHAR, TEXT, ENUM, SET
  • 日期时间类型:DATE, TIME, DATETIME, TIMESTAMP, YEAR
  • 二进制类型:BINARY, VARBINARY, BLOB

二、数据定义语言 (DDL)

2.1 数据库操作

复制代码

sql

sql 复制代码
1-- 创建数据库
2CREATE DATABASE [IF NOT EXISTS] database_name 
3[CHARACTER SET charset_name] 
4[COLLATE collation_name];
5
6-- 查看所有数据库
7SHOW DATABASES;
8
9-- 选择/使用数据库
10USE database_name;
11
12-- 查看当前数据库
13SELECT DATABASE();
14
15-- 修改数据库字符集
16ALTER DATABASE database_name CHARACTER SET charset_name;
17
18-- 删除数据库
19DROP DATABASE [IF EXISTS] database_name;

2.2 表操作

复制代码

sql

sql 复制代码
1-- 创建表
2CREATE TABLE [IF NOT EXISTS] table_name (
3    column1 datatype [constraints],
4    column2 datatype [constraints],
5    ...
6    [table_constraints]
7) [ENGINE=storage_engine] [CHARSET=charset_name];
8
9-- 查看所有表
10SHOW TABLES;
11
12-- 查看表结构
13DESC table_name;
14DESCRIBE table_name;
15
16-- 查看创建表的语句
17SHOW CREATE TABLE table_name;
18
19-- 修改表结构
20ALTER TABLE table_name 
21ADD [COLUMN] column_name datatype [constraints];
22
23ALTER TABLE table_name 
24MODIFY [COLUMN] column_name datatype [constraints];
25
26ALTER TABLE table_name 
27CHANGE [COLUMN] old_column_name new_column_name datatype [constraints];
28
29ALTER TABLE table_name 
30DROP [COLUMN] column_name;
31
32-- 重命名表
33ALTER TABLE old_table_name RENAME TO new_table_name;
34RENAME TABLE old_table_name TO new_table_name;
35
36-- 删除表
37DROP TABLE [IF EXISTS] table_name;
38
39-- 清空表数据(保留表结构)
40TRUNCATE TABLE table_name;

2.3 约束操作

复制代码

sql

sql 复制代码
1-- 主键约束
2PRIMARY KEY (column_name)
3
4-- 外键约束
5FOREIGN KEY (column_name) REFERENCES parent_table(parent_column)
6
7-- 唯一约束
8UNIQUE (column_name)
9
10-- 非空约束
11NOT NULL
12
13-- 默认值
14DEFAULT value
15
16-- 自增
17AUTO_INCREMENT
18
19-- 检查约束 (MySQL 8.0+)
20CHECK (condition)

三、数据操作语言 (DML)

3.1 插入数据

复制代码

sql

sql 复制代码
1-- 插入单条数据(所有列)
2INSERT INTO table_name VALUES (value1, value2, ...);
3
4-- 插入单条数据(指定列)
5INSERT INTO table_name (column1, column2, ...) 
6VALUES (value1, value2, ...);
7
8-- 插入多条数据
9INSERT INTO table_name (column1, column2, ...) 
10VALUES 
11    (value1, value2, ...),
12    (value1, value2, ...),
13    ...;
14
15-- 插入查询结果
16INSERT INTO table_name (column1, column2, ...) 
17SELECT column1, column2, ... 
18FROM another_table 
19WHERE condition;

3.2 更新数据

复制代码

sql

sql 复制代码
1-- 更新所有行
2UPDATE table_name SET column1 = value1, column2 = value2, ...;
3
4-- 条件更新
5UPDATE table_name 
6SET column1 = value1, column2 = value2, ...
7WHERE condition;
8
9-- 使用 LIMIT 限制更新行数
10UPDATE table_name 
11SET column1 = value1 
12WHERE condition 
13LIMIT number;

3.3 删除数据

复制代码

sql

sql 复制代码
1-- 删除所有数据
2DELETE FROM table_name;
3
4-- 条件删除
5DELETE FROM table_name WHERE condition;
6
7-- 使用 LIMIT 限制删除行数
8DELETE FROM table_name WHERE condition LIMIT number;

四、数据查询语言 (DQL)

4.1 基本查询

复制代码

sql

sql 复制代码
1-- 查询所有列
2SELECT * FROM table_name;
3
4-- 查询特定列
5SELECT column1, column2, ... FROM table_name;
6
7-- 使用别名
8SELECT column1 AS alias1, column2 AS alias2 FROM table_name;

4.2 条件查询

复制代码

sql

sql 复制代码
1-- 比较运算符
2=, <>, !=, <, >, <=, >=
3
4-- 逻辑运算符
5AND, OR, NOT
6
7-- BETWEEN
8SELECT * FROM table_name 
9WHERE column_name BETWEEN value1 AND value2;
10
11-- IN
12SELECT * FROM table_name 
13WHERE column_name IN (value1, value2, ...);
14
15-- LIKE (模糊查询)
16SELECT * FROM table_name 
17WHERE column_name LIKE 'pattern';
18-- %: 任意多个字符
19-- _: 单个字符
20
21-- IS NULL / IS NOT NULL
22SELECT * FROM table_name 
23WHERE column_name IS NULL;

4.3 排序

复制代码

sql

sql 复制代码
1-- 单列排序
2SELECT * FROM table_name 
3ORDER BY column_name [ASC|DESC];
4
5-- 多列排序
6SELECT * FROM table_name 
7ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

4.4 限制结果

复制代码

sql

sql 复制代码
1-- LIMIT
2SELECT * FROM table_name LIMIT number;
3
4-- OFFSET
5SELECT * FROM table_name LIMIT offset, number;

4.5 聚合函数

复制代码

sql

sql 复制代码
1-- COUNT
2SELECT COUNT(*) FROM table_name;
3SELECT COUNT(column_name) FROM table_name;
4
5-- SUM
6SELECT SUM(column_name) FROM table_name;
7
8-- AVG
9SELECT AVG(column_name) FROM table_name;
10
11-- MAX/MIN
12SELECT MAX(column_name) FROM table_name;
13SELECT MIN(column_name) FROM table_name;
14
15-- DISTINCT
16SELECT DISTINCT column_name FROM table_name;

4.6 分组查询

复制代码

sql

sql 复制代码
1-- GROUP BY
2SELECT column1, COUNT(*) 
3FROM table_name 
4GROUP BY column1;
5
6-- HAVING (对分组结果过滤)
7SELECT column1, COUNT(*) 
8FROM table_name 
9GROUP BY column1 
10HAVING COUNT(*) > 1;

4.7 表连接

复制代码

sql

sql 复制代码
1-- INNER JOIN
2SELECT a.column1, b.column2 
3FROM table1 a 
4INNER JOIN table2 b ON a.id = b.foreign_id;
5
6-- LEFT JOIN
7SELECT a.column1, b.column2 
8FROM table1 a 
9LEFT JOIN table2 b ON a.id = b.foreign_id;
10
11-- RIGHT JOIN
12SELECT a.column1, b.column2 
13FROM table1 a 
14RIGHT JOIN table2 b ON a.id = b.foreign_id;
15
16-- FULL OUTER JOIN (MySQL 不支持,可用 UNION 实现)
17SELECT a.column1, b.column2 
18FROM table1 a 
19LEFT JOIN table2 b ON a.id = b.foreign_id
20UNION
21SELECT a.column1, b.column2 
22FROM table1 a 
23RIGHT JOIN table2 b ON a.id = b.foreign_id 
24WHERE a.id IS NULL;
25
26-- 自连接
27SELECT a.column1, b.column2 
28FROM table1 a, table1 b 
29WHERE a.id = b.parent_id;

4.8 子查询

复制代码

sql

sql 复制代码
1-- WHERE 子查询
2SELECT * FROM table_name 
3WHERE column_name = (SELECT column_name FROM another_table WHERE condition);
4
5-- FROM 子查询
6SELECT * FROM (SELECT * FROM table_name WHERE condition) AS subquery;
7
8-- EXISTS 子查询
9SELECT * FROM table_name a 
10WHERE EXISTS (SELECT 1 FROM another_table b WHERE a.id = b.foreign_id);

4.9 联合查询

复制代码

sql

sql 复制代码
1-- UNION (去重)
2SELECT column1 FROM table1 
3UNION 
4SELECT column1 FROM table2;
5
6-- UNION ALL (不去重)
7SELECT column1 FROM table1 
8UNION ALL 
9SELECT column1 FROM table2;

五、数据控制语言 (DCL)

5.1 用户管理

复制代码

sql

sql 复制代码
1-- 创建用户
2CREATE USER 'username'@'host' IDENTIFIED BY 'password';
3
4-- 修改用户密码
5ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
6
7-- 删除用户
8DROP USER 'username'@'host';
9
10-- 查看当前用户
11SELECT USER();

5.2 权限管理

复制代码

sql

sql 复制代码
1-- 授予权限
2GRANT privilege_type ON database_name.table_name TO 'username'@'host';
3
4-- 授予所有权限
5GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
6
7-- 撤销权限
8REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
9
10-- 查看权限
11SHOW GRANTS FOR 'username'@'host';
12
13-- 刷新权限
14FLUSH PRIVILEGES;

5.3 权限类型

复制代码

sql

sql 复制代码
1-- 全局权限
2GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';
3
4-- 数据库权限
5GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
6
7-- 表权限
8GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';
9
10-- 列权限
11GRANT SELECT (column1), INSERT (column1, column2) ON database_name.table_name TO 'username'@'host';
12
13-- 存储过程权限
14GRANT EXECUTE ON PROCEDURE database_name.procedure_name TO 'username'@'host';

六、事务管理

6.1 事务操作

复制代码

sql

sql 复制代码
1-- 开始事务
2START TRANSACTION;
3BEGIN;
4
5-- 提交事务
6COMMIT;
7
8-- 回滚事务
9ROLLBACK;
10
11-- 设置自动提交
12SET autocommit = 0; -- 关闭自动提交
13SET autocommit = 1; -- 开启自动提交

6.2 事务隔离级别

复制代码

sql

sql 复制代码
1-- 查看事务隔离级别
2SELECT @@transaction_isolation;
3
4-- 设置事务隔离级别
5SET TRANSACTION ISOLATION LEVEL level;
6
7-- 隔离级别
8READ UNCOMMITTED
9READ COMMITTED
10REPEATABLE READ (MySQL 默认)
11SERIALIZABLE

6.3 保存点

复制代码

sql

sql 复制代码
1-- 设置保存点
2SAVEPOINT savepoint_name;
3
4-- 回滚到保存点
5ROLLBACK TO savepoint_name;
6
7-- 释放保存点
8RELEASE SAVEPOINT savepoint_name;

七、索引操作

7.1 索引管理

复制代码

sql

sql 复制代码
1-- 创建索引
2CREATE INDEX index_name ON table_name (column_name);
3
4-- 创建唯一索引
5CREATE UNIQUE INDEX index_name ON table_name (column_name);
6
7-- 创建全文索引 (MyISAM, InnoDB)
8CREATE FULLTEXT INDEX index_name ON table_name (column_name);
9
10-- 创建组合索引
11CREATE INDEX index_name ON table_name (column1, column2, ...);
12
13-- 查看索引
14SHOW INDEX FROM table_name;
15
16-- 删除索引
17DROP INDEX index_name ON table_name;
18ALTER TABLE table_name DROP INDEX index_name;

7.2 索引类型

  • 普通索引:基本索引类型,无唯一性限制
  • 唯一索引:索引列的值必须唯一
  • 主键索引:特殊的唯一索引,不允许有空值
  • 组合索引:多列组合的索引
  • 全文索引:用于全文搜索
  • 空间索引:用于地理空间数据类型

八、视图操作

8.1 视图管理

复制代码

sql

sql 复制代码
1-- 创建视图
2CREATE VIEW view_name AS 
3SELECT column1, column2, ... 
4FROM table_name 
5WHERE condition;
6
7-- 查看视图定义
8SHOW CREATE VIEW view_name;
9
10-- 查看视图数据
11SELECT * FROM view_name;
12
13-- 修改视图
14CREATE OR REPLACE VIEW view_name AS 
15SELECT column1, column2, ... 
16FROM table_name 
17WHERE new_condition;
18
19ALTER VIEW view_name AS 
20SELECT column1, column2, ... 
21FROM table_name 
22WHERE new_condition;
23
24-- 删除视图
25DROP VIEW [IF EXISTS] view_name;

8.2 视图特性

  • 视图是虚拟表,不存储数据
  • 视图可以简化复杂查询
  • 视图可以提供数据安全性
  • 视图可以逻辑隔离数据

九、存储过程和函数

9.1 存储过程

复制代码

sql

sql 复制代码
1-- 创建存储过程
2DELIMITER //
3CREATE PROCEDURE procedure_name (parameters)
4BEGIN
5    -- 存储过程体
6END //
7DELIMITER ;
8
9-- 调用存储过程
10CALL procedure_name(parameters);
11
12-- 查看存储过程
13SHOW CREATE PROCEDURE procedure_name;
14SHOW PROCEDURE STATUS;
15
16-- 删除存储过程
17DROP PROCEDURE [IF EXISTS] procedure_name;

9.2 存储函数

复制代码

sql

sql 复制代码
1-- 创建存储函数
2DELIMITER //
3CREATE FUNCTION function_name (parameters) 
4RETURNS return_type
5BEGIN
6    -- 函数体
7    RETURN value;
8END //
9DELIMITER ;
10
11-- 调用存储函数
12SELECT function_name(parameters);
13
14-- 查看存储函数
15SHOW CREATE FUNCTION function_name;
16SHOW FUNCTION STATUS;
17
18-- 删除存储函数
19DROP FUNCTION [IF EXISTS] function_name;

9.3 参数类型

  • IN:输入参数(默认)
  • OUT:输出参数
  • INOUT:输入输出参数

9.4 变量和流程控制

复制代码

sql

sql 复制代码
1-- 变量声明
2DECLARE variable_name datatype [DEFAULT value];
3
4-- 赋值
5SET variable_name = value;
6SELECT column INTO variable_name FROM table_name WHERE condition;
7
8-- 条件语句
9IF condition THEN
10    -- 语句
11ELSEIF condition THEN
12    -- 语句
13ELSE
14    -- 语句
15END IF;
16
17-- 循环语句
18WHILE condition DO
19    -- 语句
20END WHILE;
21
22REPEAT
23    -- 语句
24UNTIL condition
25END REPEAT;
26
27LOOP
28    -- 语句
29    IF condition THEN
30        LEAVE;
31    END IF;
32END LOOP;

十、触发器

10.1 触发器管理

复制代码

sql

sql 复制代码
1-- 创建触发器
2DELIMITER //
3CREATE TRIGGER trigger_name
4{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
5FOR EACH ROW
6BEGIN
7    -- 触发器体
8END //
9DELIMITER ;
10
11-- 查看触发器
12SHOW TRIGGERS;
13SHOW CREATE TRIGGER trigger_name;
14
15-- 删除触发器
16DROP TRIGGER [IF EXISTS] trigger_name;

10.2 触发器特性

  • BEFORE/AFTER:触发时机
  • INSERT/UPDATE/DELETE:触发事件
  • FOR EACH ROW:行级触发器
  • OLD/NEW:访问旧值和新值

10.3 触发器示例

复制代码

sql

sql 复制代码
1-- 插入前触发器
2DELIMITER //
3CREATE TRIGGER before_insert_trigger
4BEFORE INSERT ON table_name
5FOR EACH ROW
6BEGIN
7    SET NEW.created_at = NOW();
8END //
9DELIMITER ;
10
11-- 更新后触发器
12DELIMITER //
13CREATE TRIGGER after_update_trigger
14AFTER UPDATE ON table_name
15FOR EACH ROW
16BEGIN
17    INSERT INTO audit_table (action, old_value, new_value)
18    VALUES ('UPDATE', OLD.value, NEW.value);
19END //
20DELIMITER ;

十一、事件调度器

11.1 事件管理

复制代码

sql

sql 复制代码
1-- 启用事件调度器
2SET GLOBAL event_scheduler = ON;
3
4-- 创建事件
5CREATE EVENT [IF NOT EXISTS] event_name
6ON SCHEDULE schedule
7DO
8    -- 事件体
9
10-- 查看事件
11SHOW EVENTS;
12SHOW CREATE EVENT event_name;
13
14-- 修改事件
15ALTER EVENT event_name 
16ON SCHEDULE new_schedule;
17
18-- 删除事件
19DROP EVENT [IF EXISTS] event_name;

11.2 事件调度

复制代码

sql

sql 复制代码
1-- 一次性事件
2AT TIMESTAMP '2023-12-31 23:59:59'
3
4-- 周期性事件
5EVERY interval STARTS start_time ENDS end_time
6
7-- 间隔类型
8MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

十二、备份与恢复

12.1 逻辑备份

复制代码

sql

sql 复制代码
1-- 备份数据库
2mysqldump -u username -p database_name > backup.sql
3
4-- 备份所有数据库
5mysqldump -u username -p --all-databases > all_backup.sql
6
7-- 备份表结构
8mysqldump -u username -p --no-data database_name > structure.sql
9
10-- 备份数据
11mysqldump -u username -p --no-create-info database_name > data.sql
12
13-- 恢复数据库
14mysql -u username -p database_name < backup.sql

12.2 物理备份

复制代码

sql

sql 复制代码
1-- 复制数据文件(需要停止MySQL服务)
2
3-- 使用MySQL Enterprise Backup
4
5-- 使用Percona XtraBackup

12.3 增量备份

复制代码

sql

sql 复制代码
1-- 启用二进制日志
2SET GLOBAL log_bin = ON;
3
4-- 查看二进制日志
5SHOW BINARY LOGS;
6
7-- 恢复二进制日志
8mysqlbinlog binlog.000001 | mysql -u username -p

十三、性能优化

13.1 查询优化

复制代码

sql

sql 复制代码
1-- 查看执行计划
2EXPLAIN SELECT * FROM table_name WHERE condition;
3EXPLAIN FORMAT=JSON SELECT * FROM table_name WHERE condition;
4
5-- 分析查询性能
6ANALYZE TABLE table_name;
7
8-- 检查表
9CHECK TABLE table_name;
10
11-- 优化表
12OPTIMIZE TABLE table_name;

13.2 索引优化

复制代码

sql

sql 复制代码
1-- 查看索引使用情况
2SHOW INDEX FROM table_name;
3
4-- 使用索引提示
5SELECT * FROM table_name USE INDEX (index_name) WHERE condition;
6SELECT * FROM table_name FORCE INDEX (index_name) WHERE condition;
7SELECT * FROM table_name IGNORE INDEX (index_name) WHERE condition;

13.3 配置优化

复制代码

sql

sql 复制代码
1-- 查看配置变量
2SHOW VARIABLES;
3SHOW VARIABLES LIKE '%keyword%';
4
5-- 查看全局变量
6SHOW GLOBAL VARIABLES;
7
8-- 查看会话变量
9SHOW SESSION VARIABLES;
10
11-- 设置配置变量
12SET GLOBAL variable_name = value;
13SET SESSION variable_name = value;

13.4 关键配置参数

  • innodb_buffer_pool_size:InnoDB 缓冲池大小
  • key_buffer_size:MyISAM 索引缓冲大小
  • max_connections:最大连接数
  • query_cache_size:查询缓存大小(MySQL 8.0 已移除)
  • tmp_table_size:临时表大小
  • innodb_log_file_size:InnoDB 日志文件大小

十四、实用工具和命令

14.1 系统信息

复制代码

sql

sql 复制代码
1-- 查看MySQL版本
2SELECT VERSION();
3
4-- 查看服务器状态
5SHOW STATUS;
6
7-- 查看进程列表
8SHOW PROCESSLIST;
9
10-- 查看存储引擎
11SHOW ENGINES;
12
13-- 查看字符集
14SHOW CHARACTER SET;
15
16-- 查看排序规则
17SHOW COLLATION;

14.2 用户和权限

复制代码

sql

sql 复制代码
1-- 查看当前用户权限
2SHOW GRANTS;
3
4-- 查看所有用户
5SELECT user, host FROM mysql.user;
6
7-- 查看数据库权限
8SHOW GRANTS FOR 'username'@'host';

14.3 表和索引信息

复制代码

sql

sql 复制代码
1-- 查看表状态
2SHOW TABLE STATUS;
3
4-- 查看索引信息
5SHOW INDEX FROM table_name;
6
7-- 查看表大小
8SELECT 
9    table_name AS 'Table',
10    ROUND((data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
11FROM information_schema.TABLES
12WHERE table_schema = 'database_name';

十五、高级特性

15.1 分区表

复制代码

sql

sql 复制代码
1-- 创建分区表
2CREATE TABLE table_name (
3    id INT,
4    created_at DATE
5) PARTITION BY RANGE (YEAR(created_at)) (
6    PARTITION p0 VALUES LESS THAN (2020),
7    PARTITION p1 VALUES LESS THAN (2021),
8    PARTITION p2 VALUES LESS THAN (2022),
9    PARTITION p3 VALUES LESS THAN MAXVALUE
10);
11
12-- 查看分区信息
13EXPLAIN PARTITIONS SELECT * FROM table_name WHERE condition;

15.2 复制

复制代码

sql

sql 复制代码
1-- 配置主服务器
2-- my.cnf
3server-id = 1
4log_bin = mysql-bin
5binlog_do_db = database_name
6
7-- 配置从服务器
8-- my.cnf
9server-id = 2
10relay_log = mysql-relay-bin
11log_slave_updates = 1
12read_only = 1
13
14-- 复制命令
15CHANGE MASTER TO
16    MASTER_HOST = 'master_host',
17    MASTER_USER = 'replication_user',
18    MASTER_PASSWORD = 'password',
19    MASTER_LOG_FILE = 'mysql-bin.000001',
20    MASTER_LOG_POS = 107;
21
22START SLAVE;
23STOP SLAVE;
24SHOW SLAVE STATUS;

15.3 集群

复制代码

sql

sql 复制代码
1-- MySQL Group Replication
2-- MySQL InnoDB Cluster
3-- MySQL NDB Cluster

十六、安全管理

16.1 密码策略

复制代码

sql

sql 复制代码
1-- 查看密码策略
2SHOW VARIABLES LIKE 'validate_password%';
3
4-- 设置密码策略
5SET GLOBAL validate_password.policy = MEDIUM;
6SET GLOBAL validate_password.length = 8;
7SET GLOBAL validate_password.number_count = 1;
8SET GLOBAL validate_password.special_char_count = 1;
9SET GLOBAL validate_password.mixed_case_count = 1;

16.2 SSL 连接

复制代码

sql

sql 复制代码
1-- 启用 SSL
2-- my.cnf
3[mysqld]
4ssl-ca = ca.pem
5ssl-cert = server-cert.pem
6ssl-key = server-key.pem
7
8-- 查看 SSL 状态
9SHOW STATUS LIKE 'Ssl_cipher';

16.3 审计日志

复制代码

sql

sql 复制代码
1-- 启用审计日志
2-- my.cnf
3[mysqld]
4server_audit_logging = ON
5server_audit_events = CONNECT, QUERY
6server_audit_file_path = /var/log/mysql/audit.log
7
8-- 查看审计日志
9SELECT * FROM mysql.general_log;

十七、常用函数

17.1 字符串函数

复制代码

sql

sql 复制代码
1CONCAT(str1, str2, ...)
2SUBSTRING(str, pos, len)
3REPLACE(str, from_str, to_str)
4UPPER(str)
5LOWER(str)
6LENGTH(str)
7TRIM(str)

17.2 数值函数

复制代码

sql

sql 复制代码
1ABS(num)
2ROUND(num, decimals)
3CEIL(num)
4FLOOR(num)
5MOD(num1, num2)
6RAND()

17.3 日期时间函数

复制代码

sql

sql 复制代码
1NOW()
2CURDATE()
3CURTIME()
4DATE_FORMAT(date, format)
5DATEDIFF(date1, date2)
6DATE_ADD(date, INTERVAL expr unit)
7DATE_SUB(date, INTERVAL expr unit)

17.4 聚合函数

复制代码

sql

sql 复制代码
1COUNT()
2SUM()
3AVG()
4MAX()
5MIN()
6GROUP_CONCAT()

17.5 其他函数

复制代码

sql

sql 复制代码
1IF(expr, true_val, false_val)
2CASE expr WHEN val1 THEN result1 ... ELSE result END
3COALESCE(val1, val2, ...)
4NULLIF(val1, val2)

十八、错误处理

18.1 错误代码

复制代码

sql

sql 复制代码
1-- 查看错误信息
2SHOW ERRORS;
3SHOW WARNINGS;
4
5-- 获取错误代码
6SELECT @@error_code;

18.2 异常处理(存储过程)

复制代码

sql

sql 复制代码
1DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
2BEGIN
3    -- 异常处理代码
4END;
5
6DECLARE EXIT HANDLER FOR SQLWARNING
7BEGIN
8    -- 警告处理代码
9END;

18.3 常见错误

  • 1062:重复键错误
  • 1048:列不能为空
  • 1215:外键约束错误
  • 1045:访问拒绝
  • 2006:MySQL服务器已断开连接

十九、最佳实践

19.1 数据库设计

  • 遵循第三范式
  • 使用合适的数据类型
  • 设置适当的约束
  • 设计合理的索引

19.2 查询优化

  • 避免 SELECT *
  • 使用索引
  • 避免函数操作索引列
  • 使用 EXPLAIN 分析查询
  • 优化 JOIN 操作

19.3 安全实践

  • 使用强密码
  • 最小权限原则
  • 定期备份
  • 更新 MySQL 版本
  • 使用 SSL 连接

19.4 维护建议

  • 定期分析和优化表
  • 监控服务器状态
  • 清理日志文件
  • 监控磁盘空间
  • 定期检查数据完整性

二十、总结

MySQL 是一个功能强大且灵活的关系型数据库管理系统。通过掌握上述命令和概念,你可以:

  1. 高效管理数据库:创建、修改、删除数据库和表
  2. 熟练操作数据:插入、查询、更新、删除数据
  3. 优化查询性能:使用索引、分析执行计划
  4. 确保数据安全:管理用户权限、备份恢复数据
  5. 实现高级功能:使用存储过程、触发器、视图
  6. 维护系统稳定:监控性能、处理错误、优化配置

持续学习和实践是掌握 MySQL 的关键。建议:

  • 阅读官方文档
  • 参与开源项目
  • 解决实际问题
  • 参加相关培训
  • 加入技术社区

希望这份完整的 MySQL 操作指南能帮助你在数据库管理的道路上更进一步!

相关推荐
DKunYu3 小时前
误删数据库表导致出现1146报错
数据库
惜分飞4 小时前
sql server 事务日志备份异常恢复案例---惜分飞
前端·数据库·php
sunddy_x4 小时前
MySQL入门
数据库·mysql
_Minato_5 小时前
数据库知识整理——数据库设计的步骤
数据库·经验分享·笔记·软考
hssfscv5 小时前
Mysql学习笔记——事务
笔记·学习·mysql
坐吃山猪5 小时前
BrowserUse14-源码-ScreenShot模块-整理
linux·数据库·python
廋到被风吹走5 小时前
【数据库】【MySQL】各种 JOIN 的特点及应用场景
数据库·mysql
@nengdoudou5 小时前
KingbaseES 实现 MySQL 函数 DATEDIFF
数据库·mysql
Knight_AL6 小时前
如何在 MySQL 中优雅统计“只算周一到周五”的到访数据?
数据库·mysql