首页 > 数据库 >mysql 存储过程

mysql 存储过程

时间:2023-10-09 16:01:01浏览次数:55  
标签:insert 存储 -- into values mysql null 过程

存储过程实例

前提准备

  1. 创建表
create table table1(name varchar(10));
create table Matches(
id int(10) auto_increment not null,
MATCHNO int(5) not null,
TEAMNO Varchar(6) not null,
PLAYERNO int(7) not null ,
WON Int(8) not null,
LOST varchar(2),
primary key(id));
create table Players(
 id int(10)  Auto_Increment Not null Primary Key,
 name varchar(20)  Not null,
 age varchar(4) not null,
 gender varchar(4));
  1. 向3张表创建数据
insert into table1 values(78);insert into table1 values('ls');

insert into players  values(1,'lsq',22,'男');insert into Players  values(2,'lqq',23,'女');

insert into Matches values(1,5,6,3,8,9); insert into Matches values(2,2,3,4,3,8);

实例

创建存储过程

Delimiter //
CREATE PROCEDURE first_proc()
BEGIN
drop table table1;
drop table Players;
drop table Matches;
create table table1(name varchar(10));
create table Players(
id int(10)  Auto_Increment Not null Primary Key,
name varchar(20)  Not null,
age varchar(4) not null,
gender varchar(4));
create table Matches(
id int(10) Auto_Increment Not null,
MATCHNO int(5)  Not null,
TEAMNO Varchar(6)  not Null,
PLAYERNO int(7) Not null ,
WON Int(8) not null,
LOST varchar(2),
Primary Key(id));
insert into table1  values(78);insert into table1 values('ls');
insert into Players values(1,'lsq',22,'男');insert into Players values(2,'lqq',23,'女');
insert into Matches values(1 ,5,6,3,8,9); insert into Matches values(2,2,3,4,3,8);
select * from table1;
select * from Players;
select * from Matches;
end;
//
Delimiter ;

执行

call first_proc;

删除存储过程

drop procedure first_proc

语法说明

基本语法

存储过程结构体:

存储过程体包含了在过程调用时必须执行的语句,例如:dml、ddl语句,if-then-else和while-do语句、声明变量的declare语句等
过程体格式:以begin开始,以end结束(可嵌套)
BEGIN
  BEGIN
    BEGIN
      statements;
    END
  END
END

#存储过程变量的声明和使用
DROP PROCEDURE IF EXISTS test;    -- 如果存在指定存储过程则删除它
DELIMITER //           -- 定义存储过程结束符 这里的结束符为//,
CREATE PROCEDURE test() --
BEGIN -- 过程体 开始
    DECLARE aa VARCHAR(20);    -- 定义变量 
    DECLARE bb INT DEFAULT 0;    -- 定义int 类型变量 默认为0;
    SET aa = '张三';   -- 变量赋值
    SELECT aa;        -- 输出变量
    SELECT bb;     -- 存储过程结束出变量
END// 过程体 结束        
CALL test();            -- 调用存储过程

while 循环

循环插入10条数据

drop  PROCEDURE if EXISTS  second_proc -- 如果存在就删除
Delimiter //
CREATE PROCEDURE second_proc(in total int)
begin
    declare beginNumber INT default 0;
     while beginNumber<=total DO -- 循环开始
         insert into table1 values(CONCAT('ls',beginNumber));
        set beginNumber = beginNumber+1;
    end while; -- 循环结束
end;
//
Delimiter ;

call second_proc(10); -- 调用

循环控制(if-else)

#存储过程流程控制语句使用
DROP PROCEDURE IF EXISTS test_2;
DELIMITER //
CREATE PROCEDURE test_2()
BEGIN 
    DECLARE aa INT;        # 定义变量
    DECLARE bb INT;        # 定义变量
    SET aa = 20;        # 变量赋值
    SET bb = 20;        # 变量赋值
    IF aa > bb THEN        # 判断
        SELECT aa;
    ELSEIF aa < bb THEN    # else if 可以有多个
        SELECT bb;
    ELSE             # else 只能存在一个
        SELECT aa+bb;
    END IF;            # 结束if 语句
END//
CALL test_2();            # 调用存储过程

参考地址:

MySQL之存储过程实例讲解(创建、调用、查看、修改、删除) - 四夕竹歌 - 博客园>

Mysql 存储过程声明及使用 - 不休不止 - 博客园

标签:insert,存储,--,into,values,mysql,null,过程
From: https://www.cnblogs.com/lixiuming521125/p/17751600.html

相关文章

  • mysql用户权限
    mysql创建用户权限创建用户MySQL中的用户帐号由用户名,以及使用@字符分隔的主机名组成。CREATEuseruser_accountIDENTIFIEDBYpassword;例:createusersuper@localhostIDENTIFIEDBY'123456';//localhost主机连接到MySQL数据库服务器createusersuper@'%'IDENTI......
  • MySQL数据库报 1040 too many connection
    找个是因为超过了最大的连接数你把最大的连接数改一下就可以了  改完之后记得重启mysqlwindows+R cmd进入黑窗口 ......
  • 斐波那列数列的讲解过程
    python案例解释的有点不好,多多包含deff1(n):ifn<=2:return1;else:returnf1(n-1)+f1(n-2)#print(f1(6))"""示例1解释一下他是如何等8的,递归不是直接返回值再去传递给自身函数,比如n=4的时候,那么f1(4-1)+f1(4-2)=f1(3)+f1(2)不是......
  • 记录一次mysql5.7oomkill
    集群节点环境[root@master~]#uname-aLinuxmaster5.14.0-229.el9.x86_64启动mysq:5.7镜像会出现oomkill,属于系统镜像问题,解决方法有两个,使用centos7(centos8未测试),或者修改镜像启动命令修改镜像启动命令参考了链接:https://learnku.com/articles/34598大致内容如下MySQL......
  • MYSQL limit用法
    1、Mysql的limit用法在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset  SELECT*FROMtableLIMIT[offset,]rows|rowsO......
  • SQL SERVER 死锁查询存储
    –execsp_who_lock查询哪个库的死锁,存储就建立在哪个库上IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N’[dbo].[sp_who_lock]’)ANDtypein(N’P’,N’PC’))DROPPROCEDURE[dbo].[sp_who_lock]GOcreateprocedure[dbo].[sp_who_lock]asbegindecl......
  • mysql having多个条件
    groupby的个bai数,和having的个数没有什么必然的联系,groupby后面du可以跟多个zhi字段,同样你如果有多个聚合计算dao,当然having后面也可以跟多个聚合条件比如:selectname名字,sum(record)分数,avg(average)平均数fromstudentgroupbynamehavingsum(record)>xxxxxxa......
  • MySQL之分组函数学习
    分组函数:用作统计使用,又称为聚合函数或统计函数 分类:sum求和、avg平均值、max最大值、min最小值、count计算个数 特点:sum、avg一般用于处理数值型max、min、count可以处理任何类型 可以和distinct搭配实现去重的运算selectsum(distinctsalary),sum(sala......
  • MySQL DATEDIFF() 函数
    定义和用法DATEDIFF()函数返回两个日期之间的天数。语法DATEDIFF(date1,date2)date1 和 date2 参数是合法的日期或日期/时间表达式。注释:只有值的日期部分参与计算。实例例子1使用如下SELECT语句:SELECTDATEDIFF('2008-12-30','2008-12-29')ASDiffDate 例子2使用如下SE......
  • mysql插入小数变成整数的解决办法
    mysql输入小数自动变为整数,输了半天也不知道怎么回事。 数据库中字段的类型明显设置的是double,float等小数类型,但输入小数的时候,小数就会变成整数。很是奇怪。 使用的是navicat客户端。 仔细察看了一下,发现是在进行表配置的时候,没有配置小数点,见下图。这里把小数按照需求进行......