MySQL 字面量
字面量是表示/表达不变值的符号或想法。在MySQL中,字面量类似于常量。我们可以在声明变量或执行查询时使用字面量。
在本节中,我们将描述不同类型的字面量以及它们如何在MySQL语句中使用。
以下是字面量的类型:
- 字符串字面量
- 数字字面量
- 日期和时间字面量
- 十六进制字面量
- 位值字面量
- 布尔字面量
- NULL值
字符串字面量
MySQL中的字符串是用单引号(’)或双引号(”)括起来的字符或字节序列。例如,’first string’和”second string”是相同的。字节串称为二进制字符串。每个二进制字符串都包含一个字符集和排序规则。
让我们通过一个示例来理解它。首先,我们将创建一个名为“student_info”的表,其中包含以下数据:
示例
如果我们想要获取姓名为Joseph的学生的学号和电话号码,请执行以下语句:
mysql> SELECT stud_code, phone FROM student_info WHERE stud_name = 'Joseph';
OR,
mysql> SELECT stud_code, phone FROM student_info WHERE stud_name = "Joseph";
输出
它将给出以下输出,我们可以看到两个查询结果完全相同,无论是使用单引号还是双引号。
字符串文字也可以与特殊字符转义序列一起使用。下表总结了这些特殊字符:
转义序列 | 序列表示的字符 |
---|---|
\0 | 表示ASCII空字符。 |
\b | 表示退格字符。 |
\n | 表示换行字符。 |
\r | 表示回车字符。 |
\t | 表示制表符字符。 |
\\ | 表示反斜杠(\)字符。 |
\% | 表示百分号(%)字符。 |
\_ | 表示反斜杠字符。 |
数字字面量
HTML格式中来自计算机领域的英文文本中的数字字面量用于指定两种类型的字面量值:精确值(整数和小数)和近似值(浮点数)字面量。它可以是正值或负值。精确值可以是整数、分数或两者都有。近似值主要用于包含尾数和指数的科学记数法。
数字字面量 | 描述 |
---|---|
整数 | 它由一串没有任何小数部分的数字表示。如果数字前面带有“-”号,表示是负整数。如果数字前面带有“+”号,表示是正整数。如果数字没有任何符号,它被视为正整数。 例如 ,55、+55、-55都是整数。 |
十进制 | 它由一串带有小数部分的数字表示。换句话说,它包含一个整数加上小数部分,小数部分由点(.)操作符或小数点分隔。它可以是整数和非整数。它以精确的数值形式进行计算。 例如 ,325.90、355.6都是十进制数。 |
浮点数 | 它是一个包含浮动小数点的数字。这意味着小数点前后没有固定的位数。它包含两种数据类型,名为float和double,可以生成一个近似值。 例如 ,2.36E0、0.005和-2,328.679都是浮点数。 |
示例
如果我们想要获取学生的姓名、科目和成绩,并且成绩大于80,执行以下语句:
mysql> SELECT stud_name, subject, marks FROM student_info WHERE marks > +80;
输出
它将给出以下输出,我们可以看到所有成绩大于80的学生名字。
日期和时间文字
日期和时间 在MySQL中可以用引号字符串或数字格式表示,具体取决于确切的值和一些因素。例如,MySQL将任何这些’2020-09-22’、’20200922’和20200922解释为有效日期。
下表解释了MySQL中日期值的格式:
Date Format | Descriptions |
---|---|
‘YYYY-MM-DD’ or ‘YY-MM-DD’ | 它代表了一个带有标点符号的字符串格式日期,可以用作日期部分之间的分隔符。 例如 ,’2020-03-31’,’2020/03/31’和’2020^03^31’都是相同的日期值。 |
‘YYYYMMDD’ or ‘YYMMDD’ | 它代表了一个不带任何标点符号或日期部分之间分隔符的字符串格式日期。 例如 ,’20200422’和’200522’被解释为’2007-05-23’,但’071342’是非法的并成为’0000-00-00’日期值。 |
YYYYMMDD or 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 值的格式:
日期时间格式 | 描述 |
---|---|
‘YYYY-MM-DD hh:mm:ss’ 或者 ‘YY-MM-DD hh:mm:ss’ | 它表示一个带有标点符号的字符串格式的日期和时间,可以用作日期和时间部分之间的分隔符。 例如 ,’2020-05-31 12:30:45’,’2020/05/31 123045’,和’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,并以不同的日期格式进行操作,请执行以下语句:
mysql> SELECT Order_ID, Product_Name, DATE_FORMAT(Order_Date,'%d--%m--%y') as new_date_formate FROM orders;
输出
它将给出以下输出,我们可以看到日期的格式将发生变化。
示例2
mysql> SELECT Order_ID, Product_Name, DATE_FORMAT(Order_Date,'%d%m%y 11:30:45') as new_date_formate FROM orders;
输出
十六进制字面量
在数字系统中,十六进制可以表示为以16为基数的整数。十六进制字面值可以用以下术语来表示:
- x’val’
- X’val’
- 0xval
在这里, val 包含在范围(0..9和A..F)内的十六进制数字。在0xval中,前导的0x是大小写敏感的,因此我们无法将其写为0X’val’。但是,对于数字的大小写,前导的X或0x对于特定的情况是无关紧要的。
以下示例说明了合法和非法的十六进制字面量:
合法 | 非法 |
---|---|
x’01BF’ x’01bf’ X’01BF’ X’01bf’ 0x01BF 0x01bf | X’0H’ (因为 H 不是十六进制数字) 0X0BAF (因为 0X 应该写成 0x) |
它确保X’val’或x’val’的表示法应该包含偶数个数字。否则,我们将会得到一个语法错误。可以通过在字符串开头填充零位数来避免这种类型的错误。
例子
以下示例更清楚地解释了它:
mysql> SELECT 0xD6+0;
mysql> SELECT HEX('javatpoint');
输出
布尔字面值
在MySQL中,布尔字面值始终评估为1或0的值。这里,1代表 真 ,0代表 假 常量。
让我们通过以下例子来理解:
mysql> SELECT TRUE, true, FALSE, false;
输出
位值字面量
在MySQL中,位值字面量可以用b’val’或0bval的表示方法来编写。这里,val是一个包含零和一的二进制值,前缀b的大小写不敏感。但是,前缀0b的大小写是敏感的,所以我们不能将其写成0B。
以下示例说明合法和非法的位值字面量:
合法的 | 非法的 |
---|---|
b’0011′ B’0011′ 0b0011 | b’3′ (3不是二进制数字) 0B11 (0B应该写成0b) |
示例
下面的示例有助于清楚地理解它:
mysql> SET @v1 = b'1100011', @v2 = b'1100001'+0, @v3 = CAST(b'1100001' AS UNSIGNED);
输出
空值
它代表 无数据 。它不区分大小写,意味着我们可以在任何语言中编写空字面量。