MySQL - 字面量



在 MySQL 中,字面量是固定的值(常量),可以用于 SQL 语句,例如 SELECT、INSERT、UPDATE 和 DELETE。我们可以在 SQL 语句中使用字面量,而无需将其表示为变量或表达式。

以下是一些常见的 MySQL 字面量

  • 数值字面量

  • 字符串字面量

  • 布尔字面量

  • 日期和时间字面量

  • NULL 字面量

数值字面量

MySQL 数值字面量是数值,可以表示正数或负数,包括整数和浮点数。

如果我们没有为数值指定任何符号(即正号 (+) 或负号 (-)),则假定为正值。

让我们通过在 SQL 查询中使用各种数值字面量来看一些示例。

示例

以下示例显示一个没有符号的整数字面量(默认情况下将被认为是正号)

Open Compiler
SELECT 100 AS 'numeric literal';

输出

输出如下所示:

数值字面量
100

示例

以下示例显示带有正号 (+) 的整数字面量:

Open Compiler
SELECT -100 AS 'numeric literal';

输出

输出如下所示:

数值字面量
-100

示例

以下示例显示带有负号 (-) 的整数字面量:

Open Compiler
SELECT +493 AS 'numeric literal';

输出

输出如下所示:

数值字面量
493

示例

以下示例显示一个浮点字面量:

Open Compiler
SELECT 109e-06 AS 'numeric literal';

输出

输出如下所示:

数值字面量
0.000109

示例

以下示例显示一个十进制字面量:

Open Compiler
SELECT 793.200 AS 'numeric literal';

输出

输出如下所示:

数值字面量
793.200

字符串字面量

MySQL 字符串字面量是用单引号 (') 或双引号 (") 括起来的字符字符串。

让我们看一些在 SQL 查询中以不同方式使用字符串字面量的示例。

示例

在这个示例中,我们显示一个用单引号括起来的字符串字面量:

Open Compiler
SELECT 'tutorialspoint' AS 'string literal';

我们可以使用双引号来括起字符串字面量,如下所示:

Open Compiler
SELECT "tutorialspoint" AS 'string literal';

输出

在这两种情况下,都会获得以下输出:

字符串字面量
tutorialspoint

示例

在这个示例中,我们显示一个用单引号括起来的包含空格的字符串字面量:

Open Compiler
SELECT 'tutorials point india' AS 'string literal';

我们也可以用双引号括起这个字符串字面量(包括空格):

Open Compiler
SELECT "tutorials point india" AS 'string literal';

输出

两个查询都会得到以下输出:

字符串字面量
tutorials point india

Learn MySQL in-depth with real-world projects through our MySQL certification course. Enroll and become a certified expert to boost your career.

布尔字面量

MySQL 布尔字面量是逻辑值,其计算结果为 1 或 0。让我们看一些示例以便更好地理解。

示例

在 MySQL 中,布尔值有多种方法可以计算为true。在这里,我们使用整数 1 作为布尔字面量:

Open Compiler
SELECT 1 AS 'boolean literal';

我们也可以使用关键字 TRUE 将布尔字面量计算为 1。

Open Compiler
SELECT TRUE AS 'boolean literal';

我们也可以使用关键字 TRUE 的小写形式 true 将布尔字面量计算为 1。

Open Compiler
SELECT true AS 'boolean literal';

输出

获得以下输出:

布尔字面量
1

示例

同样,在 MySQL 中,布尔值有多种方法可以计算为false。在这里,我们使用整数 0 作为布尔字面量:

Open Compiler
SELECT 0 AS 'boolean literal';

我们也可以使用关键字 FALSE 将布尔字面量计算为 0。

Open Compiler
SELECT FALSE AS 'boolean literal';

我们也可以使用关键字 FALSE 的小写形式 false 将布尔字面量计算为 0。

Open Compiler
SELECT false AS 'boolean literal';

输出

获得以下输出:

布尔字面量
0

日期和时间字面量

MySQL 日期和时间字面量表示日期和时间值。让我们看一些示例来了解日期和时间值在 MySQL 中是如何以各种方式表示的。

示例

在这个示例中,我们将显示格式为 'YYYY-MM-DD' 的日期字面量

Open Compiler
SELECT '2023-04-20' AS 'Date literal';

输出

获得以下输出:

日期字面量
2023-04-20

示例

在这个示例中,我们将显示格式为 'YYYYMMDD' 的日期字面量

Open Compiler
SELECT '20230420' AS 'Date literal';

输出

获得以下输出:

日期字面量
20230420

示例

在这个示例中,我们将显示格式为 YYYYMMDD 的日期字面量

Open Compiler
SELECT 20230420 AS 'Date literal';

输出

获得以下输出:

日期字面量
20230420

示例

在这个示例中,我们将显示格式为 'YY-MM-DD' 的日期字面量

Open Compiler
SELECT '23-04-20' AS 'Date literal';

输出

获得以下输出:

日期字面量
23-04-20

示例

在这个示例中,我们将显示格式为 'YYMMDD' 的日期字面量

Open Compiler
SELECT '230420' AS 'Date literal';

输出

获得以下输出:

日期字面量
230420

示例

在这个示例中,我们将显示格式为 YYMMDD 的日期字面量

Open Compiler
SELECT 230420 AS 'Date literal';

输出

获得以下输出:

日期字面量
230420

示例

在这个示例中,我们显示格式为 'HH:MM:SS' 的时间字面量。

Open Compiler
SELECT '10:45:50' AS 'Time literal';

输出

获得以下输出:

时间字面量
10:45:50

示例

在这个示例中,我们显示格式为 HHMMSS 的时间字面量。

Open Compiler
SELECT 104550 AS 'Time literal';

输出

获得以下输出:

时间字面量
104550

示例

在这个示例中,我们显示格式为 'HH:MM' 的时间字面量。

Open Compiler
SELECT '10:45' AS 'Time literal';

输出

获得以下输出:

时间字面量
10:45

示例

在这个示例中,我们显示格式为 'MMSS' 的时间字面量。

Open Compiler
SELECT '4510' AS 'Time literal';

输出

获得以下输出:

时间字面量
4510

示例

在这个示例中,我们显示格式为 'SS' 的时间字面量。

Open Compiler
SELECT '10' AS 'Time literal';

在这里,让我们显示格式为 SS 的时间字面量。

Open Compiler
SELECT 10 AS 'Time literal';

输出

获得以下输出:

时间字面量
10

示例

在这个例子中,我们显示一个时间字面量,格式为 'D HH:MM:SS',其中 D 可以是 0 到 34 之间的日值。

Open Compiler
SELECT '4 09:30:12' AS 'Time literal';

输出

获得以下输出:

时间字面量
4 09:30:12

示例

在这个例子中,我们显示一个时间字面量,格式为 'D HH:MM',其中 D 可以是 0 到 34 之间的日值。

Open Compiler
SELECT '4 09:30' AS 'Time literal';

输出

获得以下输出:

时间字面量
4 09:30

示例

在这个例子中,我们显示一个时间字面量,格式为 'D HH',其中 D 可以是 0 到 34 之间的日值。

Open Compiler
SELECT '4 09' AS 'Time literal';

输出

获得以下输出:

时间字面量
4 09

示例

在这个例子中,我们显示一个日期时间字面量,格式为 'YYYY-MM-DD HH:MM:SS'。

Open Compiler
SELECT '2023-04-20 09:45:10' AS 'datetime literal';

输出

获得以下输出:

日期时间字面量
2023-04-20 09:45:10

示例

在这个例子中,我们显示一个日期时间字面量,格式为 'YYYYMMDDHHMMSS'。

Open Compiler
SELECT '20230420094510' AS 'datetime literal';

现在,我们显示一个日期时间字面量,格式为 YYYYMMDDHHMMSS。

Open Compiler
SELECT 20230420094510 AS 'datetime literal';

输出

两个查询产生相同的输出,如下所示:

日期时间字面量
20230420094510

示例

在这个例子中,我们显示一个日期时间字面量,格式为 'YY-MM-DD HH:MM:SS'。

Open Compiler
SELECT '23-04-20 09:45:10' AS 'datetime literal';

输出

获得以下输出:

日期时间字面量
23-04-20 09:45:10

示例

在这个例子中,我们显示一个日期时间字面量,格式为 'YYMMDDHHMMSS'。

Open Compiler
SELECT '230420094510' AS 'datetime literal';

这里,我们显示一个日期时间字面量,格式为 YYMMDDHHMMSS。

Open Compiler
SELECT 230420094510 AS 'datetime literal';

输出

两个查询给出相同的输出,如下所示:

日期时间字面量
230420094510

空值字面量 (NULL)

MySQL 的 NULL 字面量表示值的缺失。它不区分大小写。

示例

以下是一些有效的NULL 字面量示例:

Open Compiler
SELECT NULL AS 'NULL literals';

小写:

Open Compiler
SELECT null AS 'NULL literals';

输出

获得以下输出:

NULL 字面量
NULL

客户端程序

我们也可以使用客户端程序在 MySQL 数据库中使用字面量。

语法

要通过 PHP 程序执行字面量,我们需要使用mysqli 函数query()执行所需的查询,如下所示:

$sql = "SELECT 100 AS 'Numerical_literal'"; $mysqli->query($sql);

要通过 JavaScript 程序执行字面量,我们需要使用mysql2 库的query()函数执行所需的查询,如下所示:

sql = "SELECT 100 AS 'numeric literal'"; con.query(sql)

要通过 Java 程序执行字面量,我们需要使用JDBC 函数executeQuery()执行所需的查询,如下所示:

String sql "SELECT 100 AS 'Numerical_literal'"; statement.executeQuery(sql);

要通过 Python 程序执行字面量,我们需要使用MySQL Connector/Pythonexecute()函数执行所需的查询,如下所示:

literal_query = "SELECT 100 AS 'numeric literal'" cursorObj.execute(literal_query)

示例

以下是程序:

$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'password'; $db = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db); if ($mysqli->connect_errno) { printf("Connect failed: %s", $mysqli->connect_error); exit(); } //printf('Connected successfully.'); $sql = "SELECT 100 AS 'Numerical_literal'"; If($result = $mysqli->query($sql)){ printf("Select query executed successfully...!\n"); while($row = mysqli_fetch_array($result)){ printf("Numerical literal: %d", $row["Numerical_literal"]); } printf("\n"); } $sql = "SELECT 'Tutorialspoint' AS 'String_literal'"; If($result = $mysqli->query($sql)){ printf("Select query executed successfully...!\n"); while($row = mysqli_fetch_array($result)){ printf("String Literal: %s", $row["String_literal"]); } } printf("\n"); $sql = "SELECT 1 AS 'Boolean_literal'"; If($result = $mysqli->query($sql)){ printf("Select query executed successfully...!\n"); while($row = mysqli_fetch_array($result)){ printf("Boolean literal: %s", $row["Boolean_literal"]); } } if($mysqli->error){ printf("Error message: ", $mysqli->error); } $mysqli->close();

输出

获得的输出如下所示:

Select query executed successfully...!
Numerical literal: 100
Select query executed successfully...!
String Literal: Tutorialspoint
Select query executed successfully...!
Boolean literal: 1   

var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); // Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); // Create a new database sql = "Create Database TUTORIALS"; con.query(sql); sql = "USE TUTORIALS"; con.query(sql); //integer literal with no sign (by default positive sign will be considered) sql = "SELECT 100 AS 'numeric literal'"; con.query(sql, function(err, result){ if (err) throw err console.log(result); }); //string with single quotes sql = "SELECT 'tutorialspoint' AS 'string literal';" con.query(sql, function(err, result){ if (err) throw err console.log(result); }); //Boolean Literals sql = "SELECT 1 AS 'boolean literal';" con.query(sql, function(err, result){ if (err) throw err console.log(result); }); //date literal formatted as 'YYYY-MM-DD' sql = "SELECT '2023-04-20' AS 'Date literal';" con.query(sql, function(err, result){ if (err) throw err console.log(result); }); });

输出

获得的输出如下所示:

 
 Connected!
 --------------------------
 [ { 'numeric literal': 100 } ]
 [ { 'string literal': 'tutorialspoint' } ]
 [ { 'boolean literal': 1 } ]
 [ { 'Date literal': '2023-04-20' } ] 
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Literals { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/TUTORIALS"; String user = "root"; String password = "password"; ResultSet rs; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); //System.out.println("Database connected successfully...!"); //numerical literal String sql = "SELECT 100 AS 'Numerical_literal'"; rs = st.executeQuery(sql); System.out.println("Numerical literal: "); while(rs.next()) { String nl = rs.getString("Numerical_literal"); System.out.println(nl); } //String literal String sql1 = "SELECT 'Tutorialspoint' AS 'String_literal'"; rs = st.executeQuery(sql1); System.out.println("String literal: "); while(rs.next()) { String nl = rs.getString("String_literal"); System.out.println(nl); } //Boolean literal String sql2 = "SELECT 1 AS 'Boolean_literal'"; rs = st.executeQuery(sql2); System.out.println("Boolean literal: "); while(rs.next()) { String nl = rs.getString("Boolean_literal"); System.out.println(nl); } }catch(Exception e) { e.printStackTrace(); } } }

输出

获得的输出如下所示:

Numerical literal: 
100
String literal: 
Tutorialspoint
Boolean literal: 
1
import mysql.connector # Establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) # Creating a cursor object cursorObj = connection.cursor() # Integer literal with no sign (by default positive sign will be considered) literal_query = "SELECT 100 AS 'numeric literal'" cursorObj.execute(literal_query) result_numeric = cursorObj.fetchone() print("Numeric Literal:") print(result_numeric[0]) # String literal with single quotes string_literal = "SELECT 'tutorialspoint' AS 'string literal';" cursorObj.execute(string_literal) result_string = cursorObj.fetchone() print("\nString Literal:") print(result_string[0]) # Boolean literal, evaluates to 1 (true) boolean_literal = "SELECT 1 AS 'boolean literal';" cursorObj.execute(boolean_literal) result_boolean = cursorObj.fetchone() print("\nBoolean Literal:") print(result_boolean[0]) # Date literal formatted as 'YYYY-MM-DD' date_time_literal = "SELECT '2023-04-20' AS 'Date literal';" cursorObj.execute(date_time_literal) result_date = cursorObj.fetchone() print("\nDate Literal:") print(result_date[0]) # Closing the cursor and connection cursorObj.close() connection.close()

输出

获得的输出如下所示:

Numeric Literal:
100 
 
String Literal:
tutorialspoint

Boolean Literal:
1

Date Literal:
2023-04-20
广告