mysql笔记--变量的使用、union用法,concat()三者区别


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:

合并不同表中相同字段(列)的查询结果,默认会去重。