系统会话变量与用户会话变量
共同之处
- 变量大小写不敏感
区别 - 用户会话变量以一个”@”开头,系统会话变量以两个”@”开头;
- 系统会话变量无需定义可以直接使用;
用户会话变量与局部变量
区别:
- 用户会话变量以”@”开头,而局部变量名前面没有”@”符号。
- 局部变量使用declare命令定义(存储过程、函数参数除外),定义时必须指定局部变量的数据类型。局部变量定义之后,才可以使用set 命令或者select语句为其赋值。
- 用户会话变量的作用范围和生产周期大于局部变量。若在存储过程或者函数参数使用,则在整个存储过程或函数中有效;如果定义在存储程序的begin-end语句块中,则只在语句块内有效。
- 如果局部变量嵌入到SQL语句中,由于局部变量名前没有”@”符号,这就要求局部变量名不能与表字段名同名。
重置命令结束标记
为了避免begin-end语句块中的多条MySQL表达式被拆开,需要重置MySQL客户机中的命令结束标记(delimiter)。
与时区设定无关的函数
- unix_timestamp()
- unix_timestamp(datetime)
- utc_date()
- curdate()
- curtime()
- utc_time()