变量声明与触发器
admin
2024-02-16 13:01:02

变量声明与触发器

变量声明

  • 服务器系统变量

    • 通过@@来调用系统变量

      # 列出mysql所有系统变量
      SHOW VARIABLES
      SELECT @@date_format
      
  • 用户变量

    • 通过@来调用用户变量

      # 输出变量yesterday
      SELECT @yesterday# 对变量yesterday进行赋值
      SET @yesterday=subdate(CURRENT_DATE, 1);# 日期的格式化
      SET @yesterday=DATE_FORMAT(@yesterday, "%Y/%m/%d");# 小数的格式化
      SET @amount=0.4;
      SET @amount=CAST(@amount as DECIMAL(15, 3));
      SELECT @amount
      
  • 局部变量

    • 不需要@前缀
    • 需要事先进行变量类型的声明和初始化

存储过程

简单地认为是SQL中的函数

  • 声明一个存储过程

    • 创建存储过程

      • 每一句语句结束之后都要添加分号;
      CREATE PROCEDURE stat_store_perf(days INT)
      BEGINDECLARE t_date VARCHAR(255);set t_date = DATE_FORMAT(subdate(CURRENT_DATE, days), '%Y-%m-%d');SELECT count(*) as 店铺数, FORMAT(AVG(amount), 2) as 平均业绩,SUM(amount) as 总业绩,MAX(amount) as 最大业绩,MIN(amount) as 最小业绩,department as 部门 FROM store_perf WHERE sta_date=t_dateGROUP BY department;
      END
      
  • 调用存储过程

    CALL stat_store_perf(1)
    
  • 删除存储过程

    DROP PROCEDURE stat_store_perf
    

触发器

和存储过程一样, 都是嵌入到mysql中的一段程序, 区别就是存储过程需要显式调用, 而触发器式根据对表的相关操作自动激活执行.

  • 创建触发器

    CREATE TRIGGER 触发器名
    BEFORE[AFTER] [INSERT, UPDATE, DELETE]CREATE TRIGGER check_department
    BEFORE INSERT
    ON store_perf
    FOR each row
    BEGINIF new.department not in ("男装事业部", "女装事业部") THENSET new.department 'unknow';END IF;
    END
    
  • 触发器的应用

    多用来检查字段

  • 查看触发器

    建议通过客户端删除

    SHOW TRIGGERS FROM store_perf
    
  • 删除触发器

    建议通过客户端删除

    DROP TRIGGERS check_department
    

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...