网站建设方案平台架构,网站收录地址,沈阳小装修公司哪家好,大连企业网站模板SQL#xff08;结构化查询语言#xff09;广泛应用于数据库操作#xff0c;是每个程序员都需要掌握的技能之一。这篇文章将带你从基础入门#xff0c;了解SQL编程中的常量、变量及流程控制语句。我们将采用简单易懂的语言#xff0c;结合实际示例#xff0c;帮助你轻松理…SQL结构化查询语言广泛应用于数据库操作是每个程序员都需要掌握的技能之一。这篇文章将带你从基础入门了解SQL编程中的常量、变量及流程控制语句。我们将采用简单易懂的语言结合实际示例帮助你轻松理解SQL编程的核心概念。
1. 常量
在SQL编程中常量是指在程序运行过程中其值保持不变的量。常量可以分为字符串常量、数值常量、日期时间常量和布尔常量。
1.1 字符串常量
字符串常量是指用单引号括起来的字符序列如 hello 或 你好。通常一个ASCII字符占用1字节每个汉字占用2字节。 提示 字符串中可以使用转义字符来表示特殊字符。例如字符串中的单引号可以写成两个单引号或在单引号前加上反斜杠如 Its a box. 或 It\s a box.。
1.2 数值常量
数值常量包括整数常量和浮点数常量。
整数常量不带小数点的整数如 886、327、-98。十六进制数以 0x 开头如 0x2B、0x31。浮点数常量带小数点的数值如 -2.8、3.14、1.2E5、0.7E-3。
1.3 日期时间常量
日期时间常量是用单引号括起来的表示日期或时间的字符串。
日期常量格式为 年-月-日如 2021-09-10。时间常量格式为 小时:分:秒如 08:10:36。日期时间常量格式为 年-月-日 小时:分:秒如 2021-09-10 08:10:36。
1.4 布尔常量
布尔常量只有两个值TRUE 和 FALSE。在SQL中TRUE 对应的数值为 1FALSE 对应的数值为 0。
2. 变量
变量是指在程序运行过程中其值可以改变的量。根据用途的不同SQL中变量分为系统变量、用户变量和局部变量。
2.1 系统变量
系统变量是MySQL预定义的用于控制数据库行为和设置系统参数。系统变量可以分为全局变量和会话变量。
全局变量影响整个数据库服务器的操作。会话变量仅影响当前连接的操作。
查看系统变量
你可以使用 SHOW VARIABLES 命令查看系统变量。例如
SHOW GLOBAL VARIABLES; -- 查看所有全局变量
SHOW SESSION VARIABLES; --查看所有会话变量设置系统变量
你可以使用 SET 命令为系统变量赋值。例如
SET GLOBAL sort_buffer_size 250000;
SET SESSION sort_buffer_size 270000;2.2 用户变量
用户变量是用户自定义的变量通常用于存储查询结果或中间值。用户变量以一个 符号开头如 username。
定义和使用用户变量
你可以使用 SET 或 SELECT 语句为用户变量赋值。例如
SET username刘珊;
SET sex:女;
SELECT password:123456;
SELECT username,sex,password;2.3 局部变量
局部变量通常用在SQL语句块中其作用范围仅限于语句块即 BEGIN...END 之间。局部变量以 DECLARE 语句声明。
声明和使用局部变量
你可以使用 DECLARE 声明局部变量并使用 SET 或 SELECT INTO 为其赋值。例如
DECLARE v_avgscore FLOAT;
SET v_avgscore 75.5;3. SQL流程控制语句
SQL提供了三种控制结构顺序结构、分支结构和循环结构。这里我们重点介绍分支结构和循环结构。
3.1 分支结构
分支结构允许根据条件的不同执行不同的操作。SQL中常用的分支结构包括 IF 语句和 CASE 语句。
IF语句
IF 语句根据条件表达式的值来决定执行哪一段代码。其基本语法如下
IF 条件表达式1 THEN 语句序列1;[ELSEIF 条件表达式2 THEN 语句序列2;]......[ELSE 语句序列n;]
END IF;示例
IF v_avgscore 80 THENSELECT 该生成绩较好;
ELSESELECT 该生成绩一般;
END IF;CASE语句
CASE 语句是另一种分支结构可以替代多层 IF 语句使代码更加简洁。CASE 语句有两种形式基本 CASE 语句和搜索结构 CASE 语句。
基本CASE语句示例
BEGINDECLARE v_avgscore FLOAT;DECLARE v_grade INT;SELECT ROUND(AVG(score), 2) INTO v_avgscore FROM SC WHERE sno S1;SET v_grade TRUNCATE(v_avgscore / 10, 0);CASE v_gradeWHEN 10 THEN SELECT 该生成绩优秀;WHEN 9 THEN SELECT 该生成绩优秀;WHEN 8 THEN SELECT 该生成绩良好;WHEN 7 THEN SELECT 该生成绩中等;WHEN 6 THEN SELECT 该生成绩及格;ELSE SELECT 该生成绩不及格;END CASE;
END;搜索结构CASE语句示例
BEGINDECLARE v_avgscore FLOAT;SELECT ROUND(AVG(score), 2) INTO v_avgscore FROM SC WHERE sno S1;CASEWHEN v_avgscore BETWEEN 90 AND 100 THEN SELECT 该生成绩优秀;WHEN v_avgscore BETWEEN 80 AND 89 THEN SELECT 该生成绩良好;WHEN v_avgscore BETWEEN 70 AND 79 THEN SELECT 该生成绩中等;WHEN v_avgscore BETWEEN 60 AND 69 THEN SELECT 该生成绩及格;ELSE SELECT 该生成绩不及格;END CASE;
END;3.2 循环结构
循环结构用于重复执行某段代码。SQL中的循环结构包括 WHILE 循环、REPEAT 循环和 LOOP 循环。
WHILE循环
WHILE 循环在条件为真时反复执行代码块直到条件为假或为NULL时退出循环。
示例
BEGINDECLARE v_count INT DEFAULT 0;DECLARE v_sum INT DEFAULT 0;WHILE v_count 100 DOSET v_count v_count 1;SET v_sum v_sum v_count;END WHILE;SELECT v_sum AS 1到100的和;
END;REPEAT循环
REPEAT 循环先执行一次代码块然后判断条件。如果条件为假则继续循环如果为真则退出循环。
示例
BEGINDECLARE v_count INT DEFAULT 0;DECLARE v_sum INT DEFAULT 0;REPEATSET v_count v_count 1;SET v_sum v_sum v_count;UNTIL v_count 100END REPEAT;SELECT v_sum AS 1到100的和;
END;LOOP循环
LOOP 循环无条件地反复执行代码块直到遇到 LEAVE 语句退出循环。
示例
BEGINDECLARE v_count INT DEFAULT 0;DECLARE v_sum INT DEFAULT 0;label1: LOOPSET v_count v_count 1;SET v_sum v_sum v_count;IF v_count 100 THENLEAVE label1;END IF;END LOOP label1;SELECT v_sum AS 1到100的和;
END;4. SQL的异常处理
异常处理是确保程序在遇到错误时能够正常运行的关键部分。在MySQL中可以使用 DECLARE HANDLER 语句处理异常。
语法格式
DECLARE handler_action HANDLER FOR condition_value statement;handler_action指定在异常发生时如何处理如 CONTINUE 或 EXIT。condition_value指定要处理的异常类型如 NOT FOUND、SQLWARNING 等。statement指定当异常发生时要执行的处理语句。
示例
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGINSELECT 未找到记录;
END;总结
通过这篇文章你应该已经掌握了SQL编程的基础知识包括常量、变量、流程控制语句以及异常处理。SQL编程是每个开发者的必备技能理解这些基础概念将帮助你在未来的项目中更加得心应手。
如果你还有其他疑问或想了解更多有关SQL编程的知识欢迎在评论区留言讨论