MySQL 字面量
一、MySQL 字面量 介绍
字面量是表示/表达不变值的符号。在 MySQL 中,字面量类似于常量。我们可以在声明变量或执行SQL时使用字面量。
在本节中,我们将描述不同类型的字面量以及如何在 MySQL 语句中使用它们。
以下是字面量的类型:
- 字符串字面量
- 数字字面量
- 日期和时间字面量
- 十六进制字面量
- 位值字面量
- 布尔字面量
- 空值
二、字符串字面量
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 NULL 字符。 |
\b | 它代表一个退格字符。 |
\n | 它代表一个换行符。 |
\r | 它代表回车符。 |
\t | 它代表制表符。 |
\\ | 它表示反斜杠 (\) 字符。 |
\% | 它代表一个 % 字符。 |
\_ | 它代表一个反斜杠字符。 |
三、数字字面量
MySQL中的数字字面量用于指定两种类型的字面量:精确值(整数和小数)和近似值(浮点)字面量。它可以是正值或负值。精确值可以是整数、小数或两者兼有。近似值主要用于包含尾数和指数的科学计数法。
数字字面量 | 说明 |
---|---|
Integer | 它表示为没有任何小数部分的数字序列。如果数字前面有-号,则为负整数。如果数字前面有 + 号,则为正整数。如果数字没有任何符号,则假定为正整数。例如,55、+55、-55 都是整数。 |
Decimal | 它表示为带有小数部分的数字序列。换句话说,它包含一个整数加上小数部分,由点(。)运算符或小数点分隔。它可以是整数和非整数。它以精确的数字形式产生计算。例如,325.90、355.6 是十进制数。 |
Floating-Point | 它是一个包含浮点小数点的数字。这意味着小数点前后没有固定数字。它包含两种名为 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 值的格式:
日期格式 | 说明 |
---|---|
'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值的格式:
日期时间格式 | 说明 |
---|---|
'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,执行以下语句:
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 是一个包含 0 和 1 的二进制值,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);
输出结果为:
八、NULL值
它代表没有数据。它不区分大小写,这意味着我们可以用任何语言编写NULL值。
热门文章
优秀文章