mysql 视图循环_MySQL学习随记---视图和SQL编程的 if case 和 循环

视图

定义

视图只是一个语句规则

语法

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

作用

(1) 可以简化查询

(2) 可以进行权限控制

视图与表关系

视图是表的查询结果, 自然表的数据变了, 影响视图结果

(1) 视图的数据与表的数据一一对应时, 可以修改[由计算而来的数据不可更改]

(2) 视图增删改也会影响到表, 但是视图并不总是能增删改

(3) 对于视图insert还应注意, 视图中必须包含表中没有默认值得列

注意: 一般来说, 视图只是用来查询的, 不应该执行增删改操作

SQL编程

1. 变量声明

(1)会话变量

定义形式:

set @变量名 = 值;

示例:

set @long =555;

SELECT @long;

(2)普通变量

定义形式:

declare 变量名 类型 [default 默认值]

说明:

1.他必须先声明(即定义),此时也可以赋值;

2.赋值跟会话变量一样: set 变量名 = 值;

3.他只能在编程环境中使用!!!说明: 什么是编程环境?存储过程, 函数, 触发器

(3)变量的赋值形式

语法1:

set 变量名 = 表达式; #此语法中变量必须先使用declare声明

语法2:

set @变量名 = 表达式; #此语法无需使用declare声明, 而是直接赋值

语法3:

select @变量名 := 表达式; #此语句会给该变量赋值, 同时还会最为一个select语句输出 '结果集'

示例: SELECT @age := 12;

语法4:

select 表达式 into @变量名; #此语句虽然看起来是select语句, 但其实比不输出 '结果集', 而是给变量赋值

示例: SELECT 33 + 33 INTO @age; SELECT @age;

2. 运算符

(1)算术运算符

+- */%

注意: MySQL没有++和--运算符

(2)关系运算符

>>= <<==(等于)<>(不等于)!=(不等于)

(3)逻辑运算符

and(与)or(或)not(非)

3. 语句块包含符

所谓的语句块包含符, 在js中, 以及绝大部分的其他语言中, 都是大括号: {}

他用在很多场合: if, switch, for, function

而MySQL编程中的语句块包含符如下:

d6f58c3018905ad49e4e4c55d993caa1.png

4. if判断

MySQL支持两种判断, 第一个是 if 判断, 第二个是 case 判断

if 语法

单分支

if 条件 then

//代码

end if;

双分支

if 条件 then

//代码1

else

//代码2

end if;

多分支

if 条件 then

//代码1

elseif 条件 then

//代码2

else

//代码3

end if;

案例: 接收4个数字, 如果输入1则输出春天  2=>夏天 3=>秋天 4=>冬天 其它数字=>出错

我们使用存储过程来体验 if 语句用法

create procedure 存储过程名(参数, 参数, ...)

begin

//代码

end

注意: 通常情况下, ";" 表示SQL语句结束, 同时向服务器提交并执行. 但是存储过程中有很多SQL语句, 每一句都要以分号隔开, 这时候我们就需要使用其他符合来代替向服务器提交的命令. 通过delimiter命令改变语句结束符

语法: delimiter 符号  示例: delimiter $

CREATE PROCEDURE p1 (n INT)

BEGIN

IF n = 1 THEN

SELECT '春天' AS '季节';

ELSEIF n = 2 THEN

SELECT '夏天' AS '季节';

ELSEIF n = 3 THEN

SELECT '秋天' AS '季节';

ELSEIF n = 4 THEN

SELECT '冬天' AS '季节';

ELSE

SELECT '出错' AS '季节';

END IF;

END;

调用 语法: call 存储过程的名称(参数)

CALL p1(3);

5. case判断

case 变量

when值 then 语句;

when值 then 语句;

else 语句;

end case;

案例同 if

CREATE PROCEDURE p2(n INT)

BEGIN

CASE n

WHEN 1 THEN SELECT '春天' AS '季节';

WHEN 2 THEN SELECT '夏天' AS '季节';

WHEN 3 THEN SELECT '秋天' AS '季节';

WHEN 4 THEN SELECT '冬天' AS '季节';

ELSE SELECT '出错' AS '季节';

END CASE;

END

6. 循环

MySQL支持的循环有loop, while, repeat 循环

(1) loop 循环

标签名: loop

leave 标签名    --退出循环

end loop;

(2) while 循环

[标签: ]while 条件 do

//代码

end while;

(3) repeat 循环

repeat

//代码

until 条件 end repeat;

案例 使用 loop 循环, 完成计算1到n的和;

CREATE PROCEDURE p3 (n INT)

BEGIN

DECLARE i INT DEFAULT 1;

DECLARE s INT DEFAULT 0;

aa:LOOP

IF i>n THEN

LEAVE aa;

END IF;

SET s=s+i;

SET i=i+1;

END LOOP;

SELECT s;

END

案例 使用 while 循环, 完成计算1到n的和;

CREATE PROCEDURE p4 (n INT)

BEGIN

DECLARE i INT DEFAULT 1;

DECLARE s INT DEFAULT 0;

WHILE i<=n DO

SET s=s+i;

SET i=i+1;

END WHILE;

SELECT s;

END

案例 使用 repeat 循环, 完成计算1到n的和;

CREATE PROCEDURE p5 (n INT)

BEGIN

DECLARE i INT DEFAULT 1;

DECLARE s INT DEFAULT 0;

REPEAT

SET s=s+i;

SET i=i+1;

UNTIL i>n END REPEAT;

SELECT s;

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值