当前位置:实例文章 » 其他实例» [文章]mysql的一些知识整理

mysql的一些知识整理

发布人:shili8 发布时间:2025-03-12 04:08 阅读次数:0

**MySQL 知识整理**

###1. MySQL 基础概念####1.1 MySQL 简介MySQL 是一种开源的关系型数据库管理系统,支持多种编程语言。它是目前最流行的数据库管理系统之一。

####1.2 MySQL 特点* 支持多种存储引擎(如 InnoDB、MyISAM 等)
* 支持事务处理* 支持视图和触发器* 支持存储过程* 支持分区表###2. MySQL 安装和配置####2.1 MySQL 下载和安装可以从官方网站下载 MySQL 的二进制包或源码包。这里我们使用二进制包进行安装。

bash# 下载 MySQL 二进制包wget  安装 MySQLsudo dpkg -i mysql-server_8.0.28-0ubuntu20.04_amd64.deb


####2.2 MySQL 配置可以使用 `mysql_config_editor` 工具来配置 MySQL。

bash# 使用 mysql_config_editor 配置 MySQLmysql_config_editor set --host=localhost --user=root --password=123456


###3. MySQL 数据类型MySQL 支持多种数据类型,包括整型、浮点型、字符型和日期型等。

####3.1 整型* `TINYINT`:8 位有符号整数* `SMALLINT`:16 位有符号整数* `MEDIUMINT`:24 位有符号整数* `INT`:32 位有符号整数* `BIGINT`:64 位有符号整数####3.2 浮点型* `FLOAT`:单精度浮点数* `DOUBLE`:双精度浮点数* `DECIMAL`:定点数####3.3 字符型* `CHAR`:固定长度的字符串* `VARCHAR`:可变长度的字符串* `TINYTEXT`:最大长度为255个字符的字符串* `TEXT`:最大长度为65535个字符的字符串* `MEDIUMTEXT`:最大长度为16777215个字符的字符串* `LONGTEXT`:最大长度为4294967295个字符的字符串####3.4 日期型* `DATE`:日期* `TIME`:时间* `TIMESTAMP`:时间戳* `DATETIME`:日期和时间###4. MySQL 表结构####4.1 创建表可以使用 `CREATE TABLE`语句来创建表。

sql# 创建一个名为 users 的表CREATE TABLE users (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 email VARCHAR(255) UNIQUE,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);


####4.2 表结构* `id`:整型,自增主键* `name`:字符型,不可为空* `email`:字符型,唯一索引* `created_at`:时间戳,默认当前时间戳###5. MySQL 索引和约束####5.1 索引可以使用 `CREATE INDEX`语句来创建索引。

sql# 创建一个名为 users_email 的索引CREATE INDEX idx_users_email ON users (email);


####5.2 约束* `PRIMARY KEY`:主键约束* `UNIQUE`:唯一约束* `NOT NULL`:非空约束* `FOREIGN KEY`:外键约束###6. MySQL 视图和触发器####6.1 视图可以使用 `CREATE VIEW`语句来创建视图。

sql# 创建一个名为 users_view 的视图CREATE VIEW users_view AS SELECT * FROM users;


####6.2 触发器可以使用 `CREATE TRIGGER`语句来创建触发器。

sql# 创建一个名为 users_insert_trigger 的触发器CREATE TRIGGER users_insert_trigger BEFORE INSERT ON users FOR EACH ROW SET NEW.email = LOWER(NEW.email);


###7. MySQL 存储过程####7.1 存储过程可以使用 `CREATE PROCEDURE`语句来创建存储过程。

sql# 创建一个名为 users_insert_procedure 的存储过程DELIMITER //
CREATE PROCEDURE users_insert_procedure(IN name VARCHAR(255), IN email VARCHAR(255))
BEGIN INSERT INTO users (name, email) VALUES (name, email);
END//
DELIMITER ;


####7.2 存储过程参数* `IN`:输入参数* `OUT`:输出参数* `INOUT`:输入输出参数###8. MySQL 分区表####8.1 分区表可以使用 `CREATE TABLE`语句来创建分区表。

sql# 创建一个名为 users_partition 的分区表CREATE TABLE users_partition (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 email VARCHAR(255) UNIQUE,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
PARTITION BY RANGE (YEAR(created_at)) (
 PARTITION p2010 VALUES LESS THAN (2010),
 PARTITION p2011 VALUES LESS THAN (2011),
 PARTITION p2012 VALUES LESS THAN (2012)
);


####8.2 分区表结构* `id`:整型,自增主键* `name`:字符型,不可为空* `email`:字符型,唯一索引* `created_at`:时间戳,默认当前时间戳###9. MySQL 事务处理####9.1 事务处理可以使用 `START TRANSACTION`语句来开始事务。

sql# 开始一个事务START TRANSACTION;


####9.2 回滚事务可以使用 `ROLLBACK`语句来回滚事务。

sql# 回滚事务ROLLBACK;


####9.3 提交事务可以使用 `COMMIT`语句来提交事务。

sql# 提交事务COMMIT;


###10. MySQL 错误处理####10.1 错误处理可以使用 `TRY-CATCH`语句来捕捉错误。

sql# 捕捉错误BEGIN TRY --代码块END TRYBEGIN CATCH -- 错误处理END CATCH;


####10.2 错误信息可以使用 `ERROR_MESSAGE()` 函数来获取错误信息。

sql# 获取错误信息SELECT ERROR_MESSAGE();


###11. MySQL 性能优化####11.1 索引优化可以使用 `ANALYZE TABLE`语句来分析表结构。

sql# 分析表结构ANALYZE TABLE users;


####11.2 缓存优化可以使用 `FLUSH CACHES`语句来清除缓存。

sql# 清除缓存FLUSH CACHES;


####11.3 连接池优化可以使用 `SET GLOBAL max_connections =1000` 来设置连接池大小。

sql# 设置连接池大小SET GLOBAL max_connections =1000;


###12. MySQL 安全配置####12.1 密码安全可以使用 `ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';` 来修改密码。

sql# 修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';


####12.2 权限控制可以使用 `GRANT` 和 `REVOKE`语句来控制权限。

sql# 给用户授权GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码';

# 收回用户的授权REVOKE ALL PRIVILEGES ON *.* FROM '用户名'@'%';


####12.3 监控和审计可以使用 `mysqladmin` 工具来监控和审计 MySQL。

sql# 使用 mysqladmin 来监控和审计 MySQLmysqladmin -u root -p密码 processlistmysqladmin -u root -p密码 flush-logs


###13. MySQL 升级####13.1 升级到新版本可以使用 `apt-get` 或 `yum` 命令来升级 MySQL。

sql# 升级到

相关标签:mysql数据库
其他信息

其他资源

Top