mysql编程 变量 运算符 流程控制语句

################
#MySQL编程 
################
-- DDL数据定义语言 :create drop alter 
-- DML数据操作语言:insert select update delete
-- DCL数据控制语言:grant(授予权限)revoke(收回权限) 
-- MySQL增加了语言元素:常量 变量 运算符 函数 流程控制语句 注释 

#######1.变量 
-- 局部变量:declare声明,可以用default说明默认值 只在begin...end之间有效 
--           比如declare c int default 0;

-- 用户变量:会话变量、全局变量   前面加@ :=赋值
-- set @x=0
-- set @color := 'red'
select @x,@color;

-- 会话变量 
#设置会话变量 三种方式 
set session x = 1;
set @@session.x =1;
set x =1;
#查看会话变量 下面四中方式 
show session variables;-- 查看所有
show session variables like '%var%'; -- 查看特定变量的值 
select @@x;
select @@session.x;

-- 全局变量 
#设置全局变量 两种方式 
set global x = 1;
set @@global.x =1;

#查看全局变量 两种方式 
select @@global.x;
show global variables like '%var%';

##############2.运算符 

-- 算术运算符 :+ 、- 、 * 、 / 、 %
-- 逻辑运算符  and与&& :所有操作数部位0不为null,结果返回1;存在一个0,返回0;存在一个null且没有1,返回null
--             or与|| :所有操作数只要有一个不为0不为null,结果返回1;所有操作数只有0,返回0,所有操作数有0有null,返回null。
--             not与! :非0返回0;0返回1;null返回null
--             xor :只要有null就返回null;全都是非零或者全是零 就返回0;一个非零一个0 返回1(逻辑相同返回0)



-- 比较运算符 =、<= 、<> 、between and 、in、is null、like、regexp

-- 位运算符 先变成二进制再变成十进制 &  | ~ >> ^ <<

###############3.流程控制语句 
-- if(条件,结果1,结果2)
select address_id,if(name='k', yes ,no) from student;

if num < 6 then select num
end if;

/*
if 条件判断 then 执行语句 
[elseif 条件判断 then 执行语句 ]
[else 执行语句]
end if
*/

-- CASE表达式

#####################

 

#1.搜索case表达式

use xscj;

-- case when <求值表达式> then <表达式>

--      when <求值表达式> then <表达式>

--      when <求值表达式> then <表达式>

--      ...

--     else <表达式>

-- END

##case表达式从最初的when开始,如果为真执行then,为假就进行下一步 

-- case最后返回 

-- ||为字符串拼接

 

##这句没有达到预期效果 可能 ||在MySQL不支持

SELECT product_name,       

     CASE WHEN product_type = '衣服'            

          THEN 'A :' || product_type            

          WHEN product_type = '办公用品'            

          THEN 'B:' || product_type            

		  WHEN product_type = '厨房用具'            

          THEN 'C :' || product_type            

          ELSE NULL       

	 END AS abc_product_type  

FROM Product;

SELECT product_name,       

     CASE WHEN product_type = '衣服'            

          THEN 'A'           

          WHEN product_type = '办公用品'            

          THEN 'B'             

		  WHEN product_type = '厨房用具'            

          THEN 'C'             

          ELSE NULL       

	 END AS abc_product_type  

FROM Product;

 

     when <求值表达式> then <表达式>

     when <求值表达式> then <表达式>

       ...

	 ELSE <表达式>

end

 

##进行行列转换

select product_type,

       sum(sale_price) as sum_price from product

       group by product_type;

--  下面进行行列转换  

select sum(case when product_type = '衣服'

                then sale_price else 0 end)as sum_price_clothes,

	   sum(case when product_type = '厨房用具'

                then sale_price else 0 end)as sum_price_kitchen,

	   sum(case when product_type = '办公用品'

                then sale_price else 0 end)as sum_price_office

from product;

 

#1.简单case表达式

-- case <表达式>

-- 	    when <表达式> then <表达式>

--      when <表达式> then <表达式>

--      when <表达式> then <表达式>

--      ...

--     else <表达式>

-- END

SELECT product_name,       

     CASE WHEN product_type = '衣服'            

          THEN 'A'           

          WHEN product_type = '办公用品'            

          THEN 'B'             

		  WHEN product_type = '厨房用具'            

          THEN 'C'             

          ELSE NULL       

	 END AS abc_product_type  

FROM Product;

#########对比 

SELECT product_name,

     CASE product_type

          WHEN  '衣服'            

          THEN 'A'           

          WHEN '办公用品'            

          THEN 'B'             

		  WHEN  '厨房用具'            

          THEN 'C'             

          ELSE NULL       

	 END AS abc_product_type  

FROM Product;




-- 循环语句 (略。。。)

猜你喜欢

转载自blog.csdn.net/kylin_learn/article/details/81411317