0%

Linux 环境变量全解析:配置、管理与实战

环境变量是 Linux 系统中存储系统配置和用户偏好的关键机制,它能在全局或局部范围内影响命令的执行和程序的运行。本文将详细介绍环境变量的设置、查询、删除方法,重点解析 PATH 变量的作用,以及如何通过配置文件实现环境变量的持久化。

环境变量的基本概念

环境变量是一组键值对(键=值),用于存储系统或用户的配置信息,例如:

  • 系统级变量:PATH(命令搜索路径)、HOME(用户主目录)、USER(当前用户名)。
  • 用户自定义变量:JAVA_HOME(Java 安装路径)、PYTHONPATH(Python 模块搜索路径)。

环境变量的作用域分为:

  • 全局环境变量:对所有用户和进程可见(如 /etc/profile 中定义的变量)。
  • 局部环境变量:仅对当前 Shell 会话或进程可见(如终端中临时定义的变量)。

环境变量的基本操作

设置环境变量

使用 export 命令可以定义环境变量(全局或局部):

1
2
3
4
5
6
7
8
# 定义局部环境变量(仅当前 Shell 有效)
age=18

# 定义全局环境变量(对当前 Shell 及子进程有效)
export age=18

# 同时定义并导出变量(推荐)
export WORK_DIR=/home/user/work

注意

阅读全文 »

MySQL 自定义函数详解:单一返回值的 SQL 逻辑封装

MySQL 自定义函数(Function)是一组预先编译好的 SQL 语句集合,与存储过程类似,但只能返回一个值,主要用于数据计算或转换。本文详细讲解自定义函数的创建、使用及注意事项,帮助你灵活封装复用逻辑。

自定义函数的核心特性

  • 单一返回值:函数必须有且仅有一个返回值(通过 RETURN 语句),而存储过程可返回多个值。
  • 嵌入查询:函数可作为表达式的一部分嵌入 SELECTWHERE 等子句中,存储过程需用 CALL 单独调用。
  • 适用场景:适合封装简单的计算逻辑(如数据转换、聚合计算),复杂业务逻辑更适合用存储过程。

自定义函数的基本语法

创建函数

1
2
3
4
5
6
7
8
9
DELIMITER 自定义结束符  -- 如 $,避免与函数体内的分号冲突
CREATE FUNCTION 函数名(参数列表)
RETURNS 返回值类型 -- 声明返回值的数据类型(如 INT、VARCHAR)
DETERMINISTIC -- 可选,用于二进制日志安全(见后文说明)
BEGIN
-- 函数体(SQL语句集合,必须包含 RETURN 语句)
RETURN 返回值;
END 自定义结束符
DELIMITER ; -- 恢复默认结束符
参数列表格式:

仅包含 “参数名 + 数据类型”(无参数模式,默认均为输入参数),如 (id INT, name VARCHAR(50))

调用函数

函数可直接嵌入 SQL 语句中,作为表达式的一部分:

1
2
3
SELECT 函数名(参数列表);  -- 单独调用,返回结果
-- 或嵌入查询
SELECT id, 函数名(字段名) AS 计算结果 FROM 表名;

查看函数

阅读全文 »

MySQL 存储过程详解:预编译 SQL 的高效应用

存储过程(Stored Procedure)是一组预先编译好的 SQL 语句集合,存储在数据库中,可通过名称直接调用。它能简化复杂操作、提高代码重用性,并减少数据库交互次数,是提升数据库性能的重要工具。

存储过程的核心优势

  1. 代码重用:一次定义,多次调用,避免重复编写相同 SQL。
  2. 减少网络交互:将多步 SQL 合并为一个存储过程,减少与数据库的连接次数。
  3. 提高安全性:可通过权限控制存储过程的调用,限制直接访问表的权限。
  4. 预编译优化:创建时编译一次,后续调用无需重新编译,提升执行效率。

存储过程的基本语法

创建存储过程

1
2
3
4
5
6
7
-- 语法
DELIMITER 自定义结束符 -- 因存储过程体含分号,需临时修改SQL结束符(如$)
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
-- 存储过程体(SQL语句集合)
END 自定义结束符
DELIMITER ; -- 恢复默认结束符(;)
参数列表格式:

参数由 “参数模式 + 参数名 + 数据类型” 组成,支持三种模式:

  • IN:输入参数(调用时需传入值)。
  • OUT:输出参数(作为返回值,需用用户变量接收)。
  • INOUT:既作为输入,也作为输出。

调用存储过程

1
CALL 存储过程名(参数列表);  -- 参数列表需与定义时的顺序和模式匹配

删除存储过程

阅读全文 »

MySQL 变量详解:系统变量与自定义变量的使用

MySQL 中的变量是存储数据的容器,分为系统变量(MySQL 内置,控制数据库行为)和自定义变量(用户定义,用于查询或存储过程中传递数据)。合理使用变量可简化操作、提升脚本灵活性。本文详细解析两类变量的定义、使用及区别。

系统变量:控制 MySQL 运行行为

系统变量是 MySQL 预定义的变量,用于配置数据库的运行参数(如连接数、缓存大小等),分为全局变量(影响所有会话)和会话变量(仅影响当前会话)。

系统变量的分类与作用

类型 作用范围 生效时机 示例
全局变量 所有会话(连接) 重启 MySQL 或通过 SET GLOBAL 修改后生效 max_connections(最大连接数)
会话变量 当前会话(连接) 会话启动时继承全局变量,SET SESSION 修改后立即生效 autocommit(自动提交开关)

查看系统变量

(1)查看所有系统变量
1
2
3
4
5
-- 查看所有全局变量
SHOW GLOBAL VARIABLES;

-- 查看所有会话变量(默认显示当前会话)
SHOW SESSION VARIABLES; -- 或简写为 SHOW VARIABLES;
(2)过滤查询特定变量

使用 LIKE 匹配变量名(支持通配符 %):

1
2
3
4
5
-- 查看所有包含“timeout”的全局变量
SHOW GLOBAL VARIABLES LIKE '%timeout%';

-- 查看当前会话的字符集变量
SHOW SESSION VARIABLES LIKE 'character_set_%';
(3)查询单个变量的值

通过 @@ 符号访问变量:

阅读全文 »

MySQL 视图详解:虚拟表的创建与应用

视图(View)是 MySQL 中一种虚拟存在的表,它不存储实际数据,而是保存查询逻辑,动态生成结果。合理使用视图可以简化复杂查询、提高数据访问的安全性和一致性。本文详细解析视图的概念、操作及适用场景。

视图的核心概念

视图是基于一个或多个表的查询结果构建的虚拟表,具有以下特性:

  • 不存储数据:仅保存 SQL 查询逻辑,每次使用视图时,MySQL 会动态执行查询并返回结果。
  • 结构依赖源表:视图的字段来自定义视图时的 SELECT 语句,源表结构变化可能导致视图失效。
  • 无物理存储:不占用额外存储空间(除视图定义本身),也不能创建索引、触发器或默认值。

视图的应用场景

视图适用于以下场景,帮助简化操作和提升安全性:

  1. 简化复杂查询:将多表关联、聚合计算等复杂查询封装为视图,后续使用时直接查询视图即可。
  2. 重用查询逻辑:多个业务场景需要相同的查询结果时,视图可避免重复编写 SQL。
  3. 限制数据访问:通过视图只暴露部分字段(如隐藏密码、身份证号等敏感信息),保护原始数据。
  4. 统一数据接口:当源表结构变更时,只需修改视图定义,无需修改依赖该视图的应用代码。

视图的基本操作

创建视图

语法

阅读全文 »