zoukankan      html  css  js  c++  java
  • MySQL基础~~编程语法

    常量

      数值

      字符串:单引号或者双引号括起来。包括普通字符串或者日期格式的字符串。

      布尔值:false(FALSE)对应数字值为0、true(TRUE)对应数字值为1。

      NULL:可以参考http://www.cnblogs.com/-beyond/p/8554483.html

    变量

    定义用户变量

      mysql中变量分为用户变量和系统变量。

      用户变量要先定义和初始化赋值,否则变量的值为NULL。

      用户变量只在本次连接阶段有效,其他用户的连接不能使用另外一个用户定义的变量,并且当连接释放后,变量就会销毁。

      声明变量格式:set @key = value,可以一次性声明多个。

      如果变量名中有特殊符号,那么可以用引号将变量名括起来,比如 set @'abc def' = 123;

    访问用户变量

      select @name;

    系统变量

      系统变量是以2个@@开头。

    mysql> select @@version;
    

     

    获得系统变量列表  

    mysql> show variables;
    mysql> show variables like '%test%';
    

     

     

    算数运算符

       + - * / %  

       +和-还可以用来计算日期;  

    mysql> select now(),now() + interval 22 day;
    +---------------------+-------------------------+
    | now()               | now() + interval 22 day |
    +---------------------+-------------------------+
    | 2018-06-19 22:55:02 | 2018-07-11 22:55:02     |
    +---------------------+-------------------------+
    1 row in set (0.00 sec)  

      

    比较运算符

      在mysql里面,判断等于只用一个等号=,不像其他编程语言一样使用双等或者三等。判断不等使用!=和<>。

      其他比较运算符和其他编程语言一样使用。

    逻辑运算符和位运算符

      和其他语言一样。注意or比and的优先级低,所以在where子句中进行判断时,为了保证准确性,尽量使用()保证顺序。

    选择判断

      mysql的选择判断一般是使用case,格式如下:

    case 
        when 条件1 then 表达式1
        when 条件2 then 表达式2
        else 表达式n
    end
    

      示例:

    mysql> select id,name,
        -> case
        ->     when price>10 then "expensive"
        ->     when price>0 then "cheap"
        ->     else "free"
        -> end as level
        -> from cate;
    

      

    循环结构

      while

    delimiter $$
    create procedure test_while()
    begin
    	declare sum int default 0;
    	declare t int default 5;
    	while t>0 do
    		set sum=sum+1;
    		set t=t-1;
    	end while;
    	select sum;
    end $$
    delimiter ;
    

      

      repeat

    delimiter $$
    create procedure _repeat()
    begin
    	declare a int default 10;
    	repeat
    		set a=a-1;
    		until a<5
    	end repeat;
    	select a;
    end $$
    delimiter ;
    

      注意使用repeat的时候,在判断条件(until 条件)的那一行句末不加分号,这个很容易出错! 

      loop

    delimiter $$
    create procedure test_loop()
    begin
    	declare t int default 0;
    	label:loop
    		set t=t+1;
    		if t>10 then leave label;
    		end if;
    	end loop label;
    	select t;
    end $$
    delimiter ;

    注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条件,能够满足在一定的条件下跳出 loop 循环(即 leave )!

     

    存储过程

      创建和使用存储过程

    mysql> create procedure insert_into_two_table(in id int, in name char(30), out res char(10))
        -> begin
        ->     insert into user values (id,name);
        ->     insert into person values (id, name);
        ->     set res = "success";
        ->     select res;
        -> end $$
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> call insert_into_two_table(1,"aaaaa",@res);
    +---------+
    | res     |
    +---------+
    | success |
    +---------+
    1 row in set (0.03 sec)
    
    mysql> select @res;
    +---------+
    | @res    |
    +---------+
    | success |
    +---------+
    1 row in set (0.00 sec)
    

      删除存储过程

    mysql> drop procedure if exists insert_into_two_table;
    

      

      

    存储函数

      存储过程不能有输出参数;不用call调用,而是使用select来调用 ;必须包含return语句,存储过程不能有return。

    delimiter $$
    create function find_stu(s_id int)
    	returns boolean
    begin
    	declare cnt int;
    	select id into cnt from user where id=s_id;
    	if cnt > 0 then
    		return true;
    	else 
    		return false;
    	end if;
    end $$
    delimiter ;
    

      测试:

    mysql> select * from user;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | aaaaa |
    +----+-------+
    1 row in set (0.00 sec)
    
    mysql> select find_stu(1);
    +-------------+
    | find_stu(1) |
    +-------------+
    |           1 |
    +-------------+
    1 row in set (0.00 sec)
    
    mysql> select find_stu(2);
    +-------------+
    | find_stu(2) |
    +-------------+
    |           0 |
    +-------------+
    1 row in set (0.00 sec)
    

      删除函数

    mysql> drop function if exists find_stu;
    

      

    触发器

    事件

     

  • 相关阅读:
    Ubuntu14.04下Sublime Text 3解决无法输入中文
    100% 解决wine中文乱码问题
    历史朝代顺序表
    HTTP状态码分类
    Kali Linux 2019
    多线程下载器(针对于百度云下载)
    百度云破解版&&第三方下载工具&&分享链接无需提取码直接下载
    MongoDB 4.0.10 GridFS操作
    MongoDB 4.0.10 游标
    MongoDB 4.0.10 用户管理
  • 原文地址:https://www.cnblogs.com/-beyond/p/6227347.html
Copyright © 2011-2022 走看看