第一部分的内容:
SQL(2)DQL语言 条件查询+排序查询+常见函数+分组查询+连接查询
https://blog.csdn.net/Lee_Yu_Rui/article/details/107527594
SQL(3)DQL语言 子查询+分页查询+联合查询
https://blog.csdn.net/Lee_Yu_Rui/article/details/107566293
SQL(4)DML语言 增删改
https://blog.csdn.net/Lee_Yu_Rui/article/details/107584843
SQL(5) DDL语言 库和表的创建,修改和删除
https://blog.csdn.net/Lee_Yu_Rui/article/details/107598414
SQL(6) 数据的常见约束和标识项
https://blog.csdn.net/Lee_Yu_Rui/article/details/107603411
SQL(7)TCL 事务控制语言 特点+演示+隔离级别+save point
https://blog.csdn.net/Lee_Yu_Rui/article/details/107603412
SQL(8)视图的创建+修改+删除+更新
https://blog.csdn.net/Lee_Yu_Rui/article/details/107603444
SQL(9)变量:系统变量和自定义变量
https://blog.csdn.net/Lee_Yu_Rui/article/details/107619291
SQL(10) 命令行的存储过程和函数
https://blog.csdn.net/Lee_Yu_Rui/article/details/107619368
感谢以下链接的教学分享,很好的视频和资源,笔记记录在这里,便于日后查看
新i版-链接: https://pan.baidu.com/s/1GDhRzV_3lUQaETsH4CM8zQ 提取码: rpte
流程控制结构
/*
顺序结构:程序从上到下执行
分支结构:多选一
循环结构
*/
一 分支结构
1.if 语法
select if (表达式1,表达式2,表达式3)
2.case
/*
作为表达式就是then 后面是值,放在begin end内外都行
作为独立语句使用,只能放在 begin end中 对应【】
1. 等值判断
case 变量
when 判断的值 then 返回的值【或语句;】
when 判断的值 then 返回的值【或语句;】
...
else 返回的值【或语句;】
end 【case】;
2. 非等值判断
case
when 条件1 then 返回的值【或语句;】
when 条件1 then 返回的值【或语句;】
...
else 返回的值【或语句;】
end 【case】;
*/
# 案例 创建存储过程,根据传入的成绩,显示等级,比如传入的成绩>90->A (80,90) B
CREATE PROCEDURE test_case(IN grade INT)
BEGIN
CASE
WHEN grade>90 AND grade<=100 THEN SELECT 'A';
WHEN grade>=80 THEN SELECT 'B';
WHEN grade>=60 THEN SELECT 'C';
ELSE SELECT 'D';
END CASE;
END$
CALL test_case(95)$
3.if结构
/*
实现多重分支
语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
[else 语句n;]
end if;
只能用在begin end 中
*/
# 案例 创建存储过程,根据传入的成绩,返回等级,比如传入的成绩>90->A (80,90) B
CREATE FUNCTION test_if2(score INT) RETURNS CHAR
BEGIN
IF score>=90 AND score<=100 THEN RETURN 'A';
ELSEIF score>=80 THEN RETURN 'B';
ELSEIF score>=60 THEN RETURN 'C';
ELSE RETURN 'D';
END IF;
END$
二 循环结构
/*
分类
while
loop
repeat
循环控制
iterate 类似continue
leave 类似break
*/
1.while
/*
【标签:】while 循环条件 do
循环体;
end while 【标签】;
*/
2.loop
/*
【标签:】loop
循环体;
end loop 【标签】;
可以模拟死循环
*/
3.repeat
/*
【标签:】repeat
循环体;
until 结束循环条件
end repeat 【标签】;
*/
# 案例 批量插入,插入admin表中多条记录
CREATE PROCEDURE pro_while1(IN inserCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i <= inserCount DO
INSERT INTO admin(`username`,`password`) VALUES(CONCAT('Rose',i),'666');
SET i = i +1;
END WHILE a;
END $
CALL pro_while1(100)$
TRUNCATE TABLE admin$
# 案例[添加leave] 批量插入,插入admin表中多条记录 次数大于20 停止
CREATE PROCEDURE pro_while2(IN inserCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i <= inserCount DO
INSERT INTO admin(`username`,`password`) VALUES(CONCAT('AMY',i),'000');
IF i>=20 THEN LEAVE a;
END IF;
SET i = i +1;
END WHILE a;
END $
CALL pro_while2(100)$
# 案例[添加iterate] 批量插入,插入admin表中多条记录 只插入偶数次
CREATE PROCEDURE pro_while3(IN inserCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i <= inserCount DO
INSERT INTO admin(`username`,`password`) VALUES(CONCAT('AMY',i),'000');
IF MOD(i,2)!=0 THEN ITERATE a;
END IF;
SET i = i +1;
END WHILE a;
END $
CALL pro_while3(100)$