0


SQL 编程基础

SQL(结构化查询语言)广泛应用于数据库操作,是每个程序员都需要掌握的技能之一。这篇文章将带你从基础入门,了解SQL编程中的常量、变量及流程控制语句。我们将采用简单易懂的语言,结合实际示例,帮助你轻松理解SQL编程的核心概念。

1. 常量

在SQL编程中,常量是指在程序运行过程中其值保持不变的量。常量可以分为字符串常量、数值常量、日期时间常量和布尔常量。

1.1 字符串常量

字符串常量是指用单引号括起来的字符序列,如

'hello'

'你好'

。通常,一个ASCII字符占用1字节,每个汉字占用2字节。

image

提示: 字符串中可以使用转义字符来表示特殊字符。例如,字符串中的单引号可以写成两个单引号或在单引号前加上反斜杠,如

'It''s a box.'

'It\'s a box.'

1.2 数值常量

数值常量包括整数常量和浮点数常量。

  • 整数常量:不带小数点的整数,如 886+327-98。十六进制数以 0x 开头,如 0x2B0x31
  • 浮点数常量:带小数点的数值,如 -2.83.141.2E50.7E-3

1.3 日期时间常量

日期时间常量是用单引号括起来的表示日期或时间的字符串。

  • 日期常量:格式为 年-月-日,如 '2021-09-10'
  • 时间常量:格式为 小时:分:秒,如 '08:10:36'
  • 日期时间常量:格式为 年-月-日 小时:分:秒,如 '2021-09-10 08:10:36'

1.4 布尔常量

布尔常量只有两个值:

TRUE

FALSE

。在SQL中,

TRUE

对应的数值为

1

FALSE

对应的数值为

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;

image

2.2 用户变量

用户变量是用户自定义的变量,通常用于存储查询结果或中间值。用户变量以一个

@

符号开头,如

@username

定义和使用用户变量:

你可以使用

SET

SELECT

语句为用户变量赋值。例如:

SET @username='刘珊';
SET @sex:='女';
SELECT @password:='123456';
SELECT @username,@sex,@password;

image

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 THEN
    SELECT '该生成绩较好';
ELSE
    SELECT '该生成绩一般';
END IF;
CASE语句
CASE

语句是另一种分支结构,可以替代多层

IF

语句,使代码更加简洁。

CASE

语句有两种形式:基本

CASE

语句和搜索结构

CASE

语句。

基本CASE语句示例:

BEGIN
    DECLARE 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_grade
        WHEN 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语句示例:

BEGIN
    DECLARE v_avgscore FLOAT;
    SELECT ROUND(AVG(score), 2) INTO v_avgscore FROM SC WHERE sno = 'S1';
    CASE
        WHEN 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时退出循环。

示例:

BEGIN
    DECLARE v_count INT DEFAULT 0;
    DECLARE v_sum INT DEFAULT 0;

    WHILE v_count < 100 DO
        SET v_count = v_count + 1;
        SET v_sum = v_sum + v_count;
    END WHILE;

    SELECT v_sum AS '1到100的和';
END;
REPEAT循环
REPEAT

循环先执行一次代码块,然后判断条件。如果条件为假,则继续循环;如果为真,则退出循环。

示例:

BEGIN
    DECLARE v_count INT DEFAULT 0;
    DECLARE v_sum INT DEFAULT 0;

    REPEAT
        SET v_count = v_count + 1;
        SET v_sum = v_sum + v_count;
    UNTIL v_count >= 100
    END REPEAT;

    SELECT v_sum AS '1到100的和';
END;
LOOP循环
LOOP

循环无条件地反复执行代码块,直到遇到

LEAVE

语句退出循环。

示例:

BEGIN
    DECLARE v_count INT DEFAULT 0;
    DECLARE v_sum INT DEFAULT 0;

    label1: LOOP
        SET v_count = v_count + 1;
        SET v_sum = v_sum + v_count;
  
        IF v_count = 100 THEN
            LEAVE 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:指定在异常发生时如何处理,如 CONTINUEEXIT
  • condition_value:指定要处理的异常类型,如 NOT FOUNDSQLWARNING 等。
  • statement:指定当异常发生时要执行的处理语句。

示例:

DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
    SELECT '未找到记录';
END;

总结

通过这篇文章,你应该已经掌握了SQL编程的基础知识,包括常量、变量、流程控制语句以及异常处理。SQL编程是每个开发者的必备技能,理解这些基础概念将帮助你在未来的项目中更加得心应手。

如果你还有其他疑问或想了解更多有关SQL编程的知识,欢迎在评论区留言讨论!

标签: sql 数据库

本文转载自: https://blog.csdn.net/2301_80064376/article/details/141861536
版权归原作者 CongSec 所有, 如有侵权,请联系我们删除。

“SQL 编程基础”的评论:

还没有评论