MySQL

Posted Mr_Belong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。

1.描述表得结构

     desc table_name;

2.删除表中得数据

    delete from table_name where [约束条件]

3.可变浮点数定义用decimal(n,m)

    n :是浮点数的(二进制)位数
    m:是小数分的位数
    eg:decimal(10,2) 

4.标准的存储过程模板如下:

drop procedure if exists pro_1;
delimiter $
create procedure pro_1(


)
begin
end $
delimiter ;
5.存储过程的基本语法

 <1>.设置变量                 

set @var_name = 0,@var_id = 12;
select @var_name , @var_id;
 <2>.流程控制

select username,
case username
when \'belong\' then \'handsome\'
when \'tom\' then \'sou\'
else \'ban\'
end
from user;
结果如下: 

  红色部分就是查询的第二个字段

<3>.if

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>.NULLIF(expr1,expr2):

     

 如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1这和Case when expr1  = expr2 then NULL ELSE expr1 END相同
        eg:
       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 ;
<9>.While循环:

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 ;
<10>.Repeat循环:

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 ;
<11>.LOOP循环:

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 ;
6.MySQL中declare 与 set 的区别

MySQL存储过程中,定义变量有两种方式:
(1).使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为
会话变量
(2).以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为
从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

mysql查看版本的四种方法