MySQL - 字面量



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

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

  • 数值字面量

  • 字符串字面量

  • 布尔字面量

  • 日期和时间字面量

  • NULL 字面量

数值字面量

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

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

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

示例

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

SELECT 100 AS 'numeric literal';

输出

输出如下所示:

数值字面量
100

示例

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

SELECT -100 AS 'numeric literal';

输出

输出如下所示:

数值字面量
-100

示例

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

SELECT +493 AS 'numeric literal';

输出

输出如下所示:

数值字面量
493

示例

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

SELECT 109e-06 AS 'numeric literal';

输出

输出如下所示:

数值字面量
0.000109

示例

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

SELECT 793.200 AS 'numeric literal';

输出

输出如下所示:

数值字面量
793.200

字符串字面量

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

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

示例

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

SELECT 'tutorialspoint' AS 'string literal';

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

SELECT "tutorialspoint" AS 'string literal';

输出

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

字符串字面量
tutorialspoint

示例

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

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

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

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

输出

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

字符串字面量
tutorials point india

布尔字面量

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

示例

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

SELECT 1 AS 'boolean literal';

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

SELECT TRUE AS 'boolean literal';

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

SELECT true AS 'boolean literal';

输出

获得以下输出:

布尔字面量
1

示例

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

SELECT 0 AS 'boolean literal'; 

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

SELECT FALSE AS 'boolean literal';

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

SELECT false AS 'boolean literal';

输出

获得以下输出:

布尔字面量
0

日期和时间字面量

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

示例

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

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

输出

获得以下输出:

日期字面量
2023-04-20

示例

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

SELECT '20230420' AS 'Date literal';

输出

获得以下输出:

日期字面量
20230420

示例

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

SELECT 20230420 AS 'Date literal';

输出

获得以下输出:

日期字面量
20230420

示例

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

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

输出

获得以下输出:

日期字面量
23-04-20

示例

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

SELECT '230420' AS 'Date literal';

输出

获得以下输出:

日期字面量
230420

示例

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

SELECT 230420 AS 'Date literal';

输出

获得以下输出:

日期字面量
230420

示例

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

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

输出

获得以下输出:

时间字面量
10:45:50

示例

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

SELECT 104550 AS 'Time literal';

输出

获得以下输出:

时间字面量
104550

示例

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

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

输出

获得以下输出:

时间字面量
10:45

示例

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

SELECT '4510' AS 'Time literal';

输出

获得以下输出:

时间字面量
4510

示例

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

SELECT '10' AS 'Time literal';

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

SELECT 10 AS 'Time literal';

输出

获得以下输出:

时间字面量
10

示例

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

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

输出

获得以下输出:

时间字面量
4 09:30:12

示例

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

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

输出

获得以下输出:

时间字面量
4 09:30

示例

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

SELECT '4 09' AS 'Time literal'; 

输出

获得以下输出:

时间字面量
4 09

示例

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

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

输出

获得以下输出:

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

示例

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

SELECT '20230420094510' AS 'datetime literal';

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

SELECT 20230420094510 AS 'datetime literal';

输出

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

日期时间字面量
20230420094510

示例

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

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

输出

获得以下输出:

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

示例

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

SELECT '230420094510' AS 'datetime literal';

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

SELECT 230420094510 AS 'datetime literal';

输出

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

日期时间字面量
230420094510

空值字面量 (NULL)

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

示例

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

SELECT NULL AS 'NULL literals'; 

小写:

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://127.0.0.1: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
广告