MySQL中变量的使用、union的用法、【union、concat()、concat_ws()】三者的区别
MySQL中变量的使用
MySQL在存储过程中,定义变量有两种方式:
#方式1、使用set或者select直接赋值,变量名以@开头
例如:
set @i := 1; #或者 set @i = 1;
可以在一个会话的任何地方声明,作用域是整个会话,称为用户变量。
#方式2、用declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量
例如:
declare i int default 0;
主要用在存储过程中,或者是给存储传参数。
两者的区别:
在调用存储过程时,以declare声明的变量都会被初始化为null。而用户变量(以@开头的变量)则不会被再次初始化,在一个会话内,只需初始化一次,之后在会话内都是对上一次计算的结果,就相当于这个会话中的全局变量。
union的用法:
union操作符用于连接两个以上的select语句的结果组合到一个结果集中。多条select语句会删除重复的数据。
格式:
select 字段1
,字段2
,字段3
,...
,字段n
from 表名1
[where where的筛选条件]
union [all | distinct] #不去重或者去重,默认情况下 UNION 操作符已经删除了重复数据
select 字段1
,字段2
,字段3
,...
,字段n
from 表名2
[where where的筛选条件]
示例:
select country
from websites
union
select country
from apps
order by country;
union、concat()、concat_ws()的区别:
concat(字段1,字段2,字段3,...):
将同一个表中的多个字段(列)的记录(行)进行字符串的拼接,如果字段中有null值,则拼接结果为null。
concat_ws(字段1,字段2,字段3,...):
是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。
union:
合并不同表中相同字段(列)的查询结果,默认会去重。