当前位置:   article > 正文

mysql视图和存储过程_mysql 视图是查询视图时候执行还是原表修改数据就执行了

mysql 视图是查询视图时候执行还是原表修改数据就执行了

视图


视图就是将一条sql查询语句封装起来,之后使用sql时,只需要查询视图即可,查询视图时会将这条sql语句再次执行一遍。视图不保存数据,数据还是在表中。

SELECT 语句所查询的表称为视图的基表,而查询的结果集称为虚拟表,视图本身并不存储具体的数据,视图的数据存在于视图的基表中,基本表数据发生了改变,视图的数据也会跟着改变,因为查询语句时不变的,使用视图时会将sql语句再调用一次

  1. -- 定义视图:
  2. create view 视图名 as 查询语句(select1,列2...from 表)
  3. -- 使用视图
  4. select * from 视图名
  5. -- 删除视图
  6. drop view 视图名

存储过程


存储过程是什么?

如果实现用户的某些需求时,需要编写一组复杂的 SQL 语句才能实现,那么可以将这组复杂的 SQL 语句集编写在数据库中,由 JDBC 调用来执行这组 SQL语句。把编写在数据库中的 SQL 语句集称为存储过程。

存储过程也就是将逻辑处理的过程是放在数据库中,而不放在java后端代码中,就类似于java语言中的方法,需要先定义,使用时调用。将一些逻辑处理的代码可以事先存储在数据库中,然后使用时直接调用即可。可以减少应用程序与数据库之间的交互次数。

语法格式

存储过程事先需要创建好(包含逻辑),存储过程中可以传入参数。参数分为3种,in(输入参数) out(输出参数) inout(即可以输入还可以输出):

create procedure 存储过程名([in 变量名 类型,out 参数 2,…])

begin

[declare 变量名 类型 [DEFAULT 值];]

存储过程语句块;

end;

  1. CREATE VIEW test ASSELECT * FROM admin; -- 创建视图
  2. SELECT * FROM test -- 使用视图
  3. DROP VIEW test -- 删除视图
  4. -- 创建存储过程
  5. DELIMITER $$
  6. CREATE PROCEDURE `gradedb`.`test1`(IN namess INT)
  7. BEGIN
  8. DECLARE a INT DEFAULT 0;
  9. SELECT a;
  10. SET namess=10;
  11. SELECT namess;
  12. END$$
  13. DELIMITER ;
  14. -- 调用存储过程
  15. CALL test1(1);
  16. -- 流程控制语句
  17. DELIMITER $$
  18. CREATE PROCEDURE `gradedb`.test2(IN t_day INT )
  19. BEGIN
  20. IF t_day=1 THEN
  21. SELECT"星期一";
  22. ELSEIF t_day =2 THEN
  23. SELECT"星期二";
  24. ELSE SELECT"无效日期";
  25. END IF;
  26. END$$
  27. DELIMITER ;
  28. -- 调用存储过程
  29. CALL test2(2);
  30. -- case when
  31. DELIMITER $$
  32. CREATE PROCEDURE `gradedb`.test3 (IN t_day INT)
  33. BEGIN
  34. CASE
  35. WHEN t_day = 1
  36. THEN
  37. SELECT
  38. "星期一";
  39. WHEN t_day = 2
  40. THEN
  41. SELECT
  42. "星期二";
  43. END CASE;
  44. END $$
  45. -- 调用存储过程
  46. CALL test3(1);
  47. -- 循环
  48. DELIMITER $$
  49. CREATE PROCEDURE `gradedb`.test4 ()
  50. BEGIN
  51. DECLARE v_num INT DEFAULT 0;
  52. -- 循环开始
  53. addnum :LOOP
  54. SET v_num = v_num + 1;
  55. IF v_num = 10
  56. THEN LEAVE addnum;
  57. END IF;
  58. END LOOP;
  59. -- 循环结束
  60. SELECT
  61. v_num;
  62. END $$
  63. -- 调用存储过程
  64. CALL test4()

举例:

创建存储过程,完成一个逻辑实现

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号