zoukankan      html  css  js  c++  java
  • MySql 存储过程

    自动增长列、字段值唯一性约束

    create table aa(
        id int auto_increment primary key,
        sname varchar(32) unique
    );
    insert into aa values(5,'abc');
    

    创建一个自动增长的id属性(最开始不设置就从0开始增长) 
    (后面的id如果有值了,如果添加数据时没有设置id,MySQL就会用最大的id加1做为最新的id) 
    注意:auto_increment 在MySQL中支持,其他的数据库设置自动增长列中关键字不一样。 
    unique 对sname进行唯一性约束,也就是不能有相同的sname(可以有一个值是null)。

    存储过程:

    其实这个SQL中的存储过程很像Java中的定义函数,调用函数。

    首先看定义:

    create procedure 过程名(参数...)
    begin
        SQL语句...
    end

    调用:

    call 过程名(实参)

    有一个需要注意的地方: 
    在定义前,需要先把默认的语句结束’;’号改成其它,如’&&’,这样存储过程中定义的分号就不会被看成是语句结束(否则会直接被提交)。 
    在定义完之后,还要把’;’还原成默认的结束符。

    实例一:无参的存储过程

    delimiter &&
    create procedure p1()
    begin
        insert into stud values('P100','小李',43);
        select * from stud;
    end&&
    delimiter ;
    
    call p1;/*调用p1()中的SQL语句,如果没有call之前,p1()中的SQL语句是没有被执行的*/

    实例二:有参的存储过程

    delimiter &&
    create procedure p2(in id varchar(32),in sname varchar(32),in age int)
    begin
        insert into stud values(id,sname,age);
        select * from stud;
    end &&
    delimiter ;
    
    call p2('P1007','小白',25);
    call p2('P1008','小丽',28);

    实例三:有返回值的存储过程

    delimiter &&
    create procedure p3(in id varchar(32) ,in sname varchar(32),in age int ,out num int)
    begin
        insert into stud values(id,sname,age);
        select * from stud;
        select count(*) into num from stud;
    end&&
    delimiter ;
    
    call p3('P012','小小五',27, @num);
    /*调用且用num接收结果*/
    
    select @num; /*显示用户变量num*/

    系统变量名称:@@变量名 
    用户变量名称:@变量名

  • 相关阅读:
    How a webpage is loaded and displayed
    Tree知识总结
    Install Cassandra Locally
    axios接口封装
    Jsonp解决跨域问题
    react使用swiper,解决添加点击事件首位图片点击失效,解决轮播按钮被覆盖问题
    vue 生产环境和测试环境的配置
    vue使用远程在线更新代码
    vue.js axios实现跨域http请求接口
    leetcode每日一题(2020-05-27):974. 和可被 K 整除的子数组
  • 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/7918743.html
Copyright © 2011-2022 走看看