语句(常量)17 Mar 2025 | 6 分钟阅读 语句(常量)是表示/表达一个不变值的**符号**或概念。在 MySQL 中,语句(常量)类似于常量。我们可以在声明变量或执行查询时使用语句(常量)。 在本节中,我们将描述不同类型的语句(常量)以及如何在 MySQL 语句中使用它们。 以下是语句(常量)的类型 - 字符串字面量
- 数字字面量
- 日期和时间语句(常量)
- 十六进制字面量
- 位值语句(常量)
- 布尔字面量
- NULL 值
字符串字面量MySQL 中的字符串是包含在**单引号** (') 或**双引号** (") 中的字符或字节序列。例如,'first string' 和 "second string" 是相同的。字节序列称为二进制字符串。每个二进制字符串都有一个字符集和一个排序规则。 让我们通过一个例子来理解这一点。首先,我们将创建一个名为“**student_info**”的表,其中包含以下数据  示例 如果我们想获取名字为 Joseph 的学生的学号和电话号码,请执行以下语句 输出 它将给出以下输出,我们可以看到两个查询给出相同的结果,无论使用单引号还是双引号。  字符串语句(常量)也可以与特殊字符转义序列一起使用。这些特殊字符汇总在下面的表格中 转义序列 | 序列表示的字符 |
---|
\0 | 表示 ASCII NULL 字符。 | \b | 表示退格字符。 | \n | 表示换行符。 | \r | 表示回车符。 | \t | 表示制表符。 | \\ | 表示反斜杠(\)字符。 | \% | 表示 % 字符。 | \_ | 表示反斜杠字符。 |
数字字面量MySQL 中的数字语句(常量)用于指定两种类型的字面值:**精确值**(整数和小数)和**近似值**(浮点数)语句(常量)。它可以是正值或负值。精确值可以有整数、分数或两者都有。近似值主要用于包含尾数和指数的科学计数法。 数字语句(常量) | 描述 |
---|
Integer | 它表示为没有小数部分的数字序列。如果数字前面带有 - 号,则为负整数。如果数字前面带有 + 号,则为正整数。如果数字没有任何符号,则假定为正整数。**例如**,55、+55、-55 都是整数。 | 十进制 | 它表示为带有小数部分的数字序列。换句话说,它包含一个整数部分加上一个分数部分,它们由点 (.) 运算符或小数点分隔。它可以是整数和非整数。它以精确的数字形式产生计算。**例如**,325.90、355.6 是小数。 | 浮点数 | 它是一个包含浮点数的数字。这意味着小数点前后的数字没有固定位数。它包含两种数据类型:float 和 double,它们产生近似值。**例如**,2.36E0、0.005 和 -2,328.679 都是浮点数。 |
示例 如果我们想获取名字、科目和分数大于 +80 的学生,请执行以下语句 输出 它将给出以下输出,我们可以看到所有分数大于 +80 的学生姓名。  日期和时间语句(常量)MySQL 中的**日期和时间**值可以表示为**带引号的字符串或数字格式**,这取决于确切的值和一些因素。例如,MySQL 将 '2020-09-22'、'20200922' 和 20200922 都解释为有效日期。 下表解释了 MySQL 中**日期值**的格式 日期格式 | 描述 |
---|
'YYYY-MM-DD' 或 'YY-MM-DD' | 它以字符串格式表示日期,其中标点符号可用作日期部分之间的分隔符。**例如**,'2020-03-31'、'2020/03/31' 和 '2020^03^31' 都是相同的日期值。 | 'YYYYMMDD' 或 'YYMMDD' | 它以字符串格式表示日期,日期部分之间没有任何标点符号或分隔符。**例如**,'20200422' 和 '200522' 被解释为 '2007-05-23',但 '071342' 是非法的,并且变成 '0000-00-00' 日期值。 | YYYYMMDD 或 YYMMDD | 它以数字格式表示日期。**例如**,20200305 和 200305 被解释为 '2020-03-05' 日期值。 |
下表解释了 MySQL 中**时间值**的格式 时间格式 | 描述 |
---|
'D hh:mm:ss'、'hh:mm:ss'、'hh:mm'、'D hh:mm'、'D hh' 或 'ss' | 它以字符串格式表示时间,其中标点符号可用作时间部分之间的分隔符。这里,D 表示天,其值从 0 到 34。**例如**,'22 10:11:12'、'10:11:12' 是时间值。 | 'hhmmss' | 它以字符串格式表示时间,时间部分之间没有任何标点符号或分隔符。**例如**,'101211' 被解释为 '10:12:11',但 '109813' 是非法的,并且变成 '00:00:00' 时间值。 | hhmmss、ss 或 mmss, | 它以数字格式表示时间。**例如**,101211 被解释为 '10:12:11' 时间值。 |
下表解释了 MySQL 中**datetime 和 timestamp** 值的格式 DateTime 格式 | 描述 |
---|
'YYYY-MM-DD hh:mm:ss' 或 'YY-MM-DD hh:mm:ss' | 它以字符串格式表示日期和时间,其中标点符号可用作日期和时间部分之间的分隔符。**例如**,'2020-05-31 12:30:45'、'2020/05/31 12*30*45' 和 '2020@05@31 12^30^45' 都是相同的值。 | 'YYYYMMDDhhmmss' 或 'YYMMDDhhmmss' | 它以字符串格式表示日期,日期和时间部分之间没有任何标点符号或分隔符。**例如**,'20070523091528' 和 '070523091528' 被解释为 '2007-05-23 09:15:28',但 '071122129015' 是非法的,并且变成 '0000-00-00 00:00:00' 日期和时间值。 | YYYYMMDDhhmmss 或 YYMMDDhhmmss | 它以数字格式表示日期和时间。**例如**,20200105142500 和 200105142500 被解释为 '2020-01-05 14:25:00' 日期和时间值。 |
示例 1 假设我们有一个名为 **"orders"** 的表,其中包含以下数据  如果我们想以不同的日期格式获取 Order_ID、Product_Name,请执行以下语句 输出 它将给出以下输出,我们可以看到日期的格式已更改。  示例 2 输出  十六进制字面量在数字系统中,十六进制可以表示为基数为 16 的整数。十六进制语句(常量)值可以按以下方式编写 这里,**val** 包含范围为 (0..9 和 A..F) 的十六进制数字。在 0xval 中,前导 0x 是区分大小写的,因此我们不能将其写为 0X'val'。但是,在数字的大小写方面,前导 X 或 0x 对于特定的大小写敏感性无关紧要。 以下示例解释了合法的和非法的十六进制语句(常量) Legal | Illegal (非法的) |
---|
x'01BF' x'01bf' X'01BF' X'01bf' 0x01BF 0x01bf | X'0H'(因为 H 不是十六进制数字) 0X0BAF(因为 0X 应写为 0x) |
这确保了 X'val' 或 x'val' 的表示法应包含偶数个数字。否则,我们将收到语法错误。可以通过在字符串开头填充零数字来避免此类错误。 示例 以下示例更清楚地解释了这一点 输出  布尔字面量MySQL 中的布尔语句(常量)始终评估为 1 或 0 值。这里,1 表示**真**,0 表示**假**常量。 让我们通过以下示例来理解这一点 输出  位值语句(常量)MySQL 中的位值语句(常量)可以写成 b'val' 或 0bval 格式。这里,val 是一个包含零和一的二进制值,并且任何前导值 b 的大小写无关紧要。前导 0b 值区分大小写,因此我们不能将其写为 0B。 以下示例解释了合法的和非法的位值语句(常量) Legal | Illegal (非法的) |
---|
b'0011' B'0011' 0b0011 | b'3'(3 不是二进制数字) 0B11(0B 应写为 0b) |
示例 以下示例有助于更清楚地理解这一点 输出  空值表示**无数据**。它不区分大小写,意味着我们可以用任何语言书写 null 语句(常量)。
|