sql###

-- =======root=======

-- 创建用户
CREATE USER xxx@'%' IDENTIFIED BY'1234';
-- 赋予权限
GRANT ALL ON warehouse.* TO xxx@'%';

-- =======xxx=======

USE warehouse

/*
  数据库的基本业务知识
    数据库软件的认识和客户端工具认识
    数据库系统的认识
    数据库软件安装和环境搭建
    数据库常用命令
    数据库用户和权限
    编码的管理
    数据库的管理
    表(权限,创建,字段名,类型,约束,修改,删除)
    
    DML语句:(最核心的东西)---操控数据【增删改查】
      insert  update  delete ---增删改
      select 
         投影(所有数据)
         选择(有筛选)
         联表(多个表查询)
         子查询(联表解决不了的问题)
         
      视图(简化代码)
      
      数据库一开始只负责数据存储,修改,获取,删除,把数据的处理都交给了业务代码
      后来业务越来越大,越来越复杂,数据量越来越大,数据库获取数据然后传输的过程中比较耗资源,输出的速度以及代码业务处理压力
      所以数据库将一部分业务转化到数据----plsql(依赖数据库环境的语言)
      
      plsql:一门类似c的语法的完整的数据库端的编程语言【完整度取决于数据库的大小】
      完整的plsql:oracle数据库
      
      MySQL中plsql:因为mysql支持的晚,支持语法有所欠缺
      MySQL中支持两种方式编写业务:存储过程,自定义函数
      MySQL中不能做的事:离开载体,自由编写业务代码块
*/

/*
  mysql中的存储过程
    解释:
      存储类似函数的一种定义规范,或者封装代码规范
    语法:
      create procdfure【if not exists】 存储名([in/out/inout]参数名  参数类型,……) 
             定义信息
       begin
             定义变量
             存储过程需要业务内容
       end     
       
     备注:  存储过程名:按照标识符的语法规范去定义,要求以pro_开头
             参数:可以有零个或多个参数,参数是调用存储过程时需要传入的数据
                   参数前面加in;out;inout等,表示参数类型
                   in--调用者传入的数据
                   out--用于存储过程执行过程需要返回给调用者的数据,存储
             定义信息:编写注释信息
             定义变量:用于定义变量存储信息
             存储过程业务:编写业务
*/

/*
  创建一个简单的存储过程---获取员工和供应商信息
  
  数据库中,每一个语句后加分号
  
  为了解决分号的问题,数据库提供了一种方式就是临时将结束符号改成其他符号
  语法:
    delimiter 临时结束符号:--   // 或者$$ 避免遇到;结束执行语句
  
  调用存储过程
    call 存储过程名(实参列表)
    
  删除  
  
*/

DELIMITER //
CREATE PROCEDURE pro_empandsup()
COMMENT '这是一个存储过程'
BEGIN
 -- 查询所有员工
 SELECT * FROM w_people;
 
 SELECT * FROM w_supplier;
 SELECT USER();
 
END//
-- 结束符修改
DELIMITER ; 

-- 调用
CALL pro_empandsup()

-- 删除
DROP PROCEDURE pro_empandsup()

/*
  1:关键字
  系统提供的特殊含义的单词或者字母,例如:int varchar
  2:标识符
  3:注释
    -- 单行注释
    / * 
    多行注释
    * /
  4:存储过程的变量定义
    分类:MySQL用户变量(全局变量)
      set @变量 = 初始值
      使用  sql语句直接调用
      
    局部变量
      是定义在存储过程和函数里面的变量,只有在begin和end之间有效
    定义语法:
      declare 变量名 变量类型(长度)【default 默认值】
    解释:
      变量名:标识符定义,为了区分,一般会以var_开头
      变量类型:按照数据库的字段类型定义
      默认值:就是变量初始化信息  
      
    赋值以及运算
      变量名  = / :=   +表达式
      
   变量类型:
     按照数据库中字段类型
  5:运算符
    数据库运算符
     变量的运算:
      set  变量名= 表达式;
  6:流程控制语句
  1)条件判断:if    else    and if
    语法:
      if  条件表达式  then
        执行语句
      else 
        执行语句
      endif
      
      
      if 条件表达式  then
        执行语句
      endif
      
      
      if  条件表达式1 then
        执行语句
      elseif  条件表达式2  then
        执行语句
      else
        执行语句
      endif;
      
  2)选择:
     case when else end case
     
    语法:
      case 【条件值】
       when 条件 then
         执行语句
       when 条件 then
         执行语句
       else
         执行语句
       end
   3)循环语句
     while
    while 条件表达式   do
      执行语句
    end while;
    
     loop
    名字:loop
    执行语句
    leave 名字  -- 结束loop
    end loop;
    
     repead
    repeat
     执行语句
     until 结束条件
    end repeat;
    
  7:数组--游标
  8:函数和存储过程
  
  参数的传递
     
*/

-- 用户变量
SET @mysql=123;

-- 查询
SELECT @mysql

-- 数据库中的数据赋值
SELECT p_wages INTO@mysql FROM w_people WHERE p_id='E1'

-- 定义局部变量
DELIMITER //
CREATE PROCEDURE pro_vardata()
 COMMENT '这是一个定义局部变量的存储过程'
 BEGIN
   -- 定义变量
   DECLARE var_num INT DEFAULT 1;
   
   -- 显示
   SELECT var_num;
   
   -- 计算数据库的运算
   SET var_num=var_num+1;
   
   -- 输出
   SELECT var_num;
   
   -- 计算
   SET var_num:=var_num*10;
   
   -- 获取
   SELECT var_num;
 
END//
DELIMITER ;

-- 调用
CALL pro_vardata();

-- 删除
DROP PROCEDURE pro_vardata

-- if条件运算存储过程
DELIMITER //
CREATE PROCEDURE pro_ifdemo()
 
 COMMENT 'if条件语句'
 BEGIN
 -- 定义变量
 DECLARE var_num_1 INT DEFAULT 0;
 
 -- 计算
 SET var_num_1 = 2;
 
 -- 判断
 IF var_num_1<2 THEN
    -- shuchu
    SELECT var_num_1 * 10;
    
 ELSEIF var_num_1=2 THEN
 
  -- 输出
  SELECT var_num_1 * 100;
  
 ELSE 
  
  -- 输出
  SELECT var_num_1 * 1000;
  
 END IF;
 
END ;

DELIMITER;

-- 调用
CALL pro_ifdemo();
-- 删除
DROP PROCEDURE pro_ifdemo;


-- 选择语句 case
DELIMITER //
CREATE PROCEDURE pro_casedemo()
  COMMENT '选择语句处理'
  BEGIN
    -- 定义变量
    DECLARE var_num INT DEFAULT 5;
    
    
    -- 选择
    CASE var_num
     WHEN 2 THEN
       SELECT var_num*10;
     WHEN 5 THEN
       SELECT var_num*100;
     ELSE
       SELECT var_num*1000;
     END CASE;
END//
DELIMITER ;

-- 调用
CALL pro_casedemo();

-- 删除
DROP PROCEDURE pro_casedemo;


-- 显示计算1-100的和
-- 循环条件- while
DELIMITER //
CREATE PROCEDURE pro_whiledemo()
 COMMENT '这是while'
 BEGIN
   -- 定义变量
   DECLARE var_num INT DEFAULT 1;
   DECLARE var_sum INT DEFAULT 0;
   
   -- 循环计算
   WHILE var_num<=100 DO
    -- 计算
    SET var_sum = var_sum + var_num;
    
    -- 计数器变化
    SET var_num = var_num + 1;
    END WHILE;
    -- 显示
    SELECT var_sum;
END//
DELIMITER ;

-- 调用
CALL pro_whiledemo();

-- 删除
DROP PROCEDURE pro_whiledemo;


-- loop循环处理
DELIMITER //
CREATE PROCEDURE pro_loopdemo()
  COMMENT'loop循环'
  BEGIN 
    DECLARE var_num INT DEFAULT 1;
    DECLARE var_sum INT DEFAULT 0;
    
    -- loop循环
    mloop:LOOP
      -- 累加
      SET var_sum = var_num + var_sum;
      -- 判断计数器
      IF var_num = 100 THEN
       -- 离开loop
       LEAVE mloop;
      END IF;
      -- 自增
      SET var_num=var_num + 1;
      END LOOP;
      -- 输出
      SELECT var_sum;
END //
DELIMITER ;

-- 调用
CALL pro_loopdemo();
-- 删除
DROP PROCEDURE pro_loopdemo;


-- repeat循环
DELIMITER //
CREATE PROCEDURE pro_repeat()
COMMENT 'repeat 操作'
 BEGIN
   -- 定义变量
   DECLARE var_num INT DEFAULT 1;
   DECLARE var_sum INT DEFAULT 0;
  
  -- 循环 
  REPEAT
   -- 累加
   SET var_sum = var_sum + var_num;
   
   -- 计数器变化
   SET var_num=var_num+1;
   
   -- 结束循环
   UNTIL var_num >100 END REPEAT;
  -- 输出
  SELECT var_sum;
 
 END//
DELIMITER ;

-- 调用
CALL pro_repeat;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值