如果你对大数据开发充满好奇,但苦于零基础不知从何入手,这系列文章就是为你量身定制的!
零门槛入门:无需编程经验,从最基础的SQL查询讲起,手把手带你理解数据操作的核心逻辑。
实战为王:每章附赠真实场景练习题,边学边练,拒绝纸上谈兵。
转行利器:内容直击企业高频需求(数据清洗、分析、可视化),搭配职场避坑指南,助你快速构建“可迁移技能”。
系统进阶:从数据类型到复杂查询,从运算符到执行顺序,层层递进,帮你搭建扎实的大数据地基。
无论你是学生、职场新人,还是想跨界转行的探索者,跟着这份指南,用一杯伯牙绝弦的时间,迈出大数据开发的第一步!
🎉 致亲爱的读者朋友们:
📢 放心追更!本系列文章每日三篇干货更新,助你稳扎稳打!
🎥 配套视频解说正在全力打磨中,即将震撼上线——
🔥 关注收藏不迷路,精彩内容绝不辜负!
目录
-
条件分支语句
-
1.1
IF
语句-
1.1.1
IF-THEN-ELSE
-
1.1.2
IF-THEN-ELSIF-ELSE
-
1.1.3 嵌套
IF
-
-
1.2
CASE
语句
-
-
循环语句
-
2.1
LOOP
循环 -
2.2
WHILE LOOP
循环 -
2.3
FOR LOOP
循环
-
-
练习与示例
-
常见面试题
-
总结
1. 条件分支语句
1.1 IF
语句
1.1.1 IF-THEN-ELSE
语法:
sql
复制
IF 条件 THEN -- 条件为真时执行的代码 ELSE -- 条件为假时执行的代码 END IF;
示例:判断输入数字是否大于 5
sql
DECLARE
v_num NUMBER := &输入数字;
BEGIN
IF v_num > 5 THEN
DBMS_OUTPUT.PUT_LINE('大于5');
ELSE
DBMS_OUTPUT.PUT_LINE('不大于5');
END IF;
END;
1.1.2 IF-THEN-ELSIF-ELSE
语法:
sql
IF 条件1 THEN
-- 条件1为真时执行
ELSIF 条件2 THEN
-- 条件2为真时执行
ELSE
-- 所有条件都不满足时执行
END IF;
示例:成绩等级判断
sql
DECLARE
v_score NUMBER := &输入成绩;
BEGIN
IF v_score >= 90 THEN
DBMS_OUTPUT.PUT_LINE('优秀');
ELSIF v_score >= 80 THEN
DBMS_OUTPUT.PUT_LINE('良好');
ELSIF v_score >= 60 THEN
DBMS_OUTPUT.PUT_LINE('及格');
ELSE
DBMS_OUTPUT.PUT_LINE('不及格');
END IF;
END;
1.1.3 嵌套 IF
示例:多层条件判断
sql
DECLARE
v_a NUMBER := &a;
v_b NUMBER := &b;
BEGIN
IF v_a = 100 THEN
DBMS_OUTPUT.PUT_LINE('a=100');
IF v_b = 200 THEN
DBMS_OUTPUT.PUT_LINE('b=200');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('a≠100');
END IF;
END;
注意事项:
-
避免过度嵌套,可通过逻辑优化提升可读性。
-
使用注释和缩进增强代码结构清晰度。
1.2 CASE
语句
语法:
sql
CASE
WHEN 条件1 THEN 执行逻辑1
WHEN 条件2 THEN 执行逻辑2
ELSE 默认逻辑
END CASE;
示例:判断工资等级
sql
DECLARE
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM emp WHERE empno = &员工编号;
CASE
WHEN v_sal >= 3000 THEN DBMS_OUTPUT.PUT_LINE('高工资');
WHEN v_sal = 1500 THEN DBMS_OUTPUT.PUT_LINE('中等工资');
ELSE DBMS_OUTPUT.PUT_LINE('低工资');
END CASE;
END;
2. 循环语句
2.1 LOOP
循环
语法:
sql
LOOP
-- 循环体
EXIT WHEN 退出条件;
END LOOP;
示例:打印 1~5
sql
DECLARE
v_i NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(v_i);
v_i := v_i + 1;
EXIT WHEN v_i > 5;
END LOOP;
END;
2.2 WHILE LOOP
循环
语法:
sql
WHILE 条件 LOOP
-- 循环体
END LOOP;
示例:计算 10 的阶乘
sql
DECLARE
v_num NUMBER := &输入数字;
v_result NUMBER := 1;
BEGIN
IF v_num > 10 THEN
DBMS_OUTPUT.PUT_LINE('输入值过大');
ELSE
WHILE v_num > 0 LOOP
v_result := v_result * v_num;
v_num := v_num - 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('阶乘结果:' || v_result);
END IF;
END;
2.3 FOR LOOP
循环
语法:
sql
FOR 计数器 IN 起始值..结束值 [REVERSE] LOOP
-- 循环体
END LOOP;
示例:计算 1~N 的累加和
sql
DECLARE
v_n NUMBER := &输入N;
v_sum NUMBER := 0;
BEGIN
FOR i IN 1..v_n LOOP
v_sum := v_sum + i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('累加和:' || v_sum);
END;
示例:逆向打印数字
sql
BEGIN
FOR i IN REVERSE 1..5 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
3. 练习与示例
练习 1:税款计算
根据工资计算税款(≥3000 交 1%,≥1500 交 0.5%,<1500 免税)。
sql
DECLARE
v_empno emp.empno%TYPE := &员工编号;
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM emp WHERE empno = v_empno;
IF v_sal >= 3000 THEN
DBMS_OUTPUT.PUT_LINE('需交税:' || v_sal * 0.01);
ELSIF v_sal >= 1500 THEN
DBMS_OUTPUT.PUT_LINE('需交税:' || v_sal * 0.005);
ELSE
DBMS_OUTPUT.PUT_LINE('免税');
END IF;
END;
练习 2:百钱买百鸡问题
sql
BEGIN
FOR g IN 1..20 LOOP
FOR m IN 1..33 LOOP
FOR x IN 1..300 LOOP
IF g + m + x = 100 AND 5*g + 3*m + x/3 = 100 THEN
DBMS_OUTPUT.PUT_LINE('公鸡:' || g || ' 母鸡:' || m || ' 小鸡:' || x);
END IF;
END LOOP;
END LOOP;
END LOOP;
END;
4. 常见面试题
-
LOOP
、WHILE LOOP
、FOR LOOP
的区别是什么?-
LOOP
:需手动控制退出条件,灵活性高。 -
WHILE LOOP
:条件为真时执行,适合不确定循环次数。 -
FOR LOOP
:遍历固定范围,语法简洁。
-
-
如何在 PL/SQL 中处理多条件分支?
-
使用
IF-THEN-ELSIF-ELSE
或CASE
语句。
-
-
如何避免无限循环?
-
确保循环体内有明确的退出条件(如
EXIT WHEN
)。
-
-
%TYPE
和%ROWTYPE
的作用是什么?-
%TYPE
:变量类型与表的某列一致。 -
%ROWTYPE
:变量类型与表的某行结构一致。
-
5. 总结
-
条件分支:
IF
适用于复杂逻辑,CASE
适合多条件互斥场景。 -
循环控制:
-
LOOP
:灵活但需手动退出。 -
WHILE LOOP
:适合条件驱动循环。 -
FOR LOOP
:适合遍历固定范围。
-
-
实际应用:结合业务场景选择合适结构,如税款计算、数学问题求解等。