MySQL
Posted Mr_Belong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。
1.描述表得结构
desc table_name;
1
1
1
desc table_name;
2.删除表中得数据
delete from table_name where [约束条件]
1
1
1
delete from table_name where [约束条件]
3.可变浮点数定义用decimal(n,m)
n :是浮点数的(二进制)位数
m:是小数分的位数
eg:decimal(10,2)
3
3
1
n :是浮点数的(二进制)位数
2
m:是小数分的位数
3
eg:decimal(10,2)
4.标准的存储过程模板如下:
drop procedure if exists pro_1;
delimiter $
create procedure pro_1(
)
begin
end $
delimiter ;
9
9
1
drop procedure if exists pro_1;
2
delimiter $
3
create procedure pro_1(
4
5
6
)
7
begin
8
end $
9
delimiter ;
<1>.设置变量
set @var_name = 0,@var_id = 12;
select @var_name , @var_id;
2
2
1
set @var_name = 0,@var_id = 12;
2
select @var_name , @var_id;
<2>.流程控制
select username,
case username
when \'belong\' then \'handsome\'
when \'tom\' then \'sou\'
else \'ban\'
end
from user;
7
7
1
select username,
2
case username
3
when \'belong\' then \'handsome\'
4
when \'tom\' then \'sou\'
5
else \'ban\'
6
end
7
from user;
红色部分就是查询的第二个字段
<3>.if
select * ,if(id>4,\'男\',\'女\') sex from user;
1
1
1
select * ,if(id>4,\'男\',\'女\') sex from user;
重命名可以省略 as 因为查询的值都在select 与from之间
所以表达式要写在select 与from之间
<4>.ifnull
ifnull(expr1,expr2):如果expr1 为空 返回 expr2 否则返回expr1
set @a:=null;
select ifnull(@a,2);
set @a:=10;
select ifnull(@a,19);
5
5
1
ifnull(expr1,expr2):如果expr1 为空 返回 expr2 否则返回expr1
2
set @a:=null;
3
select ifnull(@a,2);
4
set @a:=10;
5
select ifnull(@a,19);
<5>.NULLIF(expr1,expr2):
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1这和Case when expr1 = expr2 then NULL ELSE expr1 END相同
eg:
select NULLIF(1,1)
3
3
1
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1这和Case when expr1 = expr2 then NULL ELSE expr1 END相同
2
eg:
3
select NULLIF(1,1)
<6>.存储过程中为什么要使用DELIMITER
DELIMITER 是分隔符的意思,因为mysql默认是以“;”为分隔符的,如果我们没有声明分隔符的话,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程就会报错,所以要事先用DELIMITER关键字声明当前段分割符,这样MySQL才会将“;”当做存储过程中的代码,不会执行这些代码,用完之后就把分隔符还原
<7>.存储过程与函数区别
存储过程参数分为输入和输出两类
用out和in表示存储过程用call来调用
存储过程参数还有inout型的参数 既可以当输入也可以当输出
存储过程中的控制语句都要有结束标志end
<8>.分支语句if…then…else ……end if;
DELIMITER $
create procedure pro_1()
begin
declare var int ;
set var = parameter +1;
if var=0 then
select * from user where id = 1058;
end if;
if parameter = 0 then
select * from user where id = 1060;
else
select * from user where id = 1059;
end if;
end $
DELIMITER ;
15
15
1
DELIMITER $
2
create procedure pro_1()
3
begin
4
declare var int ;
5
set var = parameter +1;
6
if var=0 then
7
select * from user where id = 1058;
8
end if;
9
if parameter = 0 then
10
select * from user where id = 1060;
11
else
12
select * from user where id = 1059;
13
end if;
14
end $
15
DELIMITER ;
DELIMITER $
create procedure pro_2()
begin
declare var int;
set var = 0;
while var<6 do
select var;
set var = var +1;
end while;
end $
DELIMITER ;
11
11
11
1
DELIMITER $
2
create procedure pro_2()
3
begin
4
declare var int;
5
set var = 0;
6
while var<6 do
7
select var;
8
set var = var +1;
9
end while;
10
end $
11
DELIMITER ;
DELIMITER $
create procedure pro_3()
begin
declare v int;
set v:=0;
repeat
select v;
set v = v+1;
until v>-5
end repeat;
end $
DELIMITER ;
12
12
1
DELIMITER $
2
create procedure pro_3()
3
begin
4
declare v int;
5
set v:=0;
6
repeat
7
select v;
8
set v = v+1;
9
until v>-5
10
end repeat;
11
end $
12
DELIMITER ;
DELIMITER $
create procedure pro_4()
begin
declare v int;
set v:=0;
LOOP_Lable:loop
select v;
set v = v+1;
if v >= 5 then
leave LOOP_Lable;#离开循环
end if;
end loop;
end $
DELIMITER ;
14
14
1
DELIMITER $
2
create procedure pro_4()
3
begin
4
declare v int;
5
set v:=0;
6
LOOP_Lable:loop
7
select v;
8
set v = v+1;
9
if v >= 5 then
10
leave LOOP_Lable;#离开循环
11
end if;
12
end loop;
13
end $
14
DELIMITER ;