MYSQL 编程:
元素:
数据
数据类型
变量
字段名
系统变量 show variables
自定义变量:
set @var_name = value;
set @a = 10; 赋值语句
set @a := 10; 赋值语句
select @a := 10; 赋值语句
select @a = 20; 关系判断,返回布尔值
select into
select 10,15,20 into @a,@b,@c
select c_name from class where id = 1 into @cname;
有效期: 会话结束
作用域: 全局的
控制流程: 循环/判断
if 条件1 then
语句
elseif 条件2 then
语句
else
语句
end if;
while 条件 do
循环体
end while
leave --终止循环
iterate --终止当前这次循环
注释
行注释:-- 或者 #
块注释: /**/
函数
内置函数
自定义函数
函数名
参数列表
函数体
返回值
/*函数,hello world*/
delimiter //
create function sayHello() returns varchar(20)
begin
return 'hello world!';
end //
delimiter ;
/*条件判断*/
drop function score;
delimiter //
create function score(a int) returns varchar(20)
begin
if a > 60 then
return '及格';
else
return '不及格';
end if;
end
//
delimiter ;
/*条件判断*/
drop function greeting;
delimiter //
create function greeting() returns varchar(20)
begin
if hour(now()) =< 9 then
return 'good morning, sir';
elseif hour(now()) >= 11 then
return '上午好';
elseif hour(now()) >= 13 then
return '中午好';
elseif hour(now()) >= 17 then
return '下午好';
else
return '晚上好';
end if ;
end
//
delimiter ;
/*循环语句*/
drop function if exists fun_sum;
delimiter //
create function fun_sum() returns int
begin
set @i = 0;
set @sum = 0;
while @i <= 10 do
set @sum = @sum + @i;
set @i = @i + 1;
end while;
return @sum;
end
//
delimiter ;
/*while循环: iterate */
drop function if exists fun_sum3;
delimiter //
create function fun_sum3() returns int
begin
set @i = 0;
set @sum = 0;
w:while @i < 10 do
set @i = @i + 1;
if @i = 5 then
iterate w;
end if;
set @sum = @sum + @i;
end while w;
return @sum;
end //
delimiter ;
/*while循环: leave */
drop function if exists fun_sum5;
delimiter //
create function fun_sum5() returns int
begin
--申明局部变量
declare i int default 0;
declare total int default 0;
w:while i < 10 do
set i = i + 1;
if i = 5 then
leave w;
end if;
set total = total + i;
end while w;
return total;
end //
delimiter ;
/*函数--传参*/
drop function if exists sayHello_you;
delimiter //
create function sayHello_you(say_name varchar(20)) returns varchar(20)
begin
return concat('hello world!',say_name);
end //
delimiter ;
/*求n的阶乘*/
drop function if exists factorial;
delimiter //
create function factorial(a int) returns int
begin
declare sum int default 1;
declare i int default 1;
while i <= a do
set sum = sum * i;
set i = i + 1;
end while;
return sum;
end //
delimiter ;
/*随机取名*/
drop function if exists c_name;
delimiter //
create function c_name() returns char(2)
begin
declare f_name char(16) default '赵钱孙李周五郑王冯陈褚卫蒋沈韩杨';
declare l_name varchar(22) default '甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥';
declare full_name varchar(2) ;
set full_name = concat(substring(f_name,floor(rand()*8+1),1),
substring(l_name,floor(rand()*11+1),1));
return full_name;
end //
delimiter ;