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 操作指南能帮助你在数据库管理的道路上更进一步!

相关推荐
likangbinlxa9 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k10 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦10 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL11 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·11 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
野生技术架构师11 小时前
SQL语句性能优化分析及解决方案
android·sql·性能优化
IT邦德11 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫11 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i12 小时前
完全卸载MariaDB
数据库·mariadb